# How to find highest normal form of a relation, given its functional dependencies

Let's say that I have a relational model, defined as:

$$X(A,B,C,D,E,F,G)$$ with the functional dependencies: $$f_1: \{A,B,C\} \to \{D,E,F,G\}$$ $$f_2: \{A,B\} \to \{C\}$$

Using this information I need to determine the highest normal form (for us it's BCNF) that this relation will go to. It's clear that the relation is already in it's atomic form, therefore it's already in it's first normal form. The to proceed to the second normal form, I found that the candidate key is $$\{A,B\}$$ and since all non prime attributes are fully dependent on the candidate keys, it's in the second normal form. But from this point I'm not sure where to go because all the non prime attributes (excluding $$C$$), $$D,E,F,G$$ are dependent on $$C$$ which is also a non prime attribute.

How can I separate this relation and proceed to the third normal form?

PS - I'm not sure if this is the right place to ask a database question but since the stack exchange for database is for professionals, I thought I should post it here. If someone knows a better stack exchange for this sort of a question, I'll transfer it over to that one.

• Your schema is already in third normal form as well as in Boyce-Codd normal form if the two dependencies are a cover of the dependencies of X. May 27, 2019 at 21:10

## 1 Answer

In your example $$C$$ is derived attribute from $$A, B$$, but none of: $$D, E, F, G$$ is more dependent on $$C$$ than $$A, B$$, or solely functionaly dependent on $$C$$, so there is no transitive dependency. Since you have 2NF it is in 3NF.

For BCNF it is sufficient to be in 3NF and do not have overlapping candidate keys, which you do not have, hence it is in BCNF.

• That's a more efficient way to do this, I did the whole algorithmic procedure and came to BCNF after 20 minutes. Thank you! May 28, 2019 at 19:45
• And since it's in BCNF, it will also comply to 1NF, 2NF and 3NF. Correct? May 28, 2019 at 20:17
• @SkiMask Yes, if it is BCNF then for sure it is 1NF, 2NF and 3NF, but implications in the answer took 2NF for granted, which is not much of a shortcut, but proving from scratch would be a bit longer.
– Evil
May 28, 2019 at 21:09