Chuyển đổi Mô hình ER thành Mô hình Relational: Hướng dẫn cho Người mới bắt đầu
Xin chào các bạn, những pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị từ thế giới của các mô hình Entity-Relationship (ER) đến vùng đất của các mô hình Relational. Đừng lo lắng nếu bạn cảm thấy một chút lạc lối - chúng ta sẽ làm từng bước, và đến cuối cùng, bạn sẽ chuyển đổi các sơ đồ ER thành các khung công tác relation như một chuyên gia!
Tại sao chuyển đổi ER thành Relational?
Trước khi chúng ta bắt đầu, hãy nói về lý do chúng ta làm điều này. Hãy tưởng tượng bạn đang xây dựng một ngôi nhà. Mô hình ER giống như bản vẽ của bạn - nó cho bạn thấy bức tranh lớn. Nhưng để thực sự xây dựng ngôi nhà, bạn cần các kế hoạch chi tiết. Đó là khi mô hình Relational ra vào. Nó cung cấp cho chúng ta một cách cụ thể để triển khai thiết kế cơ sở dữ liệu của chúng ta trong các hệ thống quản lý cơ sở dữ liệu thực tế (DBMS).
Bây giờ, hãy gấp tay áo lên và bắt đầu!
Đ映射 Entitiy
Entitiy là gì?
Một entitiy giống như một "vật" trong thế giới cơ sở dữ liệu của chúng ta. Nó có thể là một người, một địa điểm, hoặc một vật thể - bất cứ điều gì chúng ta muốn lưu trữ thông tin về.
Làm thế nào để Đ映射 một Entitiy
Khi chúng ta đ映射 một entitiy sang mô hình relational, chúng ta tạo một bảng. Đó là đơn giản như vậy! Mỗi thuộc tính của entitiy trở thành một cột trong bảng.
Hãy xem một ví dụ:
Student |
---|
ID (PK) |
Name |
Age |
Major |
``` |
Ở đây, chúng ta đã đ映射 một entitiy 'Student' sang bảng 'Student'. 'ID' là khóa chính (PK), giúp xác định duy nhất mỗi sinh viên.
Một từ về Khóa chính
Hãy tưởng tượng một khóa chính như thẻ ID duy nhất của một sinh viên. Cũng như không có hai sinh viên nào có thể có cùng một thẻ ID, không có hai hàng trong bảng của chúng ta nên có cùng giá trị khóa chính.
Đmapping Mối quan hệ
Các mối quan hệ trong các mô hình ER cho thấy cách các entitiy được kết nối. Trong thế giới relational, chúng ta sử dụng các khóa ngoại để đại diện cho các kết nối này.
Mối quan hệ"One-to-Many"
Đây giống như một giáo viên và học sinh của họ. Một giáo viên có thể có nhiều học sinh, nhưng mỗi học sinh chỉ có một giáo viên (trong bối cảnh này).
| Teacher | | Student | |--------------| |--------------| | TeacherID(PK)| | StudentID(PK)| | Name | | Name | | Subject | | TeacherID(FK)|
Thấy 'TeacherID' trong bảng Student không? Đó là khóa ngoại (FK) của chúng ta. Nó tham chiếu đến TeacherID trong bảng Teacher, tạo ra mối quan hệ.
### Mối quan hệ "Many-to-Many"
Hãy nghĩ về học sinh và các khóa học. Một học sinh có thể tham gia nhiều khóa học, và một khóa học có thể có nhiều học sinh. Để làm điều này, chúng ta cần một bảng trung gian:
| Student | | Enrollment | | Course |
|--------------| |--------------| |--------------|
| StudentID(PK)| | StudentID(FK)| | CourseID(PK) |
| Name | | CourseID(FK) | | CourseName |
| | | Grade | | |
Bảng Enrollment kết nối Students và Courses, cho phép các mối quan hệ nhiều-nhiều.
Đmapping các Tập hợp Entitiy Yếu
Một entitiy yếu giống như một người bạn đồng hành - nó không thể tồn tại mà không có siêu nhân (entitiy mạnh). Trong ngôn ngữ cơ sở dữ liệu, nó không có khóa chính riêng của mình.
Giả sử chúng ta có 'Room' là một entitiy yếu của 'Building':
| Building | | Room | |--------------| |--------------| | BuildingID(PK)| | RoomNumber | | BuildingName | | Capacity | | | | BuildingID(FK)|
Khóa chính cho Room sẽ là sự kết hợp của BuildingID và RoomNumber.
## Đmapping các Entitiy Hierarchy
Các entitiy层级 là như cây gia đình trong thế giới cơ sở dữ liệu của chúng ta. Chúng ta có một số lựa chọn để đmapping chúng:
### 1. Cách tiếp cận Bảng Đơn
Chúng ta đặt tất cả mọi thứ trong một bảng:
| Person |
|--------------|
| PersonID(PK) |
| Name |
| Type |
| EmployeeID |
| StudentID |
Cách này hoạt động, nhưng có thể dẫn đến nhiều giá trị null.
2. Cách tiếp cận Bảng theo Loại
Chúng ta tạo một bảng cho loại cơ bản và các bảng riêng biệt cho mỗi loại con:
| Person | | Employee | | Student | |--------------| |--------------| |--------------| | PersonID(PK) | | PersonID(FK) | | PersonID(FK) | | Name | | EmployeeID | | StudentID | | | | Department | | Major |
Cách tiếp cận này linh hoạt hơn nhưng yêu cầu các phép nối để truy vấn.
### 3. Cách tiếp cận Bảng theo Loại Cụ Thể
Chúng ta tạo các bảng riêng biệt cho mỗi loại, lặp lại các thuộc tính chung:
| Employee | | Student |
|--------------| |--------------|
| PersonID(PK) | | PersonID(PK) |
| Name | | Name |
| EmployeeID | | StudentID |
| Department | | Major |
Cách tiếp cận này tránh được các giá trị null nhưng có thể dẫn đến sự trùng lặp dữ liệu.
Kết luận
Và thế là bạn đã có, các bạn! Chúng ta đã hành trình từ thế giới concept của các mô hình ER đến vùng đất cụ thể của các cơ sở dữ liệu relational. Nhớ rằng, thực hành là chìa khóa của sự hoàn hảo. Hãy thử tạo ra các sơ đồ ER của riêng bạn và chuyển đổi chúng thành các mô hình relational. Trước khi bạn biết điều gì, bạn sẽ nói thành thạo ngôn ngữ của cơ sở dữ liệu!
Tiếp tục học hỏi, tiếp tục phát triển, và quan trọng nhất, hãy vui vẻ với cơ sở dữ liệu của bạn. Đến gặp lại lần sau, chúc các bạn mã code vui vẻ!
Credits: Image by storyset