Phụ thuộc hàm (Functional Dependency) là gì?
Phụ thuộc hàm trong DBMS, như tên gọi, là mối quan hệ giữa các thuộc tính của một bảng phụ thuộc lẫn nhau. Được giới thiệu bởi E. F. Codd, nó giúp ngăn chặn dư thừa dữ liệu và nhận ra thiết kế kém.
Để hiểu kỹ khái niệm, hãy xét P là một quan hệ với thuộc tính A và B. Phụ thuộc hàm được biểu diễn bằng → (dấu mũi tên).
Sau đây biểu diễn phụ thuộc hàm giữa các thuộc tính bằng dấu mũi tên:
| A → B |
Trên gợi ý:

Ví dụ
Ví dụ sau giúp dễ hiểu phụ thuộc hàm:
Chúng ta có bảng <Department> với hai thuộc tính: DeptId và DeptName.
| DeptId = Department ID DeptName = Department Name |
DeptId là khóa chính của chúng ta. Ở đây, DeptId xác định duy nhất thuộc tính DeptName. Điều này là vì nếu bạn muốn biết tên phòng ban, trước tiên bạn cần có DeptId.
| DeptId | DeptName |
| 001 | Finance |
| 002 | Marketing |
| 003 | HR |
Do đó, phụ thuộc hàm giữa DeptId và DeptName có thể xác định là DeptId phụ thuộc hàm vào DeptName:
| DeptId → DeptName |
Các loại Phụ thuộc hàm
Phụ thuộc hàm có ba dạng:
- Phụ thuộc hàm tầm thường (Trivial Functional Dependency)
- Phụ thuộc hàm không tầm thường (Non-Trivial Functional Dependency)
- Phụ thuộc hàm hoàn toàn không tầm thường (Completely Non-Trivial Functional Dependency)
Bắt đầu với Phụ thuộc hàm tầm thường:
Phụ thuộc hàm tầm thường (Trivial Functional Dependency)
Xảy ra khi B là tập con của A trong:
| A → B |
Ví dụ
Chúng ta xét cùng bảng <Department> với hai thuộc tính để hiểu khái niệm phụ thuộc tầm thường.
Sau đây là phụ thuộc hàm tầm thường vì DeptId là tập con của DeptId và DeptName:
| { DeptId, DeptName } → Dept Id |
Phụ thuộc hàm không tầm thường (Non-Trivial Functional Dependency)
Xảy ra khi B không phải là tập con của A trong:
| A → B |
Ví dụ
| DeptId → DeptName |
Trên là phụ thuộc hàm không tầm thường vì DeptName không phải tập con của DeptId.
Phụ thuộc hàm hoàn toàn không tầm thường (Completely Non-Trivial Functional Dependency)
Xảy ra khi giao của A và B là null trong:
| A → B |
Tính chất Ax-i-ôm của Armstrong (Armstrong's Axioms Property of Functional Dependency)
Tính chất Ax-i-ôm của Armstrong được phát triển bởi William Armstrong năm 1974 để suy luận về phụ thuộc hàm.
Tính chất gợi ý các quy tắc đúng nếu các điều kiện sau được thỏa mãn:
- Tính bắc cầu (Transitivity)
Nếu A→B và B→C, thì A→C tức là quan hệ bắc cầu. - Tính tự phản chiếu (Reflexivity)
A→B, nếu B là tập con của A. - Tính mở rộng (Augmentation)
Quy tắc cuối gợi ý: AC→BC, nếu A→B.