Question

For a relation {A,B,C,D} with the following functional dependancies -

A -> BCD
B -> C
CD -> A

Using a particular method i found on one of the sites, i am getting the candidate key as ABCD. Is that right ? What is the correct candidate key(s) ?

Was it helpful?

Solution

ABCD is a trivial superkey. Every algorithm has to generate ABCD. But ABCD isn't a candidate key in this relation. By definition, a candidate key is a minimal superkey.

You can tell the algorithm in your link is inadequate by simple inspection. It doesn't generate A as a candidate key, but you're given A -> BCD, so A is clearly a candidate key. There are two more candidate keys besides A.

This SO answer by @ErwinSmout describes an algorithm that's suitable for pencil and paper. Most textbooks include algorithms that are suitable for automation.

OTHER TIPS

Lets make it simple: Here is a definition for Super,candidate keys

Super Keys

Super key stands for superset of a key.

A Super Key is a set of one or more attributes that are taken collectively and can identify all other attributes uniquely.

Candidate Keys

Candidate Keys are super keys for which no proper subset is a super key.

In other words candidate keys are minimal super keys.

By Closure property, we get

A+=ABCD

since

A->BCD given

A->A reflexivity rule

Thus A is the Candidate key.

Hope this helps!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top