Checking the normal form of the current table

dependenciesnormalization

I have a schema

R1(A,B,C,D)

with the following functional dependencies

A->B
CD->B
A->CD
CD->A

I need to figure out which is the highest normal form in which the following table exists. Here A is the primary key.

2NF- Since B, C and D are fully dependent on A, 2NF holds.

3NF-Since B,C and D are not transitively dependent on A. 3NF holds.

Since on the LHS of functional dependencies, there are only super keys, BCNF holds.

Is my solution fully correct? or am i lacking something? I feel this is not 100% correct. Here CD is also a key attribute so do I not need to check my non key attributes with it?

Best Answer

You are correct, the relation is in 2NF, 3NF, BCNF.

The reason is that the relation has two keys, A and CD.

So the relation is in BCNF (which is a property stronger than 3NF and 2NF) since each determinant of the minimal conver of R1 is a key. Here is one minimal cover:

A → C
A → D
C D → B
C D → A