Phụ thuộc đa dạng trong thiết kế cơ sở dữ liệu

Phụ thuộc đa giá trị phá vỡ biểu mẫu thứ tư bình thường

Trong một cơ sở dữ liệu quan hệ, sự phụ thuộc xảy ra khi thông tin được lưu trữ trong cùng một bảng cơ sở dữ liệu xác định duy nhất các thông tin khác được lưu trữ trong cùng một bảng. Sự phụ thuộc đa giá trị xảy ra khi sự hiện diện của một hoặc nhiều hàng trong một bảng ngụ ý sự hiện diện của một hoặc nhiều hàng khác trong cùng một bảng đó. Nói cách khác, hai thuộc tính (hoặc cột) trong một bảng độc lập với nhau, nhưng cả hai đều phụ thuộc vào thuộc tính thứ ba.

Một sự phụ thuộc đa giá trị ngăn cản hình thức bình thường chuẩn thứ tư (4NF). Cơ sở dữ liệu quan hệ theo năm dạng bình thường đại diện cho các nguyên tắc cho thiết kế bản ghi. Chúng ngăn chặn sự bất thường cập nhật và mâu thuẫn trong dữ liệu. Hình thức bình thường thứ tư đề cập đến các mối quan hệ nhiều-một trong một cơ sở dữ liệu .

Chức năng phụ thuộc so với phụ thuộc đa giá trị

Để hiểu một phụ thuộc đa giá trị, rất hữu ích để xem lại những gì một phụ thuộc chức năng là gì.

Nếu một thuộc tính X xác định duy nhất một thuộc tính Y, thì Y phụ thuộc vào chức năng trên X. Điều này được viết dưới dạng X -> Y. Ví dụ, trong bảng Sinh viên bên dưới, Student_Name sẽ xác định Chính:

Sinh viên
Tên học sinh Chính
Ravi Lịch sử Mỹ thuật
Beth Hóa học


Chức năng phụ thuộc này có thể được viết: Student_Name -> Major . Mỗi Student_Name xác định chính xác một Major, và không còn nữa.

Nếu bạn muốn cơ sở dữ liệu cũng theo dõi các môn thể thao mà các sinh viên này thực hiện, bạn có thể nghĩ cách dễ nhất để làm điều này là chỉ cần thêm một cột khác có tiêu đề Thể thao:

Sinh viên
Tên học sinh Chính Thể thao
Ravi Lịch sử Mỹ thuật Bóng đá
Ravi Lịch sử Mỹ thuật Bóng chuyền
Ravi Lịch sử Mỹ thuật Quần vợt
Beth Hóa học Quần vợt
Beth Hóa học Bóng đá


Vấn đề ở đây là cả Ravi và Beth đều chơi nhiều môn thể thao. Nó là cần thiết để thêm một hàng mới cho mỗi môn thể thao bổ sung.

Bảng này đã giới thiệu một sự phụ thuộc đa trị vì phần lớn và môn thể thao độc lập với nhau nhưng cả hai đều phụ thuộc vào học sinh.

Đây là một ví dụ đơn giản và dễ nhận biết, nhưng một sự phụ thuộc đa giá trị có thể trở thành một vấn đề trong một cơ sở dữ liệu phức tạp và lớn.

Một phụ thuộc đa giá trị được viết X -> -> Y. Trong trường hợp này:

Student_Name -> -> Chuyên ngành
Student_Name -> -> Thể thao

Điều này được đọc là "Student_Name multidetermines Major" và "Student_Name multidetermines Sport."

Một phụ thuộc đa giá trị luôn đòi hỏi ít nhất ba thuộc tính vì nó bao gồm ít nhất hai thuộc tính phụ thuộc vào một thuộc tính thứ ba.

Phụ thuộc đa trị và bình thường hóa

Bảng có phụ thuộc đa giá trị vi phạm tiêu chuẩn chuẩn hóa của Biểu mẫu thứ tư bình thường (4NK) vì nó tạo ra dư thừa không cần thiết và có thể đóng góp vào dữ liệu không nhất quán. Để đưa điều này lên đến 4NF, cần phải chia thông tin này thành hai bảng.

Bảng dưới đây bây giờ có một sự phụ thuộc chức năng của Student_Name -> Major, và không phụ thuộc đa giá trị:

Sinh viên & chuyên ngành
Tên học sinh Chính
Ravi Lịch sử Mỹ thuật
Ravi Lịch sử Mỹ thuật
Ravi Lịch sử Mỹ thuật
Beth Hóa học
Beth Hóa học

Trong khi bảng này cũng có một sự phụ thuộc chức năng duy nhất của Student_Name -> Sport:

Sinh viên & thể thao
Tên học sinh Thể thao
Ravi Bóng đá
Ravi Bóng chuyền
Ravi Quần vợt
Beth Quần vợt
Beth Bóng đá

Rõ ràng là bình thường hóa thường được giải quyết bằng cách đơn giản hóa các bảng phức tạp để chúng chứa thông tin liên quan đến một ý tưởng hoặc chủ đề đơn lẻ hơn là cố gắng tạo một bảng đơn chứa quá nhiều thông tin khác nhau.