Chuẩn BCNF (Boyce-Codd Normal Form)
BCNF là phiên bản mạnh hơn một chút của dạng chuẩn 3 (3NF). BCNF được phát triển vào năm 1975 bởi Raymond F. Boyce và Edgar F. Codd để giải quyết một số loại dị thường không được xử lý bởi 3NF như được định nghĩa ban đầu.
Một quan hệ đạt chuẩn BCNF nếu mọi phụ thuộc hàm A -> B thì A luôn là một khóa ứng viên.
Để hiểu về chuẩn BCNF, xét bảng (quan hệ) SINH VIÊN sau:
Mã sinh viên | Môn học | Giảng viên |
10001 | Kế toán | An |
10001 | Toán | Bình |
10022 | Toán | Đông |
10333 | Kinh tế học | Khang |
10333 | Quản trị học | Hạnh |
14444 | Kế toán | An |
Một số quy định nghiệp vụ được áp dụng:
- Mỗi sinh viên có thể đăng ký học một hay nhiều môn học
- Mỗi giảng viên chỉ đảm nhiệm một môn học
- Mỗi môn học có thể được dạy bởi một hay nhiều giảng viên
Như vậy, Mã sinh viên không thể là khóa ứng viên vì giá trị của nó không duy nhất nhưng nếu kết hợp Mã sinh viên và Môn học hay kết hợp Mã sinh viên và Giảng viên có thể tạo thành các khóa ứng viên cho quan hệ SINH VIÊN. Mặc khác, theo quy định 2 ở trên, tồn tại một phụ thuộc hàm giữa giảng viên và môn học. Tóm lại, chúng ta có 3 phụ thuộc hàm sau:
- Mã sinh viên, Môn học -> Giảng viên
- Mã sinh viên, Giảng viên -> Môn học
- Giảng viên -> Môn học
Quan hệ SINH VIÊN là 3NF nhưng tồn tại phụ thuộc hàm Giảng viên->Môn học với thuộc tính Giảng viên không phải là khóa ứng viên và điều này vi phạm chuẩn BCNF. Giải quyết vi phạm trên bằng cách tách thành hai bảng (quan hệ) như sau
SINH VIÊN
Mã sinh viên | Môn học |
10001 | Kế toán |
10001 | Toán |
10022 | Toán |
10333 | Kinh tế học |
10333 | Quản trị học |
14444 | Kế toán |
GIẢNG VIÊN
Môn học | Giảng viên |
Kế toán | An |
Toán | Bình |
Toán | Đông |
Kinh tế học | Khang |
Quản trị học | Hạnh |
Kế toán | An |
Lúc này các quan hệ SINH VIÊN và GIẢNG VIÊN đạt chuẩn BCNF.
Dựa trên ví dụ trên, thử kiểm tra các quan hệ (bảng) từ hóa đơn có đáp ứng chuẩn BCNF hay không.
Các chuẩn cao hơn như 4NF, 5NF sẽ không đề cập trong tài liệu này.