Customers(ID, VName, NName, Street, City, Country, ZIP-Code)
FCustomers = {
{ID} → {VName, NName, Street, City, Country, ZIP-Code},
{Street, City, Country} → {ZIP-Code},
{ZIP-Code} → {Country}
}
大家好,我的数据库中有以下关系。该关系属于 2NF(2 范式),但不属于第三范式,因为 {Straße, Stadt, Land} → {PLZ}, {PLZ} → {陆地}。我需要分解它们,以某种方式使其在 3NF 中,但我不知道如何连接它们。
如果有人可以建议我如何避免冗余并优化数据库,我会非常高兴。有没有可能,在你进行示例分解之后,这个 3NF 也将是 BCNF?
回答你的第一个问题,关于删除冗余和优化数据库:
您可以通过为
Country
和 PLZ
创建单独的表来删除数据库中的冗余
将关系分成不同的表以消除冗余,建议的方法如下:
Customers(ID, VName, NName, Street, City, ZIP-Code)
PostalCodes(Street, City, Country, PLZ)
Countries(ZIP-Code, Country)
关于你的第二个问题,即 BCNF: 不同表中的主键将确保 BCNF 如下所列(根据问题);
ID
Street
, City
, Country
ZIP-Code
希望这有帮助!