Công Cụ Thiết Kế Bảng CSDL Quan Hệ đẹp, Trực Quan, Có Thể Làm ...
Có thể bạn quan tâm
Bạn tham gia một dự án phần mềm. Team bạn cùng nhau thiết kế, góp ý, chỉnh sửa thiết kế CSDL quan hệ nhưng vì Covid mọi thành viên phải làm việc từ xa. Vậy công cụ nào vừa miễn phí, vừa tốt để thiết kế CSDL?
1. Đi tìm công cụ thiết kế ERD tốt, cộng tác qua mạng và lại miễn phí !
2 tháng vừa qua, tôi tham gia một dự án phần mềm sử dụng CSDL Postgresql. Team của tôi cần thiết kế lại toàn bộ cấu trúc bảng khoảng 40 bảng nằm trong 7 schema khác nhau. Tất cả các thành viên trong team đều làm việc từ xa. Ban đầu việc thiết kế CSDL gặp rất nhiều khó khăn vì công cụ thiết kế ERD (Entity Relation Diagram) ngày hôm nay rơi vào mấy trường hợp:
- Rất tốt, xịn thì ở dạng Desktop ví dụ như Erwin Modeller chỉ có bản chạy trên Windows, chi phí license rất cao.
- Miễn phí như PgAdmin thì chỉ xem được quan hệ nhưng không chỉnh sửa được, tính năng này vẫn chỉ ở bản beta.
- Cho phép cùng cộng tác thiết kế trực tuyến như https://dbdiagram.io thì khi xuất ra DDL cho Postgresql lỗi, ngay cả với thiết kế mẫu mực có sẵn trên web site.
Mặc dù dbdiagram có chút lỗi như vậy. Nhưng tôi nghĩ nếu tỷ mỷ sửa lại, chắc cuối cùng DDL Script export ra sẽ chạy được. Nhược điểm là dbdiagram có ngôn ngữ mô tả bảng, quan hệ tổng quát có thể áp dụng cho MySQL, Postgresql, SQL Server nhưng lại không thực sự chi tiết và hỗ trợ hết các kiểu đặc thù ví dụ Postgresql có kiểu array, hstore, jsonb.
Pgadmin có chức năng ERD nhưng vẫn ở beta, và chỉ xem chứ không thể thiết kế. DBeaver có chức năng ERD cũng chỉ xem, không vẽ được. Ưu điểm của DBeaver là có thể chọn bảng từ các schema khác nhau rồi ném vào một màn hình thiết kế ERD nhìn đỡ rối mắt khi có quá nhiều bảng.
Những phần mềm khác thiết kế tốt, cộng tác tốt giá thuê bao hàng tháng với lập trình viên cỡ 60-99 USD. Team 6 người sẽ phải trả 500$/tháng.
2. Đặt lại tiêu chí công cụ thiết kế ERD
- Thiết kế tốt, đẹp, nhìn trực quan, chú thích được, xuất ra PDF, in được
- Cộng tác qua mạng nhiều người cùng vẽ một lúc
- Chia thành nhiều Tab màn hình để chia nhỏ mức độ phức tạp
- Miễn phí
Không cần xuất DDL Script bởi vì khi hệ thống đã triển khai production. Chúng ta sẽ phải thực hiện DB migration sửa từng bảng, từng trường một. Việc xuất ra cả một file DDl Script cũng chả có tác dụng nhiều lắm. Nó chỉ làm cho những người lười thích thú, nhưng không có ứng dụng thực tế vào sản phẩm thật. Lập trình viên CSDL nghiêm túc sẽ phải tự viết DDL script để kiểm soát tốt nhất các điều kiện ràng buộc constrains, chỉ mục index
Ở mức thiết kế ERD để cả team phần mềm hiểu, góp ý, chúng ta chỉ cần vẽ được quan hệ giữa các bảng, primary key, foreign key, danh sách các cột - kiểu dữ liệu trong bảng.
3. app.diagrams.net
Rất may mắn, chúng tôi tìm được https://app.diagrams.net/. Ưu điểm của phần mềm này là gì?
- Công cụ thiết kế diagram miễn phí
- Cho phép cộng tác trực tuyến qua Google Drive theo quyền hạn: Editor, Viewer, Commenter. Hoặc chuyển quyền tác giả sang người khác cũng được
- Hỗ trợ thiết kế rất nhiều loại diagram: căn bản, UML, ERD, Organization Chart, Flow Chart
- Có rất nhiều mẫu hình có sẵn, chỉ cần click vào More Shapes là ra.
- Mức độ tinh tế, đường nét, màu sắc hình trong app.diagrams.net vượt trội so với bất kỳ công cụ thiết kế ERD nào bởi nó sinh ra để vẽ diagram.
- Hỗ trợ nhiều tab kiểu như worksheet trong Excel
- Nó cũng hỗ trợ paste vào lệnh tạo bảng CREATE TABLE để vẽ ra bảng, nhưng tôi thấy còn rất sơ sài, nên tôi không dùng.
- Mức độ chi tiết, đầy đủ đường liên kết giữa hai bảng hơn rất nhiều các phần mềm ERD mà tôi biết.
Ví dụ một ERD tôi vẽ dùng app.diagrams.net
Ở đây tôi chỉ dùng dạng bảng tối giản List
Kết hợp với các loại kết nối trong thư viện ERD
4. Kinh nghiệm thực tế sau khi thiết kể bảng
Hãy thiết kế từ tổng quan xuống chi tiết Top-Down hơn là Bottom-Up
Ưu tiên tên bảng, Primary Key, Foreign Key rồi mới tên các trường NOT NULL, rồi trường NULL
Tuân thủ tên bảng chữ thường, các từ cách nhau bằng dấu -, tránh dùng các từ khoá như user, role, order, select, count làm tên bảng hay tên cột
Hãy tận dụng khả năng tô mầu trông app.diagrams.net để phân biệt rõ đâu là Primary Key, đâu là Foreign Key.
Khi số lượng bảng ít, các đường liên kết giữa các bảng nhìn trực quan và đẹp. Nhưng khi số lượng bảng tăng, đường nối chằng chịt nhìn rất rối mắt. Do đó hãy sử dụng thống nhất bộ quy tắc mô tả cột như phần tiếp.
5. Quy tắc mô tả cột
Luôn sử dụng tên cột id cho trường primary key. Ví dụ id: PK
Nếu là foreign key thì table_id. Ví dụ: outline_id: FK outline
Với ứng dụng sẽ dùng kiến trúc microservice, hạn chế dùng kiểu primary key tự tăng autoincrement hay serial. Kiểu này sẽ gây xung đột khi scale out database dạng cluster.
Muốn mô tả cần đánh chỉ mục hãy bổ xung IDX: email: text IDX
Muốn tạo constraint not null hãy bổ xung !NULL: name: text !NULL
Cột dạng enum nên liệt kê các giá trị enum ra `status : {draft, active, hidden}
Cột nào còn chưa rõ ràng, cần thảo luận thì tô nền đỏ gây sự chú ý
Đừng dùng lẫn lộn name với title, thống nhất dùng một từ thống nhất thôi ví dụ name
Cứ mạnh dạn bổ xung chú thích khi cần.
Khi đã tuân thủ quy tắc mô tả cột thì chúng ta không cần vẽ đường liên kết nữa.
6. Kết luận
https://app.diagrams.net/ là công cụ rất tốt để vẽ ERD. Nó không hỗ trợ xuất ra DDL Script (Data Definition Language Script dùng để tạo bảng, tạo quan hệ, constraint). Tốt nhất bạn hãy dành thời gian để viết cẩn thận DDL Script. CSDL là trái tim của cả hệ thống phần mềm, do đó hãy thiết kế tỷ mỷ, có tính toán, thử nghiệm đừng làm lạm dụng chức năng tự sinh mã, sau này bạn sẽ hối hận vì không kiểm soát được code tự sinh ra đâu.
Bình luận
6009Trương Văn Tuấn 2021-10-03 14:38:00.36424 +0000 UTCEm đang học PostgreSQL, thiết kết ERD bằng phần mềm này. Thao tác với database, schema hoằn toàn bằng Terminal. Cảm nhận mình làm chủ, kiểm soát các thứ mình thiết kế. https://app.diagrams.net tích hợp với bộ Jira Software tốt nhưng mất phí. Cảm ơn chia sẻ của thầy.
Trả lời GaeUkyobAndy Nguyen 2022-11-16 08:41:18.717465 +0000 UTCChào Tuấn, anh có 1 dự án nhỏ, dự định dùng PostgreSQL, anh có thể liên lạc với em được không? Email anh andy@sevenseas.vn 079 66 68 247
Sửa Xóa Bình luận HủySnrFOarKHan Truong Van 2023-07-28 08:54:33.334716 +0000 UTCHiện tại em đang thiết kế database theo cách trên của bác và thấy hiện tại rất ưng ý.Cảm ơn bác nhiều nhé.
Trả lời 36Trịnh Minh Cường 2023-07-31 07:40:23.100816 +0000 UTCTuyệt vời, lâu lâu có người đọc bài cho ý kiến
Sửa Xóa kaOa9dIEVăn Hân Trương 2023-10-14 05:01:54.240374 +0000 UTCSau khoảng 3 tháng áp dụng sơ đồ trên vào công việc thực tế, em thấy hiện tại em gặp vấn đề về các trường ghi chú sẽ nhiều lên và các trường dữ liệu dạng enum, dẫn đến sẽ có một độ rối nhất định. Thì giải pháp hiện tại em đang tiến hành là viết một tài lệu hướng dẫn sử dụng riêng cho từng diagram. Em mong thầy có thể góp ý với em về giải pháp cho vấn đề trên ạ.
Sửa Xóa Bình luận Hủy * Vui lòng đăng nhập trước khi bình luận. +2 Thích Chia sẻTừ khóa » Sơ đồ Csdl
-
Xây Dựng Sơ đồ Quan Hệ - Thực Thể Và Thiết Kế Cơ Sở Dữ Liệu
-
Bài Giảng Cơ Sở Dữ Liệu: 06 - Vẽ Sơ đồ ER CONGTY Bằng Công Cụ ...
-
Cơ Sở Dữ Liệu: Sơ đồ Thực Thể Liên Kết (erd) - .vn
-
Sơ đồ Quan Hệ Thực Thể Trong Hệ Quản Trị Cơ Sở Dữ Liệu - TEK4
-
Vẽ Sơ đồ ER Trực Tuyến | Creately
-
Mô Hình Quan Hệ - Thực Thể (Entity – Relationship Model) - Viblo
-
Làm Thế Nào để Thiết Kế Một Cơ Sở Dữ Liệu [Phần 1] - Viblo
-
(PDF) HƯỚNG DẪN CHI TIẾT CÁCH CHUYỂN BIỂU ĐỒ LỚP ...
-
Kiến Thức Cơ Bản Về Thiết Kế Cơ Sở Dữ Liệu - Microsoft Support
-
[PDF] Chương 2 Thiết Kế Cơ Sở Dữ Liệu Logic - FIT@MTA
-
[PDF] C ở Dữ Liệ Cơ Sở Dữ Liệuli ệu - FIT@MTA
-
3 Sơ đồ Thiết Kế Dữ Liệu Database Design - Tài Liệu Text - 123doc
-
Sơ đồ Luồng Dữ Liệu DFD Data Flow Diagram Thiết Kế CSDL Dựa ...