Công cụ thiết kế bảng CSDL quan hệ đẹp, trực quan, có thể làm việc nhóm 2021

03 tháng 10, 2021 – 605 lượt xem

Bạn tham gia một dự án Bất Động Sả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 thao tác từ xa. Vậy công cụ nào vừa không lấy 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 mới qua, tôi tham gia một dự án Bất Động Sản phần mềm sử dụng CSDL Postgresql. Team của tôi cần thiết kế lại hàng loạt cấu trúc bảng khoảng chừng 40 bảng nằm trong 7 schema khác nhau. Tất cả những thành viên trong team đều thao tác từ xa. Ban đầu việc thiết kế CSDL gặp rất nhiều khó khăn vất vả vì công cụ thiết kế ERD ( Entity Relation Diagram ) ngày thời điểm 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.

db_diagram

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 ở đầu cuối DDL Script export ra sẽ chạy được. Nhược điểm là dbdiagram có ngôn từ diễn đạt bảng, quan hệ tổng quát hoàn toàn có thể vận dụng cho MySQL, Postgresql, SQL Server nhưng lại không thực sự chi tiết cụ thể và tương hỗ hết những kiểu đặc trưng ví dụ Postgresql có kiểu array, hstore, jsonb .Pgadmin có công dụng ERD nhưng vẫn ở beta, và chỉ xem chứ không hề thiết kế. DBeaver có tính năng ERD cũng chỉ xem, không vẽ được. Ưu điểm của DBeaver là hoàn toàn có thể chọn bảng từ những schema khác nhau rồi ném vào một màn hình hiển thị 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 USD / tháng .

2. Đặt lại tiêu chí công cụ thiết kế ERD

  1. Thiết kế tốt, đẹp, nhìn trực quan, chú thích được, xuất ra PDF, in được
  2. Cộng tác qua mạng nhiều người cùng vẽ một lúc
  3. Chia thành nhiều Tab màn hình để chia nhỏ mức độ phức tạp
  4. 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 ý, tất cả chúng ta chỉ cần vẽ được quan hệ giữa những bảng, primary key, foreign key, list những cột – kiểu tài liệu trong bảng .

3. app.diagrams.net

Rất suôn sẻ, 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

ERD

Ở đây tôi chỉ dùng dạng bảng tối giản List

List

Kết hợp với những loại liên kết trong thư viện ERD

Relationship

4. Kinh nghiệm thực tế sau khi thiết kể bảng

  1. Hãy thiết kế từ tổng quan xuống chi tiết Top-Down hơn là Bottom-Up

  2. Ư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

  3. 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

  4. Hãy tận dụng năng lực tô mầu trông app.diagrams.net để phân biệt rõ đâu là Primary Key, đâu là Foreign Key .

    Colorize_PK_FK

  5. Khi số lượng bảng ít, những đường link giữa những 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 diễn đạt cột như phần tiếp .

5. Quy tắc mô tả cột

  1. Luôn sử dụng tên cột id cho trường primary key. Ví dụ id: PK

  2. Nếu là foreign key thì table_id. Ví dụ: outline_id: FK outline

  3. 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 .
  4. Muốn mô tả cần đánh chỉ mục hãy bổ xung IDX: email: text IDX

  5. Muốn tạo constraint not null hãy bổ xung !NULL: name: text !NULL

  6. Cột dạng enum nên liệt kê những giá trị enum ra ` status : { draft, active, hidden }
  7. Cột nào còn chưa rõ ràng, cần luận bàn thì tô nền đỏ gây sự chú ý quan tâm
  8. Đừ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

  9. Cứ mạnh dạn bổ xung chú thích khi cần.

    note

Khi đã tuân thủ quy tắc diễn đạt cột thì tất cả chúng ta không cần vẽ đường link nữa .

6. Kết luận

https://app.diagrams.net/ là công cụ rất tốt để vẽ ERD. Nó không tương hỗ 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 hạn để viết cẩn trọng DDL Script. CSDL là trái tim của cả mạng lưới hệ thống phần mềm, do đó hãy thiết kế tỷ mỷ, có giám sát, thử nghiệm đừng làm lạm dụng tính năng tự sinh mã, sau này bạn sẽ hối hận vì không trấn áp được code tự sinh ra đâu .

Source: https://bacxiunong.com
Category: Blog

Related Posts

Trả lời

Email của bạn sẽ không được hiển thị công khai.