# Join Dependency

**DOI:**https://doi.org/10.1007/978-1-4899-7993-3_1249-2

## Synonyms

## Definition

A *join dependency (JD)* over a relation schema *R*[*U*] is an expression of the form ®[*X*_{1},...,*X*_{n}], where *X*_{1} ∪ … ∪ *X*_{n} = *U*. An instance *I* of *R*[*U*] satisfies ®[*X*_{1},...,*X*_{n}] if \( I={\pi}_{X_1}(I)\ddot{\mathrm{I}}\dots \ddot{\mathrm{I}}{\pi}_{X_n}(I) \). In other words, an instance satisfies the join dependency if it is equal to the join of its projections on the sets of attributes *X*_{1},...,*X*_{n}. A multivalued dependency X→→Y is a special case of a join dependency on two sets, and can be expressed as ⋈ [*XY*, *X*(*U* − *XY*)] where *XY* represents *X* ∪ *Y*.

## Key Points

*lossless join*property, meaning that no information should be lost after the decomposition. In other words, the original database instance should be retrievable by joining the smaller relations, and this can be expressed by a JD. The following figure shows an instance of the relation schema

*R*[

*A*,

*B*,

*C*,

*D*] that satisfies the join dependency ⋈ [

*BC*,

*AB*,

*AD*].

Join dependencies are usually considered together with functional and multivalued dependencies (FDs and MVDs) in normalization. The implication problem of a JD from a set of JDs, MVDs, and FDs is known to be NP-hard. In addition, the implication problem of JDs cannot be axiomatized. That is, there is no sound and complete set of rules that can be used to check whether a dependency is implied by a set of JDs. However, there is a powerful tool, called *chase*, that could be used to reason about these dependencies in exponential time and space [1].

## Cross-References

## Recommended Reading

- 1.Abiteboul S, Hull R, Vianu V. Foundations of databases. Reading: Addison-Wesley; 1995.Google Scholar