【问题标题】:Normalizing to 1NF without composite keys在没有复合键的情况下规范化为 1NF
【发布时间】:2013-04-22 00:32:40
【问题描述】:

通常说要达到 1nf,必须创建一个新实体,并且该实体必须有一个复合键

LeadID | leadDate | Name | DOB | streetAddress | city | state | residenceType

如果我要将streetAddress, city, state, residenceType 规范化为一个新实体,我将不得不立即创建一个新的主键。我不能使用LeadID,因为这意味着没有潜在客户就无法创建地址,这是不正确的。而且我不能使用streetAddress,因为街道不是很好的候选者(5123 glowsville way st. n ave。根本不是一个好钥匙)。

所以我不得不简单地为这个新实体创建一个密钥。这可以吗?

【问题讨论】:

  • “经常说要达到 1nf,必须创建一个新实体,并且该实体必须有一个复合键。” 我一直从事数据库行业超过20年。我以前从未听过任何人这么说。

标签: sql database database-design entity-relationship normalization


【解决方案1】:

First normal form 表示:

如果每个属性的域,则关系是第一范式 只包含原子值,每个属性的值包含 该域中只有一个值。

因此,除非您在 streetAddress 列中存储多条街道,否则您已经符合第一范式。

【讨论】:

    【解决方案2】:

    1NF 与复合键的存在无关。为了满足 1NF,表必须是关系的准确表示,因此必须至少有一个 候选键,它可能包括也可能不包括复合键。

    您可能想到了通用关系假设,这是数据库设计理论中的一个概念,有时用于通过分解来教授规范化。 URA 假设存在一个关系,从该关系可以通过无损分解获得所有所需的关系。通用关系通常具有复合键。请注意,URA 本身是有争议的,而且肯定是有问题的,但它是思考设计理论问题的一种方式。

    规范化理论从不要求引入新属性。原则上假定属性和依赖是给定的。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2023-03-18
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 2014-12-14
      • 2018-03-30
      • 2019-06-19
      相关资源
      最近更新 更多