它经常指出,要达到1nf,就必须创建一个新的实体,而该实体必须有一个复合密钥。
LeadID | leadDate | Name | DOB | streetAddress | city | state | residenceType
如果我要将streetAddress, city, state, residenceType规范化为一个新的实体,我就必须立即创建一个新的主键。我不能使用LeadID,因为这意味着没有引线就不能创建地址,这是不正确的。我不能使用streetAddress,因为街道不是很好的候选人(5123 glowsville way st。那条街。根本不是一个好钥匙)。
所以我不得不为这个新的实体创建一个密钥。这样行吗?
发布于 2013-04-28 10:24:24
1NF与复合键的存在无关。为了满足1NF,表必须是关系的精确表示,因此必须至少有一个候选键,其中可能包括或不包括复合键。
您可能会想到通用关系假设,这是数据库设计理论中的一个概念,有时用于通过分解教授规范化。市建局假设存在一个关系,所有期望的关系都可以通过无损分解得到。通用关系通常有一个复合键。请注意,市建局本身是有争议的,而且肯定是有问题的,但这是一种在设计理论上思考问题的方法。
规范化理论从来不要求引入新的属性。原则上,属性和依赖关系假定是给定的。
发布于 2013-04-28 06:53:35
First normal form的意思是:
如果每个属性的域仅包含原子值,而每个属性的值仅包含来自该域的单个值,则关系处于第一范式。
因此,除非您在streetAddress列中存储多条街道,否则您已经遵循了第一种范式。
https://stackoverflow.com/questions/16260069
复制相似问题