Consider the schema and the set of functional dependencies:

Use the 3NF decomposition algorithm to generate a 3NF decomposition of , and show your work. This means:

a. A list of all candidate keys.

b. A canonical cover for , along with an explanation of the steps you took to generate it.

c. The remaining steps of the algorithm, with explanation.

d. The final decomposition.


a. A list of all candidate keys.

Therefore, is a candidate key (minimal superkey).

I think is the only candidate key.

TODO: Prove it!

b. A canonical cover for , along with an explanation of the steps you took to generate it.

We use the algorithm given on Figure 7.9.

Set .

Use the union rule to replace any dependencies in of the form and with .

But looking at the functional dependencies given in we see that there are no such dependencies.

Now, we find a functional dependency in with an extraneous attribute either in or in . If an extraneous attribute is found, we delete it from in . We continue this iteration until does not change.

Looking at the functional dependency we see that is extraneous. Since the functional dependency can be inferred from the functional dependency by the Decomposition rule.

So the current state of looks like:-

We see that on the right hand side of the functional dependency is extraneous. So let’s delete that one. Then becomes:-

Attribute on the right hand side of the functional dependency is also extraneous. So becomes:-

By using the functional dependencies and Decomposition rule followed by Transitivity rule, it can be shown that holds. Thus we can delete the functional dependency .

Since we can not find any other extraneous attributes, we claim that is a canonical cover for .

c. The remaining steps of the algorithm, with explanation.

Define

Define



We see that none of the schemas contains a candidate key. Thus we define as:

Then we delete since .

Thus the follwing is a 3NF decomposition of our schema .

d. The final decomposition.