Có thể bạn quan tâm: Cách Vẽ Elipsoit: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
TÓM TẮT
- 1 1. Giới thiệu chung về ER Diagram
- 2 2. Các Thành Phần Cơ Bản Của ER Diagram
- 3 3. Các Bước Chuẩn Bị Trước Khi Vẽ ER
- 4 4. Hướng Dẫn Vẽ ER Bước Từng Bước
- 5 5. Ví Dụ Thực Tế: Vẽ ER cho Hệ Thống Quản Lý Bán Hàng
- 6 6. Các Lỗi Thường Gặp Khi Vẽ ER và Cách Khắc Phục
- 7 7. Thực Hành: Bài Tập Tự Làm
- 8 8. Lời Khuyên Khi Thiết Kế ER
- 9 9. Kết luận
1. Giới thiệu chung về ER Diagram
Entity-Relationship Diagram (ERD) hay còn gọi là sơ đồ thực thể – quan hệ, là một công cụ quan trọng trong việc mô hình hoá dữ liệu. ERD giúp chúng ta hình dung cấu trúc dữ liệu, các thực thể (entity), các thuộc tính (attribute) và mối quan hệ (relationship) giữa chúng. Khi thiết kế hệ thống thông tin, cơ sở dữ liệu, hoặc thậm chí là các ứng dụng phần mềm phức tạp, việc xây dựng một ERD chuẩn xác sẽ giúp:
- Hiểu rõ yêu cầu nghiệp vụ: Phân tích và mô tả các thành phần dữ liệu và cách chúng tương tác.
- Tiết kiệm thời gian phát triển: Phát hiện sớm các lỗi thiết kế, giảm thiểu việc phải sửa đổi sau khi triển khai.
- Giao tiếp hiệu quả: Cung cấp một ngôn ngữ chung cho các nhà phân tích, nhà phát triển và các bên liên quan.
Trong bài viết này, chúng ta sẽ đi sâu vào từng bước “cách vẽ ER”, từ việc chuẩn bị, lựa chọn ký hiệu, đến việc thực hiện chi tiết và kiểm tra lại mô hình.
Có thể bạn quan tâm: Cách Vẽ Ecu: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Các Thành Phần Cơ Bản Của ER Diagram
2.1 Thực thể (Entity)
- Định nghĩa: Thực thể là một đối tượng trong thế giới thực hoặc trong hệ thống mà chúng ta muốn lưu trữ thông tin. Ví dụ: Khách hàng, Sản phẩm, Đơn hàng.
- Ký hiệu: Thông thường được biểu diễn bằng hình chữ nhật, trong đó tên thực thể được viết ở giữa.
2.2 Thuộc tính (Attribute)
- Định nghĩa: Thuộc tính là các đặc tính mô tả thực thể. Ví dụ: Khách hàng có Tên, Địa chỉ, Số điện thoại.
- Ký hiệu: Được viết trong hình elip (hoặc oval) và nối với thực thể bằng một đường thẳng.
Các loại thuộc tính
| Loại thuộc tính | Mô tả | Ký hiệu |
|---|---|---|
| Thuộc tính đơn | Không thể chia nhỏ hơn | Elip bình thường |
| Thuộc tính phức tạp | Có thể chia thành các thuộc tính con | Elip có các elip con nối vào |
| Thuộc tính đa trị | Có nhiều giá trị cho một thực thể | Elip gạch chéo (double oval) |
| Thuộc tính khóa (Key attribute) | Dùng để xác định duy nhất một thực thể | Elip gạch dưới (underline) |
| Thuộc tính tính toán | Giá trị được tính toán từ các thuộc tính khác | Elip gạch chéo (dotted) |
2.3 Quan hệ (Relationship)
- Định nghĩa: Mô tả cách các thực thể liên kết với nhau. Ví dụ: Khách hàng “đặt” Đơn hàng.
- Ký hiệu: Dùng hình thoi (diamond) để biểu diễn, trong đó ghi tên quan hệ.
Các loại quan hệ
| Loại quan hệ | Mô tả | Ký hiệu |
|---|---|---|
| One-to-One (1:1) | Mỗi thực thể A liên kết với tối đa một thực thể B và ngược lại. | Đường thẳng 1-1 |
| One-to-Many (1:N) | Một thực thể A có thể liên kết với nhiều thực thể B, nhưng mỗi B chỉ liên kết với một A. | Đường thẳng 1-N |
| Many-to-Many (M:N) | Nhiều thực thể A có thể liên kết với nhiều thực thể B. | Đường thẳng N-M |
2.4 Các ràng buộc (Constraints)
- Cardinality (Độ đa trị): Xác định số lượng thực thể trong một quan hệ (1, N, 0..1, 0..N, …).
- Participation (Tham gia): Xác định xem một thực thể có bắt buộc phải tham gia quan hệ hay không (total vs. partial).
3. Các Bước Chuẩn Bị Trước Khi Vẽ ER
3.1 Thu thập yêu cầu nghiệp vụ
- Phỏng vấn người dùng: Hiểu các quy trình nghiệp vụ, các đối tượng quan trọng.
- Phân tích tài liệu: Xem các tài liệu hiện có như bản mô tả yêu cầu, biểu mẫu, báo cáo.
- Xác định phạm vi: Đặt ra giới hạn cho mô hình, tránh “bị lan man”.
3.2 Xác định các thực thể chính
- Lập danh sách các danh mục dữ liệu quan trọng.
- Đặt tên thực thể ngắn gọn, đồng thời phản ánh đúng nội dung (ví dụ:
KHACH_HANG,SAN_PHAM).
3.3 Xác định thuộc tính cho mỗi thực thể

Có thể bạn quan tâm: Cách Vẽ Anime Từ Cơ Bản Đến Nâng Cao: Hướng Dẫn Chi Tiết Cho Người Mới Bắt Đầu
- Liệt kê các thông tin cần lưu trữ cho mỗi thực thể.
- Xác định thuộc tính khóa (primary key) cho mỗi thực thể.
3.4 Xác định quan hệ giữa các thực thể
- Dựa trên quy trình nghiệp vụ, vẽ sơ đồ mối quan hệ sơ bộ.
- Xác định loại quan hệ (1:1, 1:N, N:M) và các ràng buộc.
3.5 Lựa chọn công cụ vẽ
- Công cụ truyền thống: Microsoft Visio, Lucidchart, Draw.io (diagrams.net), Gliffy.
- Công cụ chuyên ngành: ER/Studio, MySQL Workbench, Oracle Designer.
- Công cụ mã nguồn mở: Dia, yEd, DBeaver.
4. Hướng Dẫn Vẽ ER Bước Từng Bước
4.1 Bước 1: Vẽ các thực thể
- Mở công cụ vẽ đã chọn.
- Chọn biểu tượng Rectangle (hình chữ nhật) và vẽ cho mỗi thực thể.
- Đặt tên thực thể ở giữa hình chữ nhật, viết hoa hoặc chữ in đậm để dễ nhìn.
Mẹo: Đặt tên thực thể ở dạng danh từ số nhiều (ví dụ:
KHACH_HANG) hoặc số ít tùy theo chuẩn công ty.
4.2 Bước 2: Thêm thuộc tính
- Chọn biểu tượng Ellipse (hình elip) cho mỗi thuộc tính.
- Nối thuộc tính với thực thể bằng đường thẳng.
- Đánh dấu thuộc tính khóa bằng cách gạch dưới hoặc in đậm.
- Đối với thuộc tính đa trị, vẽ elip gạch chéo (double oval).
Ví dụ: Thực thể
KHACH_HANGcó thuộc tínhMA_KHACH(khóa),HO_TEN,DIACHI,SO_DT.
4.3 Bước 3: Vẽ quan hệ
- Chọn biểu tượng Diamond (hình thoi) cho mỗi quan hệ.
- Đặt tên quan hệ ở trung tâm thoi (ví dụ:
DAT_HANG). - Nối thoi tới các thực thể tham gia bằng đường thẳng.
- Ghi chú độ đa trị (cardinality) và mức độ tham gia (participation) ở gần các đầu mũi tên.
Ví dụ: Quan hệ
DATgiữaKHACH_HANGvàDON_HANGlà 1:N (một khách hàng có thể đặt nhiều đơn hàng).
4.4 Bước 4: Xác định ràng buộc và cardinality
- Đối với mỗi quan hệ, viết 1 hoặc N ở phía thực thể tương ứng.
- Nếu thực thể bắt buộc tham gia quan hệ, ghi (1) hoặc (0..1) tùy theo yêu cầu.
- Đối với quan hệ N:M, tạo một thực thể trung gian (junction table) để chuyển thành hai quan hệ 1:N.
Ví dụ: Quan hệ
SUA(Sản phẩm –> Đơn hàng) là N:M. Ta tạo thực thểCHI_TIET_DON_HANGvới các thuộc tínhMA_DON_HANG,MA_SAN_PHAM,SO_LUONG.
4.5 Bước 5: Kiểm tra tính toàn vẹn (Integrity)
- Đảm bảo mỗi thực thể đều có khóa chính.
- Kiểm tra khóa ngoại (foreign key): các thuộc tính trong thực thể trung gian phải trỏ tới khóa chính của thực thể gốc.
- Đảm bảo không có vòng lặp vô nghĩa (ví dụ: một thực thể tự liên kết mà không có ý nghĩa nghiệp vụ).
4.6 Bước 6: Đánh giá và tối ưu hoá
- Loại bỏ dư thừa: Nếu hai thực thể có thuộc tính trùng lặp, cân nhắc hợp nhất.
- Chuẩn hoá (Normalization): Đảm bảo mô hình đạt ít nhất chuẩn 3NF (Third Normal Form) để tránh bất thường dữ liệu.
- Đánh dấu các thuộc tính tính toán: Nếu có, ghi chú để không lưu trữ trong DB.
5. Ví Dụ Thực Tế: Vẽ ER cho Hệ Thống Quản Lý Bán Hàng
5.1 Thu thập yêu cầu

Có thể bạn quan tâm: Cách Vẽ Emmanue: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Thực thể:
KHACH_HANG,SAN_PHAM,DON_HANG,NHAN_VIEN,PHUONG_THUC_THANH_TOAN. - Quan hệ:
- Khách hàng đặt đơn hàng (1:N).
- Đơn hàng được xử lý bởi nhân viên (N:1).
- Đơn hàng có chi tiết sản phẩm (1:N) – thực thể trung gian
CHI_TIET_DON_HANG. - Đơn hàng sử dụng phương thức thanh toán (1:1).
5.2 Vẽ thực thể và thuộc tính
| Thực thể | Thuộc tính (khóa) |
|---|---|
| KHACH_HANG | MA_KHACH (PK), HO_TEN, DIACHI, EMAIL, SO_DT |
| SAN_PHAM | MA_SP (PK), TEN_SP, GIA_BAN, TON_KHO |
| DON_HANG | MA_DH (PK), NGAY_DAT, TONG_TIEN, MA_KHACH (FK), MA_NV (FK), MA_PTT (FK) |
| NHAN_VIEN | MA_NV (PK), HO_TEN, CHUC_VU, LUONG |
| PHUONG_THUC_THANH_TOAN | MA_PTT (PK), LOAI_PTT |
| CHI_TIET_DON_HANG | MA_DH (PK, FK), MA_SP (PK, FK), SO_LUONG, DON_GIA |
5.3 Vẽ quan hệ
- KHACH_HANG –> DON_HANG: Quan hệ
DAT(1:N). Đánh dấu (1) ở phíaKHACH_HANG, (N) ở phíaDON_HANG. - NHAN_VIEN –> DON_HANG: Quan hệ
XU_LY(1:N) (một nhân viên xử lý nhiều đơn). - DON_HANG –> PHUONG_THUC_THANH_TOAN: Quan hệ
THANH_TOAN(1:1). - DON_HANG –> CHI_TIET_DON_HANG: Quan hệ
CO_CHI_TIET(1:N). - SAN_PHAM –> CHI_TIET_DON_HANG: Quan hệ
TRONG_CHI_TIET(1:N).
5.4 Kiểm tra toàn vẹn
MA_KHACHtrongDON_HANGlà foreign key trỏ tớiKHACH_HANG.MA_NVtrongDON_HANGlà foreign key trỏ tớiNHAN_VIEN.MA_PTTtrongDON_HANGlà foreign key trỏ tớiPHUONG_THUC_THANH_TOAN.MA_DHvàMA_SPtrongCHI_TIET_DON_HANGlà composite primary key và foreign keys.
5.5 Tối ưu hoá
- Kiểm tra độ chuẩn hóa: Tất cả các thuộc tính không khóa trong
DON_HANGđều phụ thuộc toàn phần vào khóa chính, không có thuộc tính bắc cầu, đạt chuẩn 3NF. - Nếu muốn giảm số lượng join, có thể cân nhắc denormalization một phần (ví dụ: lưu
TEN_KHACHtrongDON_HANGđể truy vấn nhanh), nhưng phải cân nhắc chi phí lưu trữ và tính nhất quán.
6. Các Lỗi Thường Gặp Khi Vẽ ER và Cách Khắc Phục
| Lỗi | Mô tả | Cách khắc phục |
|---|---|---|
| Thiếu khóa chính | Thực thể không có thuộc tính duy nhất. | Xác định một thuộc tính (hoặc kết hợp) làm Primary Key. |
| Quan hệ N:M không có thực thể trung gian | Khi không chuyển N:M thành 2 quan hệ 1:N. | Tạo thực thể trung gian (junction table). |
| Thuộc tính đa trị không được biểu diễn | Đặt thuộc tính đa trị trực tiếp trong thực thể. | Sử dụng thực thể phụ hoặc bảng phụ để lưu nhiều giá trị. |
| Ràng buộc cardinality không chính xác | Ghi sai 1:N thành N:1. | Kiểm tra quy trình nghiệp vụ, sửa lại ký hiệu. |
| Lặp lại dữ liệu | Thuộc tính giống nhau xuất hiện trong nhiều thực thể. | Hợp nhất thực thể hoặc tạo thực thể chung (supertype). |
| Không chuẩn hoá | Dữ liệu bị dư thừa, gây bất thường cập nhật. | Áp dụng các chuẩn hoá (1NF, 2NF, 3NF). |
7. Thực Hành: Bài Tập Tự Làm
- Bài tập 1: Vẽ ER cho hệ thống thư viện bao gồm thực thể
SACH,DOC_GIA,MUON_TRA,NHAN_VIEN. Xác định các quan hệ và cardinality. - Bài tập 2: Thiết kế ER cho một ứng dụng quản lý dự án với thực thể
DU_AN,THANH_VIEN,TASK,PHAN_CONG. Đảm bảo quan hệ N:M giữaDU_ANvàTHANH_VIEN. - Bài tập 3: Chuyển một sơ đồ ER đã có (có quan hệ N:M) sang dạng chuẩn 3NF, tạo các thực thể trung gian cần thiết.
Sau khi hoàn thành, hãy so sánh kết quả của bạn với các mẫu trên internet hoặc nhờ người có kinh nghiệm kiểm tra.
8. Lời Khuyên Khi Thiết Kế ER
- Bắt đầu đơn giản: Đừng cố gắng mô hình hoá quá chi tiết ngay từ đầu. Phát triển dần dần.
- Luôn đặt câu hỏi “Ai?”, “Cái gì?”, “Khi nào?” để xác định thực thể và thuộc tính.
- Sử dụng tên ngắn gọn, có ý nghĩa: Tránh viết tắt quá nhiều, gây khó hiểu.
- Kiểm tra lại với người dùng: Đảm bảo mô hình phản ánh đúng nghiệp vụ.
- Lưu trữ phiên bản: Khi thay đổi mô hình, lưu lại các phiên bản để theo dõi tiến trình.
9. Kết luận
Việc vẽ ER không chỉ là một bước kỹ thuật mà còn là quá trình giao tiếp, hiểu và truyền đạt yêu cầu nghiệp vụ. Khi bạn nắm vững các khái niệm cơ bản (thực thể, thuộc tính, quan hệ, cardinality) và tuân thủ quy trình chuẩn – từ thu thập yêu cầu, xác định thực thể, vẽ sơ đồ, kiểm tra toàn vẹn, tới tối ưu hoá – bạn sẽ tạo ra những mô hình dữ liệu sạch sẽ, logic và dễ bảo trì.
Hãy áp dụng những kiến thức và hướng dẫn chi tiết trong bài viết này vào dự án thực tế của bạn. Khi đã thành thạo, bạn sẽ thấy rằng ER Diagram trở thành một công cụ mạnh mẽ, giúp giảm thiểu lỗi thiết kế, tăng tốc độ phát triển và mang lại giá trị thực cho doanh nghiệp.
Chúc bạn thành công trong việc tạo ra các ER Diagram chuyên nghiệp và hiệu quả!
