Mối quan hệ Một-Nhiều trong Cơ sở dữ liệu

Mục lục:

Mối quan hệ Một-Nhiều trong Cơ sở dữ liệu
Mối quan hệ Một-Nhiều trong Cơ sở dữ liệu
Anonim

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 được 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 trong cơ sở dữ liệu là thiết kế cơ sở dữ liệu quan hệ phổ biến nhất và là trọng tâm của thiết kế tốt.

Cơ sở dữ liệu cũng có thể triển khai mối quan hệ một-một và mối quan hệ nhiều-nhiều.

Image
Image

Ví dụ về Mối quan hệ Một-Nhiều

Xem xét mối quan hệ giữa một giáo viên và các khóa học họ dạy. Một giáo viên có thể dạy nhiều lớp, 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. Ví dụ này minh họa 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ại quan trọng

Để biểu diễn mối quan hệ một-nhiều, bạn cần ít nhất hai bảng. Hãy xem tại sao.

Tuân thủ Thiết kế Mẫu Bình thường Đầu tiên

Có lẽ chúng tôi đã tạo một bảng trong đó 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ế bảng Giáo viên và Khóa học như sau:

Thầy_ID Thầy_Nhà Khoá
Thầy_001 Carmen Sinh học
Thầy_002 Veronica Toán
Thầy_003 Jorge Anh

Điều gì sẽ xảy ra nếu Carmen dạy hai khóa học trở lên? Chúng tôi có hai lựa chọn với thiết kế này. Chúng tôi có thể thêm nó vào hồ sơ hiện có của Carmen, như thế này:

Thầy_ID Thầy_Tên Khoá
Thầy_001 Carmen Sinh học, Toán
Thầy_002 Veronica Toán
Thầy_003 Jorge Anh

Tuy nhiên, thiết kế trên không linh hoạt và có thể dẫn đến sự cố sau này khi bạn chèn, chỉnh sửa hoặc xóa dữ liệu. Nó gây khó khăn cho việc tìm kiếm dữ liệu.

Thiết kế này cũng vi phạm nguyên tắc đầu tiên của việc chuẩn hóa cơ sở dữ liệu, Dạng chuẩn đầu tiên (1NF), trong đó nói rằng mỗi ô trong bảng phải chứa một phần dữ liệu rời rạc.

Quy tắc Dạng chuẩn Thứ hai

Một sự thay thế thiết kế khác có thể là thêm một kỷ lục thứ hai cho Carmen:

Giáo viên_ID Thầy_Tên Khoá
Thầy_001 Carmen Sinh học
Thầy_001 Carmen Toán
Thầy_002 Veronica Toán
Thầy_003 Jorge Anh

Cách tiếp cận này tuân theo 1NF nhưng vẫn là thiết kế cơ sở dữ liệu kém vì nó tạo ra sự dư thừa và có thể làm cồng kềnh một cơ sở dữ liệu 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 của Carmen thay đổi thì sao? Ai đó đang 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 nó trong bản ghi thứ hai.

Thiết kế này vi phạm tiêu chuẩn Dạng chuẩn thứ hai (2NF), tuân theo 1NF và cũng phải tránh dư thừa của nhiều bản ghi. Quy tắc 2NF đạt được điều này bằng cách tách các tập dữ liệu con thành nhiều bảng và tạo mối quan hệ giữa chúng.

Cách Thiết kế Cơ sở dữ liệu Với Mối quan hệ Một-Nhiều

Để triển khai mối quan hệ một-nhiều trong bảng Giáo viên và Khóa học, hãy chia các 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 Thầy_Tên
Thầy_001 Carmen
Thầy_002 Veronica
Thầy_003 Jorge

Và đây là bảng Khóa học. Lưu ý rằng khóa ngoại của nó, Teacher_ID, liên kết một khóa học với một giáo viên trong bảng Giáo viên:

Khóa_chỉ Khóa_tên Thầy_ID
Khóa_001 Sinh học Thầy_001
Khóa_002 Toán Thầy_001
Khoá_003 Anh Thầy_003

Chúng tôi đã phát triển mối quan hệ giữa Giáo viên và bảng Khóa học bằng cách sử dụng khóa ngoại. Sự sắp xếp này cho chúng ta biết Carmen dạy cả Sinh học và Toán học và Jorge dạy tiếng Anh.

Chúng ta có thể thấy cách thiết kế này tránh mọi sự dư thừa có thể xảy ra, cho phép từng giáo viên dạy nhiều khóa học và triển khai mối quan hệ một-nhiều.

Đề xuất: