Mối Quan Hệ Một-nhiều Trong Cơ Sở Dữ Liệu - LàM THẾ NàO ĐỂ 2022
Có thể bạn quan tâm
Mối quan hệ một-nhiều trong cơ sở dữ liệu xảy ra khi mỗi bản ghi trong Bảng A có thể có nhiều bản ghi liên kết trong Bảng B, nhưng mỗi bản ghi trong Bảng B chỉ có thể có một bản ghi tương ứng trong Bảng A. Mối quan hệ một-nhiều cơ sở dữ liệu là thiết kế cơ sở dữ liệu quan hệ phổ biến nhất và là trung tâm của thiết kế tốt.
Hãy xem xét mối quan hệ giữa một giáo viên và các khóa học mà họ dạy. Một giáo viên có thể dạy nhiều khóa học, nhưng khóa học sẽ không có cùng mối quan hệ với giáo viên.
Do đó, đối với mỗi bản ghi trong bảng Giáo viên, có thể có nhiều bản ghi trong bảng Khóa học. Đây là mối quan hệ một-nhiều: một giáo viên cho nhiều khóa học.
Tại sao thiết lập mối quan hệ một-nhiều là quan trọng
Để đại diện cho mối quan hệ một-nhiều, bạn cần ít nhất hai bảng. Hãy xem tại sao.
Có lẽ chúng tôi đã tạo ra một bảng mà chúng tôi muốn ghi lại tên và các khóa học đã dạy. Chúng tôi có thể thiết kế nó như thế này:
Teacher_ID | Tên giáo viên | Khóa học |
---|---|---|
Teacher_001 | Carmen | Sinh học |
Teacher_002 | Veronica | môn Toán |
Teacher_003 | Jorge | Anh |
Nếu Carmen dạy hai hay nhiều khóa học thì sao? Chúng tôi có hai lựa chọn với thiết kế này. Chúng tôi chỉ có thể thêm nó vào hồ sơ hiện tại của Carmen, như thế này:
Teacher_ID | Giáo viên_Tên | Khóa học |
---|---|---|
Teacher_001 | Carmen | Sinh học, Toán |
Teacher_002 | Veronica | môn Toán |
Teacher_003 | Jorge | Anh |
Tuy nhiên, thiết kế ở trên không linh hoạt và có thể gây ra sự cố sau này khi cố chèn, chỉnh sửa hoặc xóa dữ liệu.
Nó làm cho việc tìm kiếm dữ liệu trở nên khó khăn. Thiết kế này vi phạm nguyên tắc chuẩn hóa cơ sở dữ liệu đầu tiên, Biểu mẫu thông thường đầu tiên (1NF), trong đó nêu rõ rằng mỗi ô bảng phải chứa một phần dữ liệu rời rạc.
Một lựa chọn thiết kế khác có thể là chỉ cần thêm một bản ghi thứ hai cho Carmen:
Giáo viên_ID | Giáo viên_Tên | Khóa học |
---|---|---|
Teacher_001 | Carmen | Sinh học |
Teacher_001 | Carmen | môn Toán |
Teacher_002 | Veronica | môn Toán |
Teacher_003 | Jorge | Anh |
Điều này tuân thủ 1NF nhưng vẫn là thiết kế cơ sở dữ liệu nghèo vì nó giới thiệu dự phòng và có thể tạo ra một cơ sở dữ liệu rất lớn một cách không cần thiết. Quan trọng hơn, dữ liệu có thể trở nên không nhất quán. Ví dụ, nếu tên Carmen thay đổi thì sao? Người nào đó làm việc với dữ liệu có thể cập nhật tên của cô ấy trong một bản ghi và không cập nhật được trong bản ghi thứ hai. Thiết kế này vi phạm Biểu mẫu thông thường thứ hai (2NF), tuân thủ 1NF và cũng phải tránh sự dư thừa của nhiều bản ghi bằng cách tách các tập con dữ liệu thành nhiều bảng và tạo mối quan hệ giữa chúng.
Làm thế nào để thiết kế một cơ sở dữ liệu với mối quan hệ một-nhiều
Để thực hiện mối quan hệ một-nhiều trong bảng Giáo viên và Khóa học, chúng tôi chia bảng thành hai và liên kết chúng bằng khóa ngoài.
Ở đây, chúng tôi đã xóa cột Khóa học trong bảng Giáo viên:
Giáo viên_ID | Giáo viên_Tên |
---|---|
Teacher_001 | Carmen |
Teacher_002 | Veronica |
Teacher_003 | Jorge |
Và đây là bảng Khóa học. Lưu ý rằng khóa ngoại, Teacher_ID, liên kết khóa học với giáo viên trong bảng Giáo viên:
Mã khóa học | Tên khóa học | Teacher_ID |
---|---|---|
Course_001 | Sinh học | Teacher_001 |
Khóa học_002 | môn Toán | Teacher_001 |
Course_003 | Anh | Teacher_003 |
Chúng tôi đã phát triển mối quan hệ giữa các giáo viên và bảng khóa học sử dụng khóa ngoại.
Điều này cho chúng ta biết rằng cả Sinh học và Toán đều được dạy bởi Carmen và Jorge dạy tiếng Anh.
Chúng ta có thể thấy cách thiết kế này tránh được bất kỳ sự dư thừa nào có thể, cho phép các giáo viên riêng lẻ dạy nhiều khóa học và thực hiện mối quan hệ một-nhiều.
Cơ sở dữ liệu cũng có thể thực hiện mối quan hệ một-một và mối quan hệ nhiều-nhiều.
Từ khóa » Tách Quan Hệ Nhiều Nhiều
-
Tại Quan Hệ Nhiều-nhiều Ta Lại Chuyển Sang Nhiều-1-nhiều ?
-
Tạo Bảng (table) Theo Quan Hệ Nhiều - Sử Dụng HeidiSQL - Nền Tảng
-
Video: Tạo Mối Quan Hệ Nhiều đối Nhiều - Microsoft Support
-
Cách Xử Lý Mối Quan Hệ Nhiều-nhiều Trong Thiết Kế Cơ Sở Dữ Liệu
-
Hỏi Về Cách Xử Lí Quan Hệ Nhiều-nhiều Trong MySQL - Programming
-
Tổng Quan Về Mối Quan Hệ (relationships) Giữa Các Bảng Trong Access
-
Thắc Mắc - Quan Hệ Nhiều Nhiều Trong Biểu đồ Lớp (class Diagram)
-
Quan Hệ Nhiều - Nhiều Trong Entity Framework | Tự Học ICT
-
Chuẩn Hóa Cơ Sở Dữ Liệu Quan Hệ - Viblo
-
Mô Hình Quan Hệ - Thực Thể (Entity – Relationship Model) - Viblo
-
Bài 2: Các Khái Niệm Trong CSDL Quan Hệ - Giáo Trình FPT
-
NoSQL Là Gì? | Cơ Sở Dữ Liệu Phi Quan Hệ, Mô Hình ... - Amazon AWS
-
Mối Quan Hệ N-n Giữa Các Bảng Trong Access
-
Cách Tạo, Chỉnh Sửa Và Xóa Mối Quan Hệ Bảng Trong Microsoft Access