Cho R(ABCD) với tập các phụ thuộc hàm {ABàCD, DàCBA, CDàB}. R ở dạng chuẩn nào?
Trả lời:
Đáp án đúng: D
Để xác định dạng chuẩn của lược đồ quan hệ R(ABCD) với tập các phụ thuộc hàm đã cho, ta cần phân tích từng phụ thuộc hàm và kiểm tra xem chúng vi phạm các quy tắc của các dạng chuẩn BCNF, 3NF, 2NF hay không.
1. **AB → CD:** AB là siêu khóa (superkey) của R vì từ AB ta có thể suy ra CD, và do đó suy ra tất cả các thuộc tính của R (ABCD). Do AB là siêu khóa, phụ thuộc hàm này không vi phạm BCNF, 3NF và 2NF.
2. **D → CBA:** D không phải là siêu khóa. Vì vậy, ta cần kiểm tra xem phụ thuộc hàm này có vi phạm các dạng chuẩn hay không.
- **BCNF:** D → CBA vi phạm BCNF nếu D không phải là siêu khóa và CBA không phải là một tập con của D. Ở đây, D không phải siêu khóa và CBA không phải là tập con của D, nên vi phạm BCNF.
- **3NF:** D → CBA vi phạm 3NF nếu D không phải là siêu khóa và C, B, A không phải là thuộc tính khóa (thuộc tính nằm trong bất kỳ khóa nào). Để xác định thuộc tính khóa, ta xem xét các phụ thuộc hàm. Từ AB → CD và D → CBA, ta thấy AB là khóa (vì AB xác định tất cả các thuộc tính). Do đó, A và B là thuộc tính khóa. Tuy nhiên, C và D không phải là thuộc tính khóa (chưa chứng minh được). Vì A và B là thuộc tính khóa, D -> CBA vi phạm 3NF vì vế phải có thuộc tính không nguyên tố không phải là thuộc tính khóa.
- **2NF:** Để vi phạm 2NF, ta cần có phụ thuộc hàm bộ phận (partial dependency). Trong trường hợp này, ta không có phụ thuộc hàm bộ phận vì ta chỉ có một thuộc tính ở vế trái (D). Do đó, nó không vi phạm 2NF.
3. **CD → B:** CD không phải là siêu khóa. Vì B không phải là thuộc tính khóa, CD → B vi phạm BCNF và 3NF (tương tự như trường hợp D → CBA).
Vì có các vi phạm BCNF và 3NF, R không thể ở dạng BCNF hoặc 3NF. Tuy nhiên, nó có thể ở dạng 1NF hoặc 2NF. Vì không có vi phạm 2NF nên nó ở dạng 2NF.
Vậy, R ở dạng chuẩn 2NF.