Trong 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 thông tin khác được lưu trữ trong cùng một bảng. Phụ thuộc nhiều giá trị xảy ra khi sự hiện diện của một hoặc nhiều hàng trong 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 bảng độc lập với nhau, nhưng cả hai đều phụ thuộc vào thuộc tính thứ ba.
Sự phụ thuộc nhiều giá trị ngăn cản hình thức chuẩn hóa thứ tư của tiêu chuẩn chuẩn hóa. Cơ sở dữ liệu quan hệ tuân theo năm dạng thông thường đại diện cho các nguyên tắc thiết kế bản ghi. Chúng ngăn chặn sự bất thường của bản cập nhật và sự không nhất quán trong dữ liệu. Dạng chuẩn thứ tư xử lý các mối quan hệ nhiều-một trong cơ sở dữ liệu.
Phụ thuộc chức năng so với Phụ thuộc nhiều giá trị
Để hiểu sự phụ thuộc nhiều giá trị, sẽ rất hữu ích nếu bạn xem lại phụ thuộc hàm 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 hàm vào X. Điều này được viết là X -> Y. Ví dụ, trong bảng Sinh viên bên dưới, Tên sinh viên xác định Chuyên ngành:
Sinh_viên | Chính |
---|---|
Ravi | Lịch sử nghệ thuật |
Beth | Hóa |
Phụ thuộc hàm này có thể được viết: Student_Name -> Major. Mỗi Sinh viên_Nên xác định chính xác một Chuyên ngành và không nhiều hơn.
Nếu bạn muốn cơ sở dữ liệu cũng theo dõi các môn thể thao mà những học sinh này tham gia, 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 | Chính | Thể thao |
---|---|---|
Ravi | Lịch sử nghệ thuật | Bóng đá |
Ravi | Lịch sử nghệ thuật | Bóng chuyền |
Ravi | Lịch sử nghệ thuật | Tennis |
Beth | Hóa | Tennis |
Beth | Hóa | Bóng đá |
Vấn đề ở đây là cả Ravi và Beth đều chơi một số môn thể thao. Cần phải 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 sự phụ thuộc nhiều giá trị vì chuyên ngành và môn thể thao độc lập với nhau nhưng cả hai đều phụ thuộc vào sinh viên. Đây là một ví dụ đơn giản và dễ xác định, nhưng sự phụ thuộc nhiều giá trị có thể trở thành vấn đề trong cơ sở dữ liệu lớn và phức tạp.
Một phụ thuộc nhiều giá trị được viết X ->-> Y. Trong trường hợp này:
Sinh viên_Tên->-> Chuyên ngành
Sinh viên_Tên->- > Thể thao
Điều này được đọc là "Student_Name multidetermines Major" và "Student_Name multidetermines Sport."
Một phụ thuộc nhiều giá trị luôn yêu cầu í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 phần ba.
Phụ thuộc nhiều giá trị và Bình thường hóa
Một bảng có phụ thuộc nhiều giá trị vi phạm tiêu chuẩn chuẩn hóa của dạng chuẩn thứ tư vì nó tạo ra dư thừa không cần thiết và có thể góp phần tạo ra dữ liệu không nhất quán. Để đưa giá trị này lên tới 4NF, cần phải chia thông tin này thành hai bảng.
Bảng dưới đây hiện có phụ thuộc hàm là Student_Name -> Major và không có phụ thuộc nhiều giá trị:
Sinh_viên | Chính |
---|---|
Ravi | Lịch sử nghệ thuật |
Ravi | Lịch sử nghệ thuật |
Ravi | Lịch sử nghệ thuật |
Beth | Hóa |
Beth | Hóa |
Trong khi bảng này cũng có một phụ thuộc hàm duy nhất là Student_Name -> Sport:
Sinh_viên | Thể thao |
---|---|
Ravi | Bóng đá |
Ravi | Bóng chuyền |
Ravi | Tennis |
Beth | Tennis |
Beth | Bóng đá |
Việc chuẩn hóa thường được thực hiện 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ủ đề duy nhất thay vì cố gắng tạo một bảng duy nhất chứa quá nhiều thông tin khác nhau.