ErdDocs

Ký hiệu sơ đồ ERD

Sơ đồ ERD dùng ba họ ký hiệu. Chân quạ (crow’s foot, còn gọi là ký pháp IE) là ký hiệu mà các công cụ cơ sở dữ liệu vẽ. Chen là ký hiệu được học trên lớp. UML là sơ đồ lớp áp dụng cho dữ liệu. Ở cả ba, một bảng hay thực thể là một hình chữ nhật, còn một quan hệ là đường nối giữa các hình. Chúng khác nhau ở cách ghi bản số, tức là một dòng ở bên này ứng với bao nhiêu dòng ở bên kia. Chân quạ ghi bản số ở hai đầu đường, nên mỗi đường được đọc hai lần, mỗi lần về phía một bảng. Mỗi ký hiệu dưới đây đi kèm cách đọc. ErdDocs vẽ chúng bằng đúng ký hiệu nó dùng cho lược đồ của bạn trong công cụ bên dưới.

Các đầu đường trong ký hiệu chân quạ có nghĩa gì?

Trong ký hiệu chân quạ, mọi thứ nằm ở đầu đường. Mỗi đầu có tối đa hai dấu. Dấu gần bảng chỉ giá trị lớn nhất, dấu ở ngoài chỉ giá trị nhỏ nhất.

Ký hiệuTênCách đọcVí dụ
Đúng mộtĐúng mộtGạch + gạch: ít nhất một, nhiều nhất mộtmột đơn hàng thuộc về đúng một khách hàng
Không hoặc mộtKhông hoặc mộtVòng tròn + gạch: tùy chọn, nhiều nhất mộtmột khách hàng có nhiều nhất một thẻ tích điểm
Một hoặc nhiềuMột hoặc nhiềuGạch + chân quạ: ít nhất mộtmột đơn hàng có ít nhất một dòng chi tiết
Không hoặc nhiềuKhông hoặc nhiềuVòng tròn + chân quạ: bao nhiêu cũng được, kể cả khôngmột khách hàng có không hoặc nhiều đơn hàng
Thẻ tóm tắt ký hiệu chân quạ với bốn kiểu đầu đường: đúng một (gạch và gạch), không hoặc một (vòng tròn và gạch), một hoặc nhiều (gạch và chân quạ), không hoặc nhiều (vòng tròn và chân quạ)Thẻ tóm tắt ký hiệu chân quạ với bốn kiểu đầu đường: đúng một (gạch và gạch), không hoặc một (vòng tròn và gạch), một hoặc nhiều (gạch và chân quạ), không hoặc nhiều (vòng tròn và chân quạ)
Bốn kiểu đầu đường đó gom trong một thẻ. Hãy lưu thẻ lại, hoặc tải SVG bản nền sáng hay nền tối.

Cách đọc trọn một đường

Một đường quan hệ được đọc hai lần, mỗi lần về phía một bảng. Ví dụ cửa hàng kinh điển:

Về phía orders: một khách hàng có không hoặc nhiều đơn hàng. Về phía customers: một đơn hàng thuộc về đúng một khách hàng.customersorders
Về phía orders: một khách hàng có không hoặc nhiều đơn hàng. Về phía customers: một đơn hàng thuộc về đúng một khách hàng.

Quy tắc đọc đầy đủ, kể cả ý nghĩa các dấu khi lược đồ mới biết được một nửa, có ở trang ký hiệu chân quạ. Chọn tổ hợp nào là chuyện của bản số.

So sánh Chen, chân quạ và UML

Khái niệmChenChân quạUML
Thực thể / bảngHình chữ nhậtHình hộp chứa danh sách cộtHộp lớp
Thuộc tínhHình bầu dục nối với thực thểMột dòng trong hộp bảngMột trường trong hộp lớp
Quan hệHình thoi giữa các thực thểMột đường có dấu bản số ở hai đầuĐường liên kết
Bản sốChữ 1, N, M cạnh hình thoiGạch, vòng tròn và chân quạ ở đầu đườngBội số 1, 0..1, 1..*, *
Khóa chínhTên thuộc tính gạch chânDấu khóa trên dòng cộtStereotype hoặc thuộc tính

Một mẹo đơn giản. Khi lược đồ còn là ý tưởng, hãy dùng Chen. Khi sơ đồ đi cùng mã ứng dụng, hãy dùng UML. Khi đã có cơ sở dữ liệu, hãy dùng chân quạ. Đó là ký hiệu ErdDocs vẽ thẳng từ lược đồ bạn dán.

Ký hiệu không có trong giáo trình: nét đứt

Các bản dump thực tế thường không có khóa ngoại. Ứng dụng Rails, Django và Laravel giữ quan hệ trong mã, còn cơ sở dữ liệu không khai báo gì. Với trường hợp này, ErdDocs thêm một ký hiệu riêng. Nét liền là quan hệ do cơ sở dữ liệu khai báo. Nét đứt là quan hệ suy ra từ tên cột, ví dụ user_id → users. Nét liền được ràng buộc trong cơ sở dữ liệu bảo đảm, còn nét đứt là phỏng đoán có cơ sở.

Nét đứt nghĩa là dump không có FOREIGN KEY, và đường được kẻ theo quy ước đặt tên.usersposts
Nét đứt nghĩa là dump không có FOREIGN KEY, và đường được kẻ theo quy ước đặt tên.

Xem ký hiệu trên một lược đồ thật

Dán SQL của bạn vào công cụ bên dưới. Công cụ sẽ tìm khóa ngoại và ràng buộc duy nhất, rồi dựa vào đó đánh dấu phía «nhiều» trên mỗi đường.

Lược đồ của bạn

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

Ký hiệu chân quạ có nghĩa gì?

Mỗi đầu đường có tối đa hai dấu. Dấu gần bảng chỉ giá trị lớn nhất. Gạch nghĩa là «nhiều nhất một», chân quạ ba nhánh nghĩa là «nhiều». Dấu ở ngoài chỉ giá trị nhỏ nhất. Gạch nghĩa là «ít nhất một», vòng tròn nghĩa là «có thể không có». Vì thế vòng tròn đi với chân quạ đọc là «không hoặc nhiều», còn hai gạch đọc là «đúng một».

Nên dùng Chen hay chân quạ?

Chen hợp với việc học và thiết kế khái niệm. Ở đó quan hệ là một phần tử riêng hình thoi, rất tiện khi giảng bài. Chân quạ hợp với cơ sở dữ liệu thật. Mỗi bảng là một hộp chứa các cột, đúng như hình dạng thật của lược đồ.

Quan hệ nhiều-nhiều được thể hiện thế nào?

Bằng chân quạ ở cả hai đầu. Trong lược đồ vật lý, quan hệ nhiều-nhiều được hiện thực bằng một bảng trung gian, ví dụ order_items giữa orders và products. Vì vậy, các công cụ vẽ cơ sở dữ liệu thật sẽ hiện hai đường một-nhiều gặp nhau ở bảng trung gian đó.

Vì sao công cụ cơ sở dữ liệu không vẽ hình thoi và hình bầu dục của Chen?

Vì trong cơ sở dữ liệu vật lý, những thứ Chen vẽ riêng đều quy về bảng và cột. Hình bầu dục thuộc tính là một dòng trong hộp bảng. Hình thoi quan hệ là một cột khóa ngoại hoặc một bảng trung gian. Vẽ chúng thành hình riêng sẽ làm sơ đồ to gấp đôi mà không thêm thông tin nào.

Xem thêm