Boyce Codd Normal Form (BCNF)

Boyce-Codd Normal Form (BCNF)

  • Boyce-Codd Normal Form or BCNF is an extension to the third normal form. It is also known as 3.5 Normal Form.
  • Rules for BCNF
    • For a table to satisfy the Boyce-Codd Normal Form, it should satisfy the following two conditions:
    • It should be in the Third Normal Form.
    • And, for any dependency A → B, A should be a super key.
    • The second point sounds a bit tricky, right? 
    • In simple words, it means, that for a dependency A → B, A cannot be a non-prime attribute, if B is a prime attribute.
  • Example:
    • Below we have a college enrolment table with columns student_id, subject and professor.
    • As you can see, we have also added some sample data to the table.
    • In the table above:
    • One student can enroll for multiple subjects. 
    • For example, a student with student_id 101, has opted for subjects - Java & C++
    • For each subject, a professor is assigned to the student.
    • And, there can be multiple professors teaching one subject like we have for Java.
  • What do you think should be the Primary Key?
    • Well, in the table above student_id, subject together form the primary key, because using student_id and subject, we can find all the columns of the table.
    • One more important point to note here is, one professor teaches only one subject, but one subject may have two different professors.
    • Hence, there is a dependency between subject and professor here, where subject depends on the professor name.
    • This table satisfies the 1st Normal form because all the values are atomic, column names are unique and all the values stored in a particular column are of same domain.
    • This table also satisfies the 2nd Normal Form as their is no Partial Dependency.
    • And, there is no Transitive Dependency, hence the table also satisfies the 3rd Normal Form.
    • But this table is not in Boyce-Codd Normal Form.
  • Why this table is not in BCNF?
    • In the table above, student_id, subject form primary key, which means subject column is a prime attribute.
    • But, there is one more dependency, professor → subject.
    • And while subject is a prime attribute, professor is a non-prime attribute, which is not allowed by BCNF.
  • How to satisfy BCNF?
    • To make this relation(table) satisfy BCNF, we will decompose this table into two tables, student table and professor table.
    • Below we have the structure for both the tables.
    • And now, this relation satisfy Boyce-Codd Normal Form. 
    • Other ways of BCNF

Thanks a lot for query or your valuable suggestions related to the topic.

Previous Post Next Post

Contact Form