Hướng dẫn cú pháp ERD của PlantUML

Điểm quan trọng của sơ đồ quan hệ thực thể (ERD) là gì?

Một Sơ đồ quan hệ thực thể (ERD) là bản vẽ cấu trúc được sử dụng để thiết kế, tài liệu hóa và phân tích các cơ sở dữ liệu quan hệ. Nó trực quan hóa các bảng (thực thể) trong một hệ thống, các cột cụ thể (thuộc tính) mà chúng chứa, và cách các bảng này liên kết với nhau. Trong PlantUML, các ERD được tạo bằng cách sử dụng ký hiệu Kỹ thuật Thông tin (IE), được triển khai theo tiêu chuẩn ký hiệu chân chimđể biểu diễn các ràng buộc quan hệ.

Dù bạn đang thiết kế một kho dữ liệu vi dịch vụ, tối ưu hóa các đường đi nối SQL, hay lập bản đồ kiến trúc kho dữ liệu quy mô toàn doanh nghiệp, một ERD UML dựa trên văn bản đảm bảo các lược đồ cơ sở dữ liệu của bạn được minh bạch hoàn toàn. Với VPasCode, bạn có thể định nghĩa các bảng cơ sở dữ liệu, khóa chỉ mục và các mối quan hệ logic bằng cú pháp sạch sẽ, khai báo rõ ràng. Bộ xử lý tự động xử lý kích thước hộp bảng và định tuyến các chuỗi kết nối khóa ngoại mà không có bất kỳ đường bố trí nào chồng chéo.

Hướng dẫn cú pháp cốt lõi: Các thành phần và cấu trúc

Xây dựng một ERD kiểu IE mạnh mẽ trong PlantUML phụ thuộc vào các khối thực thể có cấu trúc, các chỉ định khóa rõ ràng và các bộ điều chỉnh cấp độ chân chim.

1. Khai báo các thực thể (bảng cơ sở dữ liệu)

Bạn khai báo một bảng cơ sở dữ liệu bằng cách sử dụng entitytừ khóa, theo sau là tên bảng và một cặp dấu ngoặc nhọn. Bên trong dấu ngoặc nhọn, bạn liệt kê các cột bảng. Để lược đồ của bạn sạch sẽ và dễ đọc, hãy sử dụng dấu gạch ngang (--) để tách biệt các khóa chính/khóa ngoại khỏi các thuộc tính dữ liệu thông thường:

entity "users" as users_table {
    id : INT [PK]
    --
    email : VARCHAR(255)
    created_at : TIMESTAMP
}

2. Chỉ định khóa chính và khóa ngoại

Mặc dù các chỉ báo văn bản như `[PK]` hoặc `[FK]` hoạt động tốt, bộ xử lý IE của PlantUML cũng hỗ trợ các biểu tượng khóa hình ảnh. Đặt một dấu sao (*) trước một thuộc tính sẽ chỉ định nó là cột **bắt buộc (không được rỗng)**, trong khi một chuỗi văn bản sạch hoặc thẻ sẽ thêm ngữ cảnh chỉ mục rõ ràng:

entiti "orders" {
    * id : INT <<PK>>
    --
    * user_id : INT <<FK>>
    discount_code : VARCHAR(50)
}

3. Ánh xạ Cardinality và Mối quan hệ Crow’s Foot

Để kết nối các bảng và đảm bảo các ràng buộc toàn vẹn tham chiếu, hãy sử dụng kết hợp các ký tự gạch ngang, dấu ngoặc và ký tự ống. Trong ký hiệu IE, các ký tự này tạo thành các đầu **chân chim** riêng biệt đại diện cho các mối quan hệ cơ sở dữ liệu:

  • ||--|| **Chính xác Một đến Chính xác Một:** Một ánh xạ một-một nghiêm ngặt, bắt buộc.
  • ||--o| **Chính xác Một đến Không hoặc Một:** Một ánh xạ một-một tùy chọn.
  • ||--|{ **Chính xác Một đến Một hoặc Nhiều:** Một mối quan hệ một-đa bắt buộc.
  • ||--o{ **Chính xác Một đến Không, Một hoặc Nhiều:** Một mối quan hệ một-đa tiêu chuẩn, tùy chọn.

Các Thực hành Tốt cho Các Sơ đồ Cơ sở Dữ liệu Sạch

  • Duy trì Quy ước Viết Hoa: Giữ các khai báo thực thể của bạn có thể dự đoán được. Sử dụng snake_case viết thường (ví dụ, order_items) cho các bảng thực tế được ánh xạ SQL, hoặc sử dụng CamelCase viết hoa cho các mô hình miền khái niệm.
  • Luôn ghi chú các Khóa Ngoại: Khi liên kết hai bảng, luôn xác định cột khóa ngoại bên trong khối bảng con. Điều này cung cấp các ngữ cảnh tham chiếu rõ ràng cho các đội kỹ thuật trong quá trình di chuyển dữ liệu.
  • Kiểm soát Khoảng cách Chân Chim: Các sơ đồ cơ sở dữ liệu phức tạp với hàng chục bảng có thể nhanh chóng trở nên chật chội. Nếu các đường mối quan hệ của bạn bắt đầu giao nhau một cách không tự nhiên, hãy thay thế các bộ nối gạch đôi (--) bằng ba hoặc bốn gạch ngang (---) để tách các bảng ra xa hơn và cho phép bộ động lực bố cục có thêm không gian để sắp xếp lưới.

Các Ví dụ Thực tế về ERD PlantUML

Ví dụ 1: Mô hình quan hệ thương mại điện tử cốt lõi (Khóa và Ánh xạ)

Bản thiết kế chức năng này mô hình hóa một vòng lặp giao dịch cơ sở dữ liệu thương mại điện tử cốt lõi, cho thấy cách người dùng, đơn hàng và sổ ghi nợ thanh toán liên kết với nhau thông qua các mối quan hệ kiểu chân chim nghiêm ngặt.

@startuml
' Đóng băng việc hiển thị hộp thực thể thành các hình vuông hiện đại sắc nét
hide circle
skinparam LINETYPE ortho

entity "người dùng" as user {
    * id : INT <<PK>>
    --
    * email : VARCHAR(100)
    * password_hash : VARCHAR(255)
    phone : VARCHAR(20)
}

entity "đơn hàng" as order {
    * id : INT <<PK>>
    --
    * user_id : INT <<FK>>
    * total_amount : DECIMAL(10,2)
    status : VARCHAR(50)
}

entity "sổ ghi nợ thanh toán" as ledger {
    * id : INT <<PK>>
    --
    * order_id : INT <<FK>>
    * transaction_reference : VARCHAR(100)
    gateway : VARCHAR(50)
}

' Xác định các ràng buộc sơ đồ quan hệ
user ||--o{ order : "đặt"
order ||--|| ledger : "tạo ra"
@enduml

Phân tích cú pháp: Chỉ thị hide circle vô hiệu hóa các vòng tròn biểu tượng lớp UML mặc định, trong khi skinparam LINETYPE ortho buộc các đường mối quan hệ phải đi theo các góc vuông 90 độ gọn gàng. Sơ đồ rõ ràng cho thấy một người dùng có thể đặt từ 0 đến nhiều đơn hàng (||--o{), trong khi một đơn hàng phải có đúng một bản ghi sổ ghi nợ thanh toán liên kết (||--||).

Ví dụ 2: Sơ đồ Hệ thống quản lý nội dung nâng cao (Giao điểm nhiều-đa)

Bản thiết kế doanh nghiệp nâng cao này mô hình hóa toàn bộ kiến trúc hệ thống quản lý nội dung (CMS). Nó thể hiện cách xử lý các kiến trúc nhiều-đa một cách sạch sẽ bằng cách tận dụng một bảng ánh xạ trung gian.

@startuml
hide circle
skinparam LINETYPE ortho

entity "bài viết" as post {
    * id : INT <<PK>>
    --
    * author_id : INT <<FK>>
    * title : VARCHAR(255)
    slug : VARCHAR(255)
    body : TEXT
}

entity "danh mục" as category {
    * id : INT <<PK>>
    --
    * name : VARCHAR(100)
    description : VARCHAR(255)
}

entity "bảng ánh xạ bài viết - danh mục" as mapping {
    * post_id : INT <<PK>><<FK>>
    * category_id : INT <<PK>><<FK>>
    --
    assigned_at : TIMESTAMP
}

entity "bình luận" as comment {
    * id : INT <<PK>>
    --
    * post_id : INT <<FK>>
    author_name : VARCHAR(100)
    * content : TEXT
}

' Cấu trúc liên kết quan hệ
post ||--o{ mapping : "chứa"
category ||--o{ mapping : "phân loại"
post ||--o{ comment : "đính kèm"
@enduml

Phân tích cú pháp: Mẫu này mô hình hóa mối quan hệ nhiều-đa kinh điển giữa bài viết và danh mục. Thay vì kết nối chúng trực tiếp, nó giới thiệu một bảng trung gian (bảng ánh xạ bài viết - danh mục), trong đó cả hai cột đều đóng vai trò là khóa chính hợp thành. Các ký hiệu chân chim rõ ràng ánh xạ các mối quan hệ lan truyền xuống tầng bình luận.

Lên đầu trang