We know how to find candidate keys for a relation already, you can check here Finding Attribute Closure and Candidate Keys using Functional Dependencies. But here we will learn to find out the candidate keys for a sub relation which is a little bit different from that of finding out candidate keys for a relation. Let see how to find it.

**What is Functional dependency?**

A functional dependency is simply a constraint between two sets of attributes from the database. A functional dependency is used in normalization. A functional dependency is denoted by an arrow → . The functional dependency of A on B is represented by A → B. Functional Dependency plays a vital role in finding the difference between good and bad database design.

A→B

Above Functional dependency is pronounced as :

- A determines B
- A functionally determines B
- B is functionally dependent on A
- For a given value of A, we can functionally determine the value of B.

A and B can be a set of attributes, they need not be single attributes always.

Example : AB→B, A→ ACB etc.

With a given relation, we are also given a set of Functional dependencies most of the time according to the semantics of the database design.

Finding the candidate keys for Sub relations using Functional Dependencies:

To find out the candidate keys for a sub relation is a little bit different from that of finding out candidate keys for a relation. Let see how to find it.

In this problem, we generally have a table(universal table) or database and have some functional dependencies applied to the relation.

And we will break the table into smaller tables, and we need to find the candidate keys for the newly decomposed smaller tables.

**Example:.**

A relation R(ABCD) is given with functional dependencies F: { AB→CD, D→A }. Find out the candidate keys of the sub relation R'(BCD).

**Step-1:** Finding the closure of one valued attribute in sub relation:

**{B}+ =** B, cant derive all the attributes present in the sub relation i.e BCD, so its not a candidate key.

**{C}+ =** C, cant derive all the attributes present in the sub relation i.e BCD, so its not a candidate key.

**{D}+ =** D A, cant derive all the attributes present in the sub relation i.e BCD, so its not a candidate key.

**Step-2:** Finding the closure of two-valued attribute in sub relation:

**{BC}+ =** B C, cant derive all the attributes present in the sub relation i.e BCD, so its not a candidate key.

**{BD}+ =** B D A C, can derive all the attributes present in the sub relation i.e BCD, so its a candidate key.

**{CD}+ =** C D A, cant derive all the attributes present in the sub relation i.e BCD, so its not a candidate key.

**Step-3:** Finding the closure of three-valued attribute in sub relation:

**{BCD}+ =**, Not possible, since it’ll become the super key of BD.

Therefore, BD hast= the capacity to uniquely derive all the attributes present in the sub relation i.e BCD.

Therefore BD is the candidate key.

**Example-2:**

A relation R(ABCDE) is given with functional dependencies F: { A→BC, CD→E, B→D, E→A }. Find out the candidate keys of the sub relation R'(ABCE).

**Step-1:** Finding the closure of one valued attribute in sub relation:

**{A}+ =** A B C D E, can derive all the attributes present in the sub relation i.e ABCE, so its a candidate key

**{B}+ =** B D, cant derive all the attributes present in the sub relation i.e ABCE, so its not a candidate key

**{C}+ =** C, cant derive all the attributes present in the sub relation i.e ABCE, so its not a candidate key

**{E}+ =** A B C D E, can derive all the attributes present in the sub relation i.e ABCE, so its a candidate key

**Step-2:** Finding the closure of two valued attribute in sub relation:

A and E attribute can be include in 2 valued attribute, since their inclusion will make it super key.

**{BC}+ =** B C D E A

**Step-3:** Finding the closure of three valued attribute in sub relation:

Not possible, since it’ll become super key.

Therefore, A, E and BC has the capacity to uniquely derive all the attributes present in the sub relation i.e ABCE.

Therefore A, E and BC are the candidate key.

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

## Recommended Posts:

- Finding Attribute Closure and Candidate Keys using Functional Dependencies
- Finding Additional functional dependencies in a relation
- Equivalence of Functional Dependencies
- Canonical Cover of Functional Dependencies in DBMS
- Allowed Functional Dependencies (FD) in Various Normal Forms (NF)
- Mathematics | Closure of Relations and Equivalence Relations
- Types of Keys in Relational Model (Candidate, Super, Primary, Alternate and Foreign)
- Difference between Primary and Candidate Key
- Difference between Super Key and Candidate Key
- Mathematics | Introduction and types of Relations
- Mathematics | Representations of Matrices and Graphs in Relations
- Practice Set for Recurrence Relations
- Different types of recurrence relations and their solutions
- Number of possible Equivalence Relations on a finite set
- Discrete Mathematics | Types of Recurrence Relations - Set 2
- Discrete Mathematics | Representing Relations
- Minimum relations satisfying First Normal Form (1NF)
- Functional Dependency and Attribute Closure
- Armstrong's Axioms in Functional Dependency in DBMS
- Functional Completeness in Digital Logic

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.