Đáp án đúng: CĐể xác định khóa của quan hệ, ta cần tìm tập thuộc tính nhỏ nhất mà từ đó có thể suy dẫn ra tất cả các thuộc tính còn lại của quan hệ. Trong trường hợp này, ta có tập phụ thuộc hàm F = {C -> AB, D -> E, B -> G}.
Xét tập {H, C, D}:
- Từ C -> AB, ta suy ra C -> AB.
- Từ D -> E, ta suy ra D -> E.
- Từ B -> G, ta suy ra B -> G.
Kết hợp lại, {H, C, D} -> {H, C, D, A, B, E, G}. Vì quan hệ Ω = {A, B, C, D, E, G, H}, nên {H, C, D} là một siêu khóa.
Để kiểm tra xem {H, C, D} có phải là khóa hay không, ta cần kiểm tra các tập con của nó:
- {H, C}: Từ C -> AB, ta suy ra {H, C} -> {H, C, A, B}. Không suy ra được tất cả các thuộc tính.
- {H, D}: Từ D -> E, ta suy ra {H, D} -> {H, D, E}. Không suy ra được tất cả các thuộc tính.
- {C, D}: Từ C -> AB và D -> E, ta suy ra {C, D} -> {C, D, A, B, E}. Từ B -> G, ta suy ra {C, D} -> {C, D, A, B, E, G}. Không suy ra được tất cả các thuộc tính.
Vậy {H, C, D} là khóa của quan hệ.
Xét đáp án A: {B, C, A} không phải là khóa vì nó dư thừa (A có thể bỏ).
Xét đáp án B: Để xác định quan hệ có dạng chuẩn 3NF hay không, cần kiểm tra xem có thuộc tính không khóa nào phụ thuộc hàm bắc cầu vào khóa hay không. Do quan hệ đã cho có khóa {H,C,D} và các phụ thuộc hàm đã cho không vi phạm 3NF (vì không có thuộc tính không khóa nào phụ thuộc hàm vào một thuộc tính không khóa khác). Tuy nhiên, cần lưu ý là việc xác định dạng chuẩn đầy đủ yêu cầu phân tích tất cả các phụ thuộc hàm và khóa của quan hệ.
Vì vậy, đáp án C đúng.