数据库中的第三范式(3Nf)

问题描述 投票:0回答:1
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?

database entity-relationship 3nf bcnf third-normal-form
1个回答
0
投票

回答你的第一个问题,关于删除冗余和优化数据库:

  1. 您可以通过为

    Country
    PLZ

    创建单独的表来删除数据库中的冗余
  2. 将关系分成不同的表以消除冗余,建议的方法如下:

  • 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

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.