为什么我们不将所有关系分解为2属性关系?

时间:2014-11-11 02:37:41

标签: database database-normalization bcnf

如您所知,只有2个属性的所有关系都在BCNF中。

所以,问题是:为什么我们不将所有关系分解为2属性关系?

答案是:因为如果我们这样做,就无法实现无损加入。

你能给我一个答案的例子吗?给予一个关系,将它分解为一些2-attriute关系。然后,当我们加入它们时,数据就会丢失。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

有时你不能根据功能依赖关系将表分解为2个属性,我教授总是使用的经典例子是城市,州,邮政编码

FD{ city, state -> zip, zip->city}

分解关系R(城市,州,邮政编码)不具有依赖性保留。

防爆。你不能有两个表R(城市,州)和S(拉链,城市),因为城市,州是一个超级密钥,但它不确定表R中的拉链