选民(voter_id,voter_name,residential_address,current_city,current_state,current_postal_code)。
邮政编码对于每个城市和州都是唯一的,每个地址只有一个邮政编码。
在标准化术语中,选民是2nf还是3nf?
答案 0 :(得分:0)
通过BCNF进行规范化是基于功能依赖性。它基于列名称不,尽管这似乎是大学生根据他们在SO上的问题而被教授的。
我认为“voter_id”是一个代理键,但这只是教育的猜测。 (并且不是设计数据库的良好基础。)如果它是代理键,那么“voter_id”是唯一的,所以我们有这个FD。
你说,“邮政编码对每个城市和州来说都是独一无二的......”,所以我们也有这个FD。
最后,你说,“......每个地址只有一个邮政编码”。
根据我的经验,我认为你不太可能认为residential_address - > current_postal_code。我认为你的意思是residential_address,current_city,current_state - > current_postal_code。但我们已经知道current_city,current_state - > current_postal_code,所以这并没有告诉我们任何关于功能依赖的有用信息。
如果只有这两个功能依赖,那么“选民”的唯一候选键是“voter_id”。
2NF涉及部分密钥依赖性。 仅候选键是单列。因此,部分密钥依赖项不可存在。所以“选民”在2NF。
<3> 3NF关注传递依赖性。至少有一个:voter_id - &gt; current_city,current_state和current_city,current_state - &gt; current_postal_code。所以“选民”不在3NF。答案 1 :(得分:0)
要检查其最高正常形式,请按以下基本步骤操作:
首先重命名&#34; Voter&#34;的属性。为简单起见。 voter_id as&#34; A&#34; voter_name as&#34; B&#34; residential_address as&#34; C&#34; current_city as&#34; D&#34; current_state as&#34; E&#34; current_postal_code as&#34; F&#34;
根据给定的FD&#39>:{DE - &gt; F,C - &gt; F}
3.这些候选人钥匙是:{ABCDE}。
因此,
Prime属性(5):{A,B,C,D,E},
非Prime属性(1):{F}
对于2NF: &#34;不允许部分依赖&#34;。 均值,候选键的一部分不应该确定非素数属性。
这里,部分依赖关系是:{DE - &gt; F,C - &gt; F}
因此,此表不在2NF中。
**要进入2NF,关系应该像这样分解:
R1 = {DEF},
R2 = {CF}
R3 = {ABCDE}
希望这会有所帮助。有关如何分解表和所有内容的更多详细信息,您还可以参考:Detailed explanation of Normal forms