1
$\begingroup$

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.

$\endgroup$
  • $\begingroup$ 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. $\endgroup$ – Renzo May 27 at 21:10
1
$\begingroup$

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.

$\endgroup$
  • 1
    $\begingroup$ That's a more efficient way to do this, I did the whole algorithmic procedure and came to BCNF after 20 minutes. Thank you! $\endgroup$ – Ski Mask May 28 at 19:45
  • $\begingroup$ And since it's in BCNF, it will also comply to 1NF, 2NF and 3NF. Correct? $\endgroup$ – Ski Mask May 28 at 20:17
  • $\begingroup$ @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. $\endgroup$ – Evil May 28 at 21:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.