经常声明要达到1nf,必须创建一个新实体,而实体必须有一个复合键。
LeadID | leadDate | Name | DOB | streetAddress | city | state | residenceType
如果我要将streetAddress, city, state, residenceType
规范化为新实体,那么我必须立即创建一个新的主键。我无法使用LeadID
,因为这意味着无法在没有潜在客户的情况下创建地址,这是不正确的。而且我不能使用streetAddress
因为街道不是好的候选人(5123 glowsville方式st.n ave。根本不是一个好的关键)。
所以我不得不简单地为这个新实体创建一个密钥。这好吗?
答案 0 :(得分:5)
如果每个属性的域,则关系为第一范式 仅包含原子值,每个属性的值包含 只有该域中的一个值。
因此,除非您在streetAddress
列中存储多条街道,否则您已经遵守了第一张普通表格。
答案 1 :(得分:3)
1NF与复合键的存在无关。为了满足1NF,表必须是关系的精确表示,因此必须至少有一个候选键,其中可能包含或不包含复合键。
可能你会想到 Universal Relation Assumption ,这是数据库设计理论中的一个概念,有时用于通过分解来教授规范化。 URA假定存在一种关系,通过非损失分解可以从中获得所有期望的关系。通用关系通常具有复合键。请注意,市建局本身是有争议的,绝对值得怀疑,但这是考虑设计理论问题的一种方法。
规范化理论绝对不需要引入新属性。原则上,假定属性和依赖关系是给定的。