Join Dependency

Challenge Inside! : Find out where you stand! Try quiz, solve problems & win rewards!

Learn via video course

DBMS Course - Master the Fundamentals and Advanced Concepts
DBMS Course - Master the Fundamentals and Advanced Concepts
By Srikanth Varma
Free
star5
Enrolled: 1000
DBMS Course - Master the Fundamentals and Advanced Concepts
DBMS Course - Master the Fundamentals and Advanced Concepts
Srikanth Varma
Free
5
icon_usercirclecheck-01Enrolled: 1000
Start Learning

Overview

The concept of Join Dependency is directly based on the concept of 5NF, or Fifth Normal Form. Similar to functional or multivalued dependency, join dependency is a constraint. It is satisfied only if and only if the relation concerned is the joining of a set of projections.

Scope

  • This article explains join dependency with the help of a suitable example.
  • It also explains the relationship between the fifth normal form and the join dependency, however we wouldn't be discussing either 4NF, or 5NF in detail.

What are Join Dependencies in DBMS?

A Join Dependency on a relation schema R, specifies a constraint on states, r of R that every legal state r of R should have a lossless join decomposition into R1R_1, R2R_2,..., RnR_n. In a database management system, join dependency is a generalization of the idea of multivalued dependency.

Let R be a relation schema and R1R_1, R2R_2,..., RnR_n be the decomposition of R, R is said to satisfy the join dependency (R1R_1, R2R_2,..., RnR_n), if and only if every legal instance r ( R ) is equal to join of its projections on R1R_1, R2R_2,..., RnR_n.

Example of Join Dependency

Suppose we have the following table R:

E_NameCompanyProduct
RohanComp1Jeans
HarpreetComp2Jacket
AnantComp3TShirt
  • We can break, or decompose the above table into three tables, this would mean that the table is not in 5NF!
  • The three decomposed tables would be:

1. R1: The table with columns E_Name and Company.

E_NameCompany
RohanComp1
HarpreetComp2
AnantComp3

2. R2: The table with columns E_Name and Product.

E_NameProduct
RohanJeans
HarpreetJacket
AnantTShirt

3. R3: The table with columns Company and Product.

CompanyProduct
Comp1Jeans
Comp2Jacket
Comp3TShirt

Note: If the natural join of all three tables yields the relation table R, the relation will be said to have join dependency.

Let's try to figure out whether or not R has join dependency.

Step 1- First, the natural join of R1 and R2:

E_NameCompanyProduct
RohanComp1Jeans
HarpreetComp2Jacket
AnantComp3TShirt

Step 2- Next, let's perform the natural join of the above table with R3:

E_NameCompanyProduct
RohanComp1Jeans
HarpreetComp2Jacket
AnantComp3TShirt

In the above example, we do get the same table R after performing the natural joins at both steps, luckily.

Therefore, our join dependency comes out to be: {(E_Name, Company ), (E_Name, Product), (Company, Product)}

Because the above-mentioned relations are joined dependent, they are not 5NF. That is, a join relation of the three relations above is equal to our initial relation table R.

Join Dependencies and Fifth Normal Form (5NF)

  • If a relation is in 4NF and does not contain any join dependencies, it is in 5NF.
  • To avoid redundancy, 5NF is satisfied when all tables are divided into as many tables as possible.

Conclusion: if a relation has join dependency, it won't be in 5NF.

When is a Join Dependency trivial?

A Join Dependency is trivial, if one of the relation schemas RiR_i in a join dependency (i.e. R1R_1, R2R_2,..., or RnR_n) is equal to the original relation R.

Conclusion

Let us now conclude what we studied in the article:

  • The table is in Join Dependency if it can be reproduced by connecting numerous tables and each of these tables has a subset of the table's attributes.
  • The relation between 5NF and Join Dependency is that a relation is in 5NF if it is in 4NF and does not have any join dependencies.
  • If one of the relation schemas RiR_i in a join dependency (i.e. R1R_1, R2R_2,..., or RnR_n) is equal to the original relation R, the join dependency is trivial.

Read More: