2 điểm bởi GN⁺ 4 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Dán schema SQL vào là có thể trực quan hóa ngay bảng, cột, khóa và quan hệ thành ERD ngay trong trình duyệt
  • Phân tích DDL CREATE TABLEALTER TABLE của PostgreSQL, MySQL, SQLite, SQL Server, đồng thời xử lý khóa chính·khóa ngoại cùng các ràng buộc unique, not-null
  • Hỗ trợ chỉnh sửa tương tác như kéo thả bảng, bố trí tự động, thêm ghi chú, phóng to/thu nhỏ, đổi tên bằng nhấp đúp
  • Có thể xuất kết quả thành PNG độ phân giải cao, SVG vector, tệp dự án và liên kết chia sẻ mã hóa sơ đồ trong URL
  • Không cần tài khoản, đăng ký hay cài đặt, và schema SQL không bị tải lên hoặc lưu trên máy chủ, tập trung vào chạy cục bộ

Dán SQL, xem schema

  • Nhập câu lệnh CREATE TABLE vào trình soạn thảo bên trái, schema SQL sẽ được hiển thị dưới dạng sơ đồ ER
  • Schema mẫu là một cấu trúc thương mại điện tử nhỏ, gồm 6 bảng7 quan hệ: users, addresses, products, orders, order_items, reviews
  • Có thể kéo thả bảng, dùng cuộn chuột để phóng to/thu nhỏ, đổi tên bằng nhấp đúp rồi xuất kết quả sau khi hoàn tất
  • Có chức năng tải schema mẫu, và trên màn hình hiển thị tỷ lệ phóng to 122%
  • Mọi xử lý đều chạy 100% cục bộ trong trình duyệt, schema không rời khỏi trình duyệt

SQL to ER Diagram — trình tạo ERD trực tuyến miễn phí

  • SQL to ER Diagram là công cụ mã nguồn mở miễn phí, chuyển schema SQL thành ERD tương tác ngay trong trình duyệt
  • Chỉ cần dán câu lệnh CREATE TABLE, công cụ sẽ trực quan hóa ngay bảng, cột, khóa chính, khóa ngoại và quan hệ
  • Hoạt động với PostgreSQL, MySQL, SQLite, SQL Server
  • Hỗ trợ kéo thả bảng, căn chỉnh bố cục tự động, thêm ghi chú, xuất PNG hoặc SVG
  • Không có gì bị tải lên, schema vẫn nằm trên thiết bị của người dùng

Câu hỏi thường gặp

  • Để tạo sơ đồ ER từ SQL, chỉ cần dán câu lệnh SQL CREATE TABLE vào trình soạn thảo, công cụ sẽ render ngay một ERD tương tác
    • Có thể kéo thả để sắp xếp bảng rồi xuất dưới dạng PNG hoặc SVG
  • Các phương ngữ SQL được hỗ trợ là PostgreSQL, MySQL, SQLite, SQL Server, và công cụ phân tích DDL CREATE TABLEALTER TABLE tiêu chuẩn
    • Xử lý khóa chính, khóa ngoại, unique và các ràng buộc not-null
  • SQL to ER Diagram hoàn toàn miễn phí và là mã nguồn mở, không cần tài khoản hay đăng ký
  • Mọi thao tác đều chạy cục bộ trong trình duyệt, schema SQL không bị tải lên hoặc lưu trên máy chủ
  • Có thể xuất sơ đồ thành PNG độ phân giải cao, SVG vector, toàn bộ tệp dự án và liên kết chia sẻ mã hóa sơ đồ trong URL
  • Không cần cài đặt, chạy trên trình duyệt web của máy tính để bàn và thiết bị di động

1 bình luận

 
Ý kiến Hacker News
  • Công cụ https://v0-yaerd.vercel.app mà tôi đã cùng làm với v0 vài tháng trước khiến tôi nhớ tới bài này
    Tôi tạo ra nó vì chưa thấy công cụ nào có thể phân tích file migration của Laravel để tạo ERD, rồi sau đó cũng thêm hỗ trợ SQL cơ bản thông qua prompt

  • Công cụ này rất tuyệt, nhưng tôi không nghĩ chỉ riêng SQL là đủ để tạo sơ đồ ER
    Thực thểbảng về bản chất là khác nhau; dù rất giống nhau, SQL vẫn thiếu thông tin để tạo ra một sơ đồ ER đúng nghĩa
    Không phải tôi cho rằng công cụ này vô dụng hay loại sơ đồ này không hữu ích; chỉ là một ý kiến hơi mang tính nguyên lý nên có thể người khác sẽ không đồng ý

    • Chẳng phải nguyên lý nền tảng của vô số ORM là thực thể và bảng nhìn chung tương ứng với nhau sao?
      Đúng là DDL không nói lên nhiều điều về vòng đời của thực thể, nhưng nếu tiêu chí chỉ là biểu diễn quan hệ, trường và lực lượng bằng biểu đồ thì có vẻ vẫn đủ
    • Nói chính xác hơn, theo định nghĩa của Chen, sơ đồ ER suy ra từ SQL là sơ đồ vật lý ở mức thấp nhất, và từ đó không thể tái dựng sơ đồ logic/khái niệm
      Có vẻ ngày nay không nhiều người còn bận tâm đến sự khác biệt này
    • Mục đích của việc chuyển từ SQL sang ER là để nắm bắt một cơ sở dữ liệu lạ lần đầu tiếp xúc
      DB đã tồn tại sẵn nhưng có thể không có ERD và hầu như cũng không có tài liệu
      Vì vậy nó gần với một công cụ khám phá hơn, và lý tưởng nhất là nên cho phép tạo view và gắn ghi chú
      Bởi khi số lượng bảng quá nhiều hoặc nhiều bảng thiếu khóa ngoại, bạn không nhất thiết phải xem toàn bộ ERD cùng một lúc
    • Sẽ tốt hơn nếu bạn giải thích rõ hơn về sự khác biệt này
      Về mặt thực tế thì gần như có thể dùng thay thế cho nhau, nhưng về mặt khái niệm dường như phía trên thực thể và quan hệ còn có một tầng ý nghĩa phong phú hơn
      Ví dụ như mô tả cho quan hệ hoặc chú thích bổ sung gắn với thực thể
    • Sẽ rất hữu ích nếu bạn giải thích chi tiết hơn
      Tôi vẫn luôn hiểu rằng thực thể luôn có quan hệ 1:1 với bảng, nên nếu có ví dụ thì sẽ cực kỳ hữu ích
  • Khả năng dùng trên di động phải là 1000/100 điểm
    Pan, phóng to/thu nhỏ, chọn và di chuyển đều mượt đến mức tôi tưởng mình bị nhầm

    • Toàn bộ codebase thành thật mà nói rất mới mẻ: https://github.com/royalbhati/sqltoerdiagram/blob/main/src/m...
      Tôi thích những lập trình viên có thể chắt lọc vấn đề phức tạp thành lời giải đơn giản, và người này thật sự xuất sắc
      Tôi không nghĩ ra lời khen nào cao hơn dành cho một lập trình viên
    • Ý nghĩ đầu tiên của tôi là phần sơ đồ nên được tách ra thành một thư viện độc lập
      Có vẻ tính năng sơ đồ này còn dùng được ở nhiều chỗ khác ngoài ERD
    • Thật sự rất tốt
      Ngay cả khi chỉnh sửa bằng double tap thì mức zoom cũng không bị đặt lại
      Chắc chắn đây là một trong những trang thân thiện với di động nhất mà tôi từng thấy
    • Chỉ tiếc là trên Safari mobile, chạm vào ô văn bản sẽ bị phóng to, nhưng đây là vấn đề ai cũng gặp
  • Không phải thứ gì to tát, chỉ là một công cụ nhỏ, nhưng tôi nghĩ nó cũng sẽ hữu ích cho người khác
    Tôi liên tục gặp việc phải trực quan hóa schema cơ sở dữ liệu, mà hầu hết công cụ đều có rào cản trả phí, bắt buộc đăng ký, hoặc phải gửi SQL lên máy chủ của người khác
    Không có backend, không có tài khoản, dữ liệu không rời khỏi thiết bị của tôi
    Phần thú vị khi triển khai là: thay vì dùng DOM/SVG, tôi raster hóa các bảng thành bitmap được cache và dùng viewport culling để vẫn mượt ngay cả khi có hàng trăm bảng trên màn hình
    Trình phân tích SQL theo dõi phạm vi nguồn của mọi token, nên các chỉnh sửa như đổi tên bảng chỉ thay đúng những định danh và tham chiếu liên quan, còn comment và định dạng vẫn được giữ nguyên
    Toàn bộ schema nằm trong URL, và việc chia sẻ hoạt động bằng cách serialize schema ngay vào chính URL, nên không cần backend, trạng thái lưu trữ hay tài khoản
    Tôi cũng đã thử một bản Rust/WASM, nhưng chi phí qua lại ở ranh giới JS↔WASM lớn hơn phần tiết kiệm được trong tính toán, khiến parser chậm hơn khoảng 37%; tuy vậy, pass xử lý gỡ chồng lấp O(n^2) lại nhanh hơn khoảng 2,2 lần
    Cuối cùng tôi giữ nguyên JavaScript thuần, không framework, và dung lượng khoảng 32KB tính theo gzip

    • Trong tiêu đề có ghi là miễn phí, vậy tôi muốn biết nó dùng giấy phép phần mềm tự do nào
      Nếu không ghi rõ giấy phép thì có thể là mã nguồn mở, nhưng không phải phần mềm tự do
    • Nếu toàn bộ schema nằm trong URL thì liệu có gặp vấn đề vì giới hạn độ dài URL không nhỉ
      “Khuyến nghị rằng mọi bên gửi và nhận đều hỗ trợ URI có độ dài tối thiểu 8000 octet trong các phần tử giao thức.”
      https://www.rfc-editor.org/rfc/rfc9110#section-4.1-5
    • Làm rất tốt
      Giao diện responsive, gọn gàng, và trải nghiệm onboarding không có rào cản đăng ký thật sự rất xuất sắc
  • Sự phân biệt giữa “thực thể vs bảng” là có thật, nhưng với đa số lập trình viên chỉ muốn nhanh chóng trực quan hóa một schema có sẵn thì mức này là quá đủ
    Ở đây hoàn hảo là kẻ thù của hữu ích
    Phần lớn mọi người không định xây dựng một lớp trừu tượng ORM; họ chỉ muốn xem cái gì đang nối với cái gì

  • https://explain.dalibo.com/ làm tôi nhớ tới công cụ này
    Đây là một công cụ trực quan hóa query execution plan, và là một trong những công cụ hữu ích nhất tôi từng dùng để tối ưu truy vấn SQL
    Nếu định dùng với dữ liệu nhạy cảm thì tốt hơn nên tải bản v2 hoàn toàn offline ở phía dưới

  • Sẽ hay hơn nếu có thêm tùy chọn đường thẳng và đường gấp khúc 90 độ
    Tôi chưa bao giờ thật sự thích các đường cong, nhưng nhìn thì rất đẹp và được làm tốt

    • Tôi sẽ thêm vào danh sách việc cần làm
  • Không biết có cách nào tạo các SVG này bằng CLI không
    Tôi rất thích nó, và extension Postgres của VSCode có tính năng tương tự cũng rất ổn, nhưng lại bị buộc vào VSCode
    Tương tự, nó cũng không có tùy chọn CLI để export có thể đưa vào kho lưu trữ

  • Tôi đang dùng https://github.com/ondras/wwwsqldesigner, và nghĩ rằng đây là một lựa chọn đáng để đem ra so sánh

    • Có phải Ondras của V8CGI không?
      Tôi thực sự rất thích dự án đó, nó là một trong những bản triển khai JS phía máy chủ đầu tiên
      Có thể chỉ mình tôi là follower, nhưng Ondřej, các sản phẩm của bạn thật sự rất tuyệt
  • Cũng ổn, nhưng trên GitHub không có file LICENSE: https://github.com/royalbhati/sqltoerdiagram