# 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 '19 at 21:10

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.