ERD (Entity Relationship Diagram): Toàn Tập Kiến Thức và Ứng Dụng Thực Tế Cho BA

ERD hay Entity Relationship Diagram, chắc hẳn không còn xa lạ với nhiều người. Bài viết này sẽ cung cấp cái nhìn toàn diện và thực tế nhất về ERD, một công cụ không thể thiếu cho các Business Analyst (BA). Chúng ta sẽ cùng tìm hiểu ERD là gì, các thành phần cấu tạo, vai trò của ERD đối với BA và đặc biệt là phần thực hành kéo dài 15 phút để thấy rõ ERD giúp ích gì cho công việc thực tế.

ERD minh họa trực quanERD minh họa trực quan

ERD Là Gì?

ERD là viết tắt của “Entity Relationship Diagram”, trong đó:

  • “Entity” (Thực thể) là các đối tượng cần quản lý.
  • “Relationship” (Mối quan hệ) là liên kết giữa các thực thể.

Như vậy, ERD là một sơ đồ mô tả các thực thể trong cơ sở dữ liệu và mối quan hệ giữa chúng.

ERD và Class Diagram: Sự Khác Biệt Cốt Lõi

Cần phân biệt rõ ERD với Class Diagram, mặc dù hình thức biểu diễn có phần tương đồng.

Class Diagram thuộc về UML (Unified Modeling Language), trong khi ERD bắt nguồn từ ERM (Entity-Relationship Modeling), một kỹ thuật mô hình hóa cơ sở dữ liệu.

Điểm khác biệt nằm ở bản chất:

  • Class là tập hợp các Object có chung thuộc tính.
  • Entity đại diện cho các Object trong thế giới thực.

Ví dụ, trong hệ thống quản lý khách hàng, đơn hàng, sản phẩm, thì chính khách hàng, đơn hàng và sản phẩm là các Entity.

Entity thường được dùng để ánh xạ (mapping) tới table trong relational database, và mang những business logic nhất định.

ERD giúp chúng ta hình dung tổng quan các “real business object” mà hệ thống quản lý và mối liên hệ giữa chúng.

Tại Sao BA Cần Đến ERD?

ERD mang lại nhiều lợi ích thiết thực cho BA:

1. Mường Tượng Tổng Quan Hệ Thống

ERD giúp liệt kê các đối tượng trong hệ thống theo hướng top-down, từ đó dễ dàng xác định phạm vi (scope) chức năng, tránh bỏ sót đối tượng hoặc phân tích thiếu sót. Nó cũng cung cấp thông tin cần thiết để thiết lập database cho giai đoạn triển khai.

Ví dụ, nếu hệ thống quản lý hợp đồng mà ERD lại thiếu đối tượng “Hợp đồng” thì rõ ràng có vấn đề.

Góc nhìn top-down giúp xác định nhanh chóng các thành phần của hệ thống và mối quan hệ giữa chúng.

2. Phân Tích Hệ Thống Hiệu Quả

Trong các dự án bảo trì (maintenance), ERD giúp nắm bắt nhanh chóng tổng quan các đối tượng và mối liên hệ chức năng.

Ví dụ, nếu thấy thực thể A liên kết với B, B liên kết với C, thì sẽ có chức năng liên quan giữa A và B, và giữa B và C.

Nghiên cứu sâu hơn tài liệu Requirements, kết hợp với ERD có thể giúp phát hiện những “behind the scenes” quan trọng mà tài liệu chưa thể hiện đầy đủ.

Phân tích hệ thống trực quan nhờ ERDPhân tích hệ thống trực quan nhờ ERD

3. Nắm Rõ Hơn Tầng Database

Với các hệ thống phức tạp, cấu trúc database đồ sộ, việc trực quan hóa các table giúp dễ dàng phát hiện điểm bất hợp lý, hoặc mối quan hệ “mờ ám”, “dư thừa”.

ERD còn hỗ trợ tạo database bằng cách convert sang dòng lệnh SQL thông qua các tool như Visual-Paradigm, ModelRight, Datanamic, giúp tiết kiệm thời gian.

4. Thiết Kế Report Chính Xác

ERD giúp hiểu cấu trúc liên kết giữa các table, từ đó viết các expression (câu query) chính xác để trích xuất, tính toán, đo lường, so sánh dữ liệu.

Với các quan hệ nhiều-nhiều phức tạp, ERD giúp xác định các table trung gian cần thiết để truy vấn dữ liệu một cách chính xác.

BA: Người Phác Họa ERD

BA là người tiếp xúc trực tiếp với khách hàng, hiểu rõ yêu cầu của họ. Do đó, BA chính là người phù hợp nhất để phác họa ERD, mô tả các đối tượng, thuộc tính và mối quan hệ trong hệ thống.

Ai Sử Dụng ERD?

Ngoài BA, ERD còn được sử dụng bởi:

  • Database Designer: Thiết kế database trong giai đoạn triển khai.
  • Developer: Nắm bắt phạm vi đối tượng cần quản lý, độ lớn của hệ thống, hiểu chức năng và tối ưu database.

Các Thành Phần Của ERD

ERD bao gồm 3 thành phần chính:

  • Entity: Thực thể (đối tượng) mà hệ thống quản lý.
  • Attribute: Thuộc tính của các đối tượng.
  • Relationship: Mối quan hệ giữa các đối tượng.

Entity

Entity là những đối tượng như người, vật, sự kiện, địa điểm… mà hệ thống cần lưu trữ thông tin.

Phần lớn Entity dễ dàng hình dung trong hệ thống, tuy nhiên cũng có những Entity trung gian, không tồn tại trong thực tế, mà thể hiện mối quan hệ nhiều-nhiều giữa hai Entity khác.

Lưu ý: Entity luôn là danh từ.

Attribute

Attribute là thuộc tính của Entity. Nó mô tả các đặc tính riêng biệt của đối tượng, là những thông tin riêng biệt mà ta muốn lưu trữ.

Ví dụ, Đơn hàng có các Attribute như:

  • Ngày đặt hàng
  • Tổng tiền chưa giảm
  • Tiền khuyến mãi
  • Thành tiền
  • Điều khoản thanh toán

Hoặc Khách hàng có các Attribute như:

  • Họ và tên
  • Email
  • Ngày sinh nhật
  • Số điện thoại
  • Sở thích

Có thể một đối tượng có nhiều thông tin khác, nhưng ta chỉ cần lưu trữ những Attribute quan trọng nhất.

PK (Primary Key) và FK (Foreign Key) sẽ được giải thích ở phần sau.

Relationship

Các loại quan hệ trong ERDCác loại quan hệ trong ERD

Về cơ bản, Relationship trong ERD có 3 loại:

  1. One-to-One (1-1): Một đối tượng liên kết với một đối tượng khác.
  2. One-to-Many (1-nhiều): Một đối tượng liên kết với nhiều đối tượng khác.
  3. Many-to-Many (nhiều-nhiều): Nhiều đối tượng liên kết với nhiều đối tượng khác.

Từ 3 loại này, ta có thể chi tiết hóa thành 6 mối quan hệ cụ thể.

Ví dụ về mối quan hệ giữa Y TÁBỆNH NHÂN trong hệ thống quản lý bệnh viện:

(Slideshow có nút Pause ở giữa)

This slideshow requires JavaScript.

Hiểu rõ các mối quan hệ này, bạn có thể chuyển đổi ngôn ngữ thường ngày của khách hàng thành ngôn ngữ ERD, và phác thảo các mối quan hệ một cách chính xác.

Mấu chốt là cần xác định quan hệ giữa 2 thực thể là gì? Từ đó, ghép vào bối cảnh cụ thể để hiểu rõ mối quan hệ đó.

Ví dụ, tìm mối quan hệ giữa các thực thể:

  • Khách hàng – Đơn hàng: Khách hàng Đơn hàng, Đơn hàng thuộc về Khách hàng.
  • Người dùng – Đặt chỗ (Booking): Người dùng tiến hành đặt Booking, Booking được đặt bởi Người dùng.
  • Dịch vụ – Hợp đồng: Dịch vụ nằm trong Hợp đồng, Hợp đồng bao gồm Dịch vụ.
  • Nhân viên CSKH – Khách hàng: NV chăm sóc Khách hàng, Khách hàng được chăm sóc bởi NV.
  • Sinh Viên – Sách: Sinh viên mượn Sách, Sách được mượn bởi Sinh viên.
  • Khách hàng – Hoạt động tương tác: Khách hàng thực hiện Hoạt động tương tác, Hoạt động tương tác được thực hiện bởi Khách hàng.

Có thể sử dụng hình con thoi nhỏ để chú thích rõ mối quan hệ.

Tóm lại:

  • Mối quan hệ giữa các thực thể đều là ĐỘNG TỪ (có, thuộc, đặt, chăm sóc, mượn, thực hiện…).
  • Khi đọc theo chiều ngược lại, chỉ cần chuyển thành THỂ BỊ ĐỘNG (được mượn, được chăm sóc, được thực hiện…).

Nhận diện:

  • Thực thể ám chỉ DANH TỪ.
  • Thuộc tính ám chỉ TÍNH TỪ, chỉ tính chất, đặc điểm của thực thể.
  • Mối quan hệ ám chỉ ĐỘNG TỪ.

Nhận diện được các đối tượng này, bạn sẽ dễ dàng bóc tách ngôn ngữ thường ngày của khách hàng thành các đối tượng trong ERD.

Lưu ý quan trọng: Quan hệ NHIỀU-NHIỀU thực chất là quan hệ 1-NHIỀU.

Quan hệ nhiều nhiều cần thực thể trung gianQuan hệ nhiều nhiều cần thực thể trung gian

Relational Database và Mối Liên Hệ Với ERD

Để hiểu rõ hơn về cách ERD hoạt động trong thực tế, cần nắm vững khái niệm Relational Database.

Relational Database là các database được tổ chức thành nhiều bảng, và giữa các bảng có quan hệ với nhau thông qua các khóa.

Table là gì?

Trong ERD, 1 table chính là 1 entity.

Table có các cộtdòng:

  • Cột là thuộc tính (attribute) của đối tượng.
  • Dòng là các “bản ghi” (record), là số lượng dữ liệu mà table lưu trữ.

Ví dụ, table Customer có thể có các cột như Last Name, First Name, Email… và nhiều dòng dữ liệu (records) tương ứng với thông tin của từng khách hàng.

Để phân biệt các record, ta cần khóa chính (Primary Key).

Khóa chính là một cột đặc biệt, duy nhấtkhông được trùng lặp, dùng để định danh mỗi bản ghi trong table.

Tiếp theo là khóa ngoại (Foreign Key).

Để liên kết các table, cần có điểm chung. Foreign Key chính là điểm chung đó. Nó là key dùng để liên kết 2 tables lại với nhau.

Foreign Key là Primary Key ở một table, nhưng lại là Foreign Key ở table khác liên kết đến.

Giải Nghĩa Các Mối Quan Hệ Trong Thực Tế

Sự khác biệt giữa quan hệ 1-1, 1-nhiềunhiều-nhiều trên hệ thống thực tế là gì?

Hãy xem xét ví dụ sau:

Giả sử có 4 entity: A, B, C, D với các attribute tương ứng.

Chúng có mối quan hệ:

  • D quan hệ 1-1 với A
  • A quan hệ 1-nhiều với B
  • B quan hệ nhiều-nhiều với C

Tuy nhiên, quan hệ nhiều-nhiều giữa B và C không thể trực tiếp, mà cần một entity trung gian.

Do đó, Entity E được thêm vào, nằm giữa B và C.

Bản chất quan hệ 1-nhiều là gì?

Ví dụ, A quan hệ 1-nhiều với B. Nghĩa là, 1 record A bao gồm rất nhiều record B. Hoặc, nhiều record B cùng liên kết đến 1 record A.

Để hình dung quan hệ 1-nhiều, hãy nghĩ đến cái LƯỚI hoặc BẢNG, vì chúng có rất nhiều DÒNG.

Nếu A quan hệ 1-nhiều với B, nghĩa là trên A có một cái LƯỚI hoặc một cái BẢNG chứa các dòng dữ liệu B.

Ví dụ đối chiếu giữa ERD và thực tế phần mềm:

(Slide Show có nút Pause chính giữa)

This slideshow requires JavaScript.

Để dễ hình dung, ta thay các entity giả định bằng các entity thực tế.

Mẹo xác định FK nhanh chóng:

Nếu 2 table quan hệ 1-nhiều, chỉ cần lấy PK của table ở đầu quan hệ 1, bỏ vào FK của table ở đầu quan hệ nhiều.

(Phần 2 tiếp tục với phần thực hành ERD chi tiết.)