在没有复合键的情况下归一化到1NF

时间:2013-04-28 05:52:46

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

经常声明要达到1nf,必须创建一个新实体,而实体必须有一个复合键

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

如果我要将streetAddress, city, state, residenceType规范化为新实体,那么我必须立即创建一个新的主键。我无法使用LeadID,因为这意味着无法在没有潜在客户的情况下创建地址,这是不正确的。而且我不能使用streetAddress因为街道不是好的候选人(5123 glowsville方式st.n ave。根本不是一个好的关键)。

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

2 个答案:

答案 0 :(得分:5)

First normal form表示:

  

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

因此,除非您在streetAddress列中存储多条街道,否则您已经遵守了第一张普通表格。

答案 1 :(得分:3)

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

可能你会想到 Universal Relation Assumption ,这是数据库设计理论中的一个概念,有时用于通过分解来教授规范化。 URA假定存在一种关系,通过非损失分解可以从中获得所有期望的关系。通用关系通常具有复合键。请注意,市建局本身是有争议的,绝对值得怀疑,但这是考虑设计理论问题的一种方法。

规范化理论绝对不需要引入新属性。原则上,假定属性和依赖关系是给定的。