Normalization Theory

# Lossless-Join Decomposition

I think this stuff is actually super useful in databases to prevent redundancy. But itβs actually a little hard to wrap my head around.

*Dependency-preserving* means that no info into the FD is lost when you split. An example which is not dependency preserving:

When you merge back, you should get the original info

I have no idea wtf is going on, but I basically when you do the lossless-join decomposition, you need to check that the intersection of these two relations form a key.

Lossless-Join Decomposition

A decomposition $R_{1},R_{2}$ of $R$ is a lossless-join decomposition if, for any instance of $R$, the natural join of $R_{1}$ and $R_{2}$ has no spurious tuples.

Theorem

A decomposition ${R_{1},R_{2}}$ of $R$ is a lossless-join decomposition if and only if the common attributes of $R_{1}$ and $R_{2}$ form a superkey for either schema, that is, either $R_{1}β©R_{2}βR_{1}$ or $R_{1}β©R_{2}βR_{2}$ is a logical consequence of the integrity constraints.