Join Dependencies in DBMS
Last Updated :
18 Mar, 2024
Join Dependency (JD) can be illustrated as when the relation R is equal to the join of the sub-relations R1, R2,…, and Rn are present in the database. Join Dependency arises when the attributes in one relation are dependent on attributes in another relation, which means certain rows will exist in the table if there is the same row in another table. Multiple tables are joined to create a single table where one of the attributes is common in the sub-tables. We can also relate the join dependency to the 5th Normal Form. A join dependency is said to be not that important if any relational schemas in the join dependency are equivalent to the original relation R.
Join dependency on a database is denoted by:
R1 ⨝ R2 ⨝ R3 ⨝ ….. ⨝ Rn ;
where R1 , R2, … , Rn are the relations and ⨝ represents the natural join operator.
Types of Join Dependency
There are two types of Join Dependencies:
- Lossless Join Dependency: It means that whenever the join occurs between the tables, then no information should be lost, the new table must have all the content in the original table.
- Lossy Join Dependency: In this type of join dependency, data loss may occur at some point in time which includes the absence of a tuple from the original table or duplicate tuples within the database.
Example of Join Dependency
Suppose you have a table having stats of the company, this can be decomposed into sub-tables to check for the join dependency among them. Below is the depiction of a table Company_Stats having attributes Company, Product, Agent. Then we created sub-tables R1 with attributes Company & Product and R2 with attributes Product & Agent. When we join them we should get the exact same attributes as the original table.
Table: Company_Stats
Company
|
Product
|
Agent
|
C1
|
TV
|
Aman
|
C1
|
AC
|
Aman
|
C2
|
Refrigerator
|
Mohan
|
C2
|
TV
|
Mohit
|
Table: R1
Company
|
Product
|
C1
|
TV
|
C1
|
AC
|
C2
|
Refrigerator
|
C2
|
TV
|
Table: R2
Product
|
Agent
|
TV
|
Aman
|
AC
|
Aman
|
Refrigerator
|
Mohan
|
TV
|
Mohit
|
On performing join operation between R1 & R2:
R1 ⨝ R2
Company
|
Product
|
Agent
|
C1
|
TV
|
Aman
|
C1
|
TV
|
Mohan
|
C1
|
AC
|
Aman
|
C2
|
Refrigerator
|
Mohan
|
C2
|
TV
|
Aman
|
C2
|
TV
|
Mohit
|
Here, we can see that we got two additional tuples after performing join i.e. (C1, TV, Mohan) & (C2, TV, Aman) these tuples are known as Spurious Tuple, which is not the property of Join Dependency. Therefore, we will create another relation R3 and perform its natural join with (R1 ⨝ R2). So, here it is:
Table: R3
Company
|
Agent
|
C1
|
Aman
|
C2
|
Mohan
|
C2
|
Mohit
|
Now on doing natural join of (R1 ⨝ R2 ) ⨝ R3, we get
Company
|
Product
|
Agent
|
C1
|
TV
|
Aman
|
C1
|
AC
|
Aman
|
C2
|
Refrigerator
|
Mohan
|
C2
|
TV
|
Mohit
|
Now, we got our original relation, that we had earlier decomposed, in this way you can decompose the original relation and check for the join dependency among them.
Importance of Join Dependencies
Join dependency can be very important for several reasons as it helps in maintaining data integrity, possess normalization, helps in query optimization within a database. Let us see each point in a detail:
- Data Integrity: Join Dependency helps maintain data integrity in a database. Database designers can make sure that the queries are consistent after checking for the dependencies. Like in lossless join dependency no information is lost, which means data is accurate. This will remove the data that is not accurate. Similarly, a join dependency is a constraint that maintains data integrity.
- Query Optimization: Query optimization leads to improving the performance of the database system. The database designers can choose the best join order to execute the queries which in turn reduces the computational costs, memory utilization and i/o operations to get the queries executed quickly.
Conclusion
Join dependencies are fundamental concept in database management system that control how tables are joined in query processing. To understand these dependencies it is very essential to ensure data integrity, optimize query performance, and design efficient database schemas. By identifying and by addressing these dependencies, database designers can create systems that can efficiently manage and update data.
Frequently Asked Questions on Join Dependency – FAQs
How join dependency is different from functional dependency?
Join dependencies tell the relationship between multiple tables in a database, where functional dependency tell relationship within a single table only.
What are Join Dependencies in DBMS?
These are the constraints that tells the relationships among multiple tables in a database. There must be some common attribute or tuple in both the related tables.
Give an example of join dependency.
An example of join dependency is, Suppose we have a table Employee_Details which contains attributes like E_Name, Company, Product. Now we have another table E1 with attributes E_Name, Company; table E2 with attributes E_Name, Product; table E3 with attributes Company, Product; now when we join all these sub tables E1⨝E2⨝E3 this will be equal to Employee_Details table.
Share your thoughts in the comments
Please Login to comment...