ERD (Entity – Relationship Diagram, Sơ đồ mối quan hệ thực thể) là một dạng trực quan của cơ sở dữ liệu quan hệ. Mọi người sử dụng ERD để mô hình hóa và thiết kế cơ sở dữ liệu quan hệ. Trong bài viết này, hãy cùng INDA Academy tìm hiểu về mô hình quan hệ và thực thể nhé.
Relational Database (Cơ sở dữ liệu quan hệ) là một loại cơ sở dữ liệu lưu trữ và cung cấp quyền truy cập vào các điểm dữ liệu bằng cách tổ chức dữ liệu thành các hàng và cột, gọi chung tạo thành một bảng.
Mục lục
ERD là gì? Entity-Relationship Diagram
Sơ đồ mối quan hệ thực thể (ERD) là một loại lưu đồ minh họa cách các “thực thể” như người, đối tượng hoặc khái niệm liên quan với nhau trong một hệ thống. Sơ đồ ERD thường được sử dụng để thiết kế hoặc gỡ lỗi trong relational database (cơ sở dữ liệu quan hệ) trong các lĩnh vực kỹ thuật phần mềm, hệ thống thông tin kinh doanh, giáo dục và nghiên cứu.
ERD sử dụng một tập hợp các ký hiệu như hình chữ nhật, hình thoi, hình bầu dục và các đường kết nối để mô tả tính liên kết của các thực thể, mối quan hệ và các thuộc tính của chúng.
Vai trò của Entity – Relationship Diagram trong quá trình thiết kế CSDL
Sơ đồ mối quan hệ thực thể (ERD) có thể coi là bản vẽ thiết kế của cơ sở dữ liệu. ERD cung cấp trực quan cho thiết kế cơ sở dữ liệu, và do đó, nó đóng những vai trò sau:
- Giúp xác định các yêu cầu hệ thống thông tin trong toàn tổ chức và giúp người dùng lập kế hoạch cách tổ chức dữ liệu. Nó hỗ trợ nhà phát triển cơ sở dữ liệu chuẩn bị trước khi bắt đầu xây dựng các bảng.
- Sơ đồ ERD có thể hoạt động như một tài liệu để làm cho những người khác hiểu được cốt lõi của cơ sở dữ liệu.
- Sơ đồ ERD phản ánh cấu trúc logic của cơ sở dữ liệu để người dùng nắm được.
Sau khi cơ sở dữ liệu quan hệ (relational database) được triển khai, ERD vẫn có thể đóng vai trò là điểm tham chiếu, nếu sau này cần thiết lập lại quy trình gỡ lỗi hoặc quy trình nghiệp vụ.
Các thành phần cơ bản của ERD
Mô hình quan hệ và thực thể bao gồm các entity (thực thể), attribute (thuộc tính) và relationship (mối quan hệ).
1. Thực thể và tập thực thể (Entity và Entity set)
Entity (Thực thể)
Entity (Thực thể) là bất cứ các đối tượng, sự vật hay sự việc nào. Một thực thể có thể là địa điểm, người, đối tượng, sự kiện hoặc một khái niệm, lưu trữ dữ liệu trong cơ sở dữ liệu.
Đặc điểm của các thực thể là phải có một thuộc tính và một khóa duy nhất. Mọi thực thể đều được tạo thành từ một số ‘thuộc tính’ đại diện cho thực thể đó.
Ví dụ về các Entity:
- Người: Nhân viên, Sinh viên, Bệnh nhân
- Địa điểm: Cửa hàng, Tòa nhà
- Đối tượng: Máy móc, sản phẩm và ô tô
- Sự kiện: Bán, Đăng ký, Gia hạn
Trong ERD, các Entity được phân loại là Thực thể mạnh (Strong entity) và Thực thể yếu (Weak entity). Một thực thể mạnh chỉ có thể được xác định bằng các thuộc tính của chính nó, trong khi một thực thể yếu thì không thể. Thực thể yếu là một loại thực thể không có thuộc tính khóa của nó. Nó có thể được xác định duy nhất bằng cách xem xét khóa chính của một thực thể khác. Vì vậy, các tập hợp thực thể yếu cần phải tham gia cùng các thực thể khác.
Lưu ý: Thực thể thường được hiển thị dưới dạng hình chữ nhật.
Entity set (Tập thực thể)
Entity set (Tập thực thể) là một nhóm các thực thể giống nhau. Nó có thể chứa các thực thể với những thuộc tính tương tự. Tất cả các thuộc tính đều có giá trị riêng biệt. Ví dụ, một thực thể sinh viên có thể có tên, tuổi, lớp, dưới dạng các thuộc tính.
2. Thuộc tính (Attribute)
Attributes (Thuộc tính) trong ERD là những đặc điểm đại diện cho một kiểu thực thể hoặc kiểu quan hệ nào đó.
Ví dụ: một bài giảng có thể có các thuộc tính: thời gian, ngày tháng, thời lượng, địa điểm, v.v.
Lưu ý: Một thuộc tính trong các ví dụ về ERD, được biểu thị bằng một hình Elip:
Các loại thuộc tính:
- Thuộc tính đơn giản (Simple attribute): Các thuộc tính đơn giản không thể được phân chia thêm nữa. Ví dụ: số liên lạc của sinh viên. Nó còn được gọi là giá trị nguyên tử.
- Composite (Thuộc tính tổng hợp): Thuộc tính tổng hợp có thể chia nhỏ được. Ví dụ: tên đầy đủ của học sinh có thể được chia thành họ, tên và họ.
- Thuộc tính có nguồn gốc (Derived attribute): Loại thuộc tính này không bao gồm trong cơ sở dữ liệu vật lý. Tuy nhiên, giá trị của chúng có nguồn gốc từ các thuộc tính khác có trong cơ sở dữ liệu. Ví dụ, tuổi không nên được lưu trữ trực tiếp. Thay vào đó, nó phải được lấy từ DOB của nhân viên đó.
- Thuộc tính nhiều giá trị (Multivalued attribute): Các thuộc tính nhiều giá trị có thể có nhiều giá trị. Ví dụ, một sinh viên có thể có nhiều hơn một số điện thoại di động, địa chỉ email, v.v.
Thuộc tính khóa
Thuộc tính khóa chính (Primary key)
Khóa chính là một loại thuộc tính riêng biệt xác định duy nhất một bản ghi trong bảng cơ sở dữ liệu. Nói cách khác, không được có hai (hoặc nhiều) bản ghi chia sẻ cùng một giá trị cho thuộc tính khóa chính.
Ví dụ ERD bên dưới hiển thị một thực thể ‘Sản phẩm’ có thuộc tính khóa chính ‘ID’ và bản xem trước các bản ghi bảng trong cơ sở dữ liệu. Bản ghi thứ ba không hợp lệ vì giá trị của ID ‘PDT-0002’ đã được sử dụng bởi một người khác.
Thuộc tính khóa ngoại (Foreign key)
Khóa ngoại là một tham chiếu đến chính khóa trong bảng. Nó được sử dụng để xác định các mối quan hệ giữa các thực thể. Khóa ngoại không cần thiết phải là duy nhất. Nhiều bản ghi có thể chia sẻ các giá trị giống nhau.
Ví dụ về ERD dưới đây cho thấy một thực tế có thể có một số cột, trong đó khóa ngoại lai được sử dụng để tham chiếu đến một thực thể khác.
3. Mối quan hệ (Relationship) giữa các tập thực thể
Relationship (mối quan hệ) là sự liên kết giữa hai hoặc nhiều thực thể.
Ví dụ, sinh viên được nêu tên có thể đăng ký một khóa học. 2 thực thể sẽ là sinh viên và khóa học, và mối quan hệ được mô tả là hành động ghi danh, kết nối hai thực thể theo cách đó.
Lưu ý: Các mối quan hệ thường được thể hiện dưới dạng kim cương hoặc nhãn trực tiếp trên các đường kết nối.
Lược đồ ERD
ERD thường được mô tả trong một hoặc nhiều mô hình sau:
- Conceptual data model (Mô hình dữ liệu khái niệm)
Cung cấp nền tảng cho các mô hình logic của dữ liệu hoặc chỉ ra các mối quan hệ tương đồng giữa các mô hình ERD. Từ đó làm cơ sở cho việc tích hợp mô hình dữ liệu.
Tuy nhiên nó lại thiếu chi tiết cụ thể nhưng cung cấp cái nhìn tổng quan về phạm vi của dự án và cách các tập dữ liệu liên quan với nhau.
- Logical data model (Mô hình dữ liệu logic)
Loại này chi tiết hơn mô hình dữ liệu khái niệm. Nó minh họa các thuộc tính và mối quan hệ cụ thể giữa các điểm dữ liệu. Trong khi mô hình dữ liệu khái niệm không cần được thiết kế trước mô hình dữ liệu lôgic, thì mô hình dữ liệu vật lý dựa trên mô hình dữ liệu lôgic.
- Physical data model (Mô hình dữ liệu vật lý)
Cung cấp bản thiết kế cho một biểu hiện vật lý – chẳng hạn như cơ sở dữ liệu quan hệ – của mô hình dữ liệu lôgic. Một hoặc nhiều mô hình dữ liệu vật lý có thể được phát triển dựa trên mô hình dữ liệu logic.
Các kiểu liên kết trong lược đồ E-R:
Sự liên kết trong lược đồ E-R có các kiểu sau:
- Quan hệ 1 – 1
Một thực thể từ tập thực thể X có thể được liên kết với nhiều nhất một thực thể của tập thực thể Y và ngược lại.
Ví dụ: Một sinh viên có thể đăng ký nhiều khóa học. Tuy nhiên, tất cả các khóa học đó đều có một dòng duy nhất quay lại một sinh viên đó.
- Quan hệ 1 – n
Một thực thể từ tập thực thể X có thể được liên kết với nhiều thực thể của tập thực thể Y, nhưng một thực thể từ tập thực thể Y có thể được liên kết với ít nhất một thực thể.
Ví dụ, một lớp học bao gồm nhiều sinh viên.
- Quan hệ n – 1
Nhiều thực thể từ tập thực thể X có thể được liên kết với nhiều nhất một thực thể của tập thực thể Y. Tuy nhiên, một thực thể từ tập thực thể Y có thể được liên kết hoặc không với nhiều thực thể từ tập thực thể X.
Ví dụ, nhiều học sinh thuộc cùng một lớp.
- Quan hệ n – n
Một thực thể từ X có thể được liên kết với nhiều thực thể từ Y và ngược lại.
Ví dụ: Sinh viên là một nhóm được liên kết với nhiều giảng viên và các thành viên trong giảng viên có thể được liên kết với nhiều sinh viên.
Xây dựng mô hình ERD
Để giúp các bạn hình dung cách xây dựng mô hình thực thể quan hệ ERD, chúng tôi sẽ đưa ra 1 ví dụ và trình bày cách làm theo từng bước ở dưới đây.
Ví dụ về Sơ đồ Mối quan hệ Thực thể:
Trong một trường đại học, một Sinh viên đăng ký các Khóa học. Một sinh viên phải được chỉ định cho ít nhất một hoặc nhiều Khóa học. Mỗi khóa học được giảng dạy bởi một Giảng viên duy nhất. Để duy trì chất lượng giảng dạy, một Giảng viên chỉ có thể cung cấp một khóa học
Bước 1: Xác định thực thể
Chúng ta có ba thực thể
- Student (Sinh viên)
- Course (Khóa học)
- Professor (Giảng viên)
Bước 2: Xác định mối quan hệ
Chúng ta có hai mối quan hệ sau
- Sinh viên học 1 khóa học
- Giảng viên cung cấp một khóa học
Bước 3: Nhận dạng mối liên kết
Theo như đề bài, chúng ta xác định mối ràng buộc giữa các thực thể là như sau:
- Một sinh viên có thể được chỉ định nhiều khóa học
- Một giáo sư chỉ có thể cung cấp một khóa học
Bước 4: Xác định các thuộc tính
Bạn cần nghiên cứu các tệp, biểu mẫu, báo cáo, dữ liệu hiện đang được tổ chức lưu trữ, dử dụng để xác định các thuộc tính. Bạn cũng có thể thực hiện các cuộc phỏng vấn với các bên liên quan khác nhau để xác định các thực thể. Ban đầu, điều quan trọng là xác định các thuộc tính mà không tham chiếu chúng với một thực thể cụ thể.
Khi bạn đã có danh sách các Thuộc tính, bạn cần tham chiếu chúng tới các thực thể đã xác định. Đảm bảo một thuộc tính được ghép nối với chính xác một thực thể. Nếu bạn cho rằng một thuộc tính phải thuộc về nhiều thực thể, hãy sử dụng một công cụ sửa đổi để làm cho nó trở thành duy nhất.
Sau khi tham chiếu xong, hãy xác định các Khóa chính. Nếu không có sẵn một khóa duy nhất, hãy tạo một khóa.
Thực thể | Khóa chính | Thuộc tính |
Student | Student_ID | StudentName |
Professor | Employee_ID | ProfessorName |
Course | Course_ID | CourseName |
Đối với Thực thể khóa học, các thuộc tính có thể là Thời lượng, Tín chỉ, Bài tập, v.v. Để dễ hiểu, chúng ta chỉ xem xét một thuộc tính.
Bước 5: Tạo sơ đồ ERD
Từ các bước trên chúng ta có thể vẽ lên 1 mô hình như sau về Sơ đồ Mối quan hệ Thực thể:
Kết luận
Bài viết này đã đưa ra nhiều thông tin về mô hình quan hệ thực thể (ERD) của relational database (cơ sở dữ liệu quan hệ). INDA Academy hi vọng là mọi người có thể hiểu được mô hình quan hệ thực thể (Entity-relationship Diagram) và áp dụng những kiến thức được chia sẻ trong bài viết này để tự tay thiết kế được một ERD.
Câu hỏi liên quan
1. Các thành phần chính của ERD là gì?
ERD bao gồm ba thành phần chính:
- Thực thể (Entities) đại diện cho các đối tượng thực trong hệ thống như khách hàng, đơn hàng.
- Thuộc tính (Attributes) là các đặc điểm của thực thể, ví dụ như tên, địa chỉ của khách hàng.
- Mối quan hệ (Relationships) chỉ cách các thực thể liên kết với nhau, ví dụ như mối quan hệ “mua hàng” giữa khách hàng và đơn hàng.
2. Có các loại ERD nào?
Có ba loại ERD phổ biến:
- ERD khái niệm (Conceptual ERD): Trình bày các mối quan hệ rộng và tổng quan.
- ERD logic (Logical ERD): Bao gồm thông tin chi tiết hơn về các thuộc tính và ràng buộc.
- ERD vật lý (Physical ERD): Mô tả chi tiết về cách các thực thể được lưu trữ trong cơ sở dữ liệu.
3. Có các ERD notation (ký hiệu) nào?
Các ký hiệu ERD phổ biến gồm:
- Chen Notation: Dùng hình elip và hình thoi để biểu thị các mối quan hệ.
- Crow’s Foot Notation: Sử dụng ký hiệu chân quạ cho mối quan hệ một-nhiều.
- IDEF1X Notation: Được dùng trong mô hình hóa các hệ thống phức tạp hơn, với các ký hiệu riêng biệt.
4. Xây dựng ERD như thế nào?
Bạn có thể tham khảo 5 bước xây dựng ERD như trong bài viết trên:
- B1: Xác định thực thể (entity)
- B2: Xác định mối quan hệ (relationship)
- B3: Nhận dạng mối liên kết
- B4: Xác định các thuộc tính
- B5: Xây dựng sơ đồ ERD
5. Công cụ phổ biến để tạo ERD?
- Các công cụ phổ biến để tạo ERD bao gồm:
- Lucidchart và Microsoft Visio cho các sơ đồ đơn giản đến phức tạp.
- MySQL Workbench và ER/Studio cho các sơ đồ cơ sở dữ liệu chi tiết.
Nguồn: Internet