- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Find the canonical cover of FD {A->BC, B->AC, C->AB} in DBMS

Canonical cover is called minimal cover which is called the minimum set of FDs. A set of FD FC is called canonical cover of F if each FD in FC is a Simple FD, Left reduced FD and Non-redundant FD.

**Simple FD** − X->Y is a simple FD if Y is a single attribute.

Left reduced FD: X->Y is a left reduced FD if there are no extraneous attributes in X.{extraneous attributes: let XA->Y then A is a extraneous attribute if X_>Y}

**Non-redundant FD** − X->Y is a Non-redundant FD if it cannot be derived from F- {X->y}.

## Problem

Find the canonical cover of FD {A->BC, B->AC, C->AB}.

## Solution

Relational schema R(A,B,C) F: {A->BC, B->AC, C->AB}

**Step 1** − Create a singleton right hand side

dependency A->BC will break into A->B, A->C.

F: { A->B A->C B->A B->C C->A C->B}

**Step 2** − Remove extraneous attributes if any exists.

F:{ A->B A->C B->A B->C C->A C->B} NO extraneous attributes exists

**Step 3** − Remove the redundant FD

F: { A->B A->C B->A B->C C->A C->B }

Remove B->A dependency and we can get A from B through B->C and C->A.

F= {A->B A->C B->C C->A C->B}

By removing C->B dependency we get B from C through C->A , A->B.

F={A->B B->C C->A A->C}

By removing A->C dependency we can determine C from A through A->B, B->C

**Step 4** − The final canonical cover is as follows −

FC ={ A->B, B->C, C->A } [A]+ =BC [B]+=AC [C]+=AB.

- Related Questions & Answers
- What is the minimal set of functional dependencies or canonical cover of FD?
- Find all pairs (a,b) and (c,d) in array which satisfy ab = cd in C++
- C++ Program to Implement a Heuristic to Find the Vertex Cover of a Graph
- How to create a B-Tree in DBMS?
- Larger of a^b or b^a in C++
- C++ program to Calculate the Edge Cover of a Graph
- Program to find N-th term of series a, b, b, c, c, c…in C++
- Find 2^(2^A) % B in C++
- Find FIRST & FOLLOW for the following Grammar. S → A a A | B b B A → b B B → ε
- Check which FD violates 3NF in a given relation and decompose R into 3NF(DBMS)
- Find A and B from list of divisors in C++
- Find multiple of x closest to or a ^ b (a raised to power b) in C++
- Find a palindromic string B such that given String A is a subsequence of B in C++
- Find the last digit when factorial of A divides factorial of B in C++
- Find the multiple of x which is closest to a^b in C++