2016-03-01 39 views
-2

选民(voter_id,voter_name,residential_address,current_city,current_state,current_postal_code)。DBMS NORMALIZATION第二规范化表格

邮政编码对于每个城市和州是唯一的,每个地址只有一个邮政编码。

在规范化方面,选民是在2nf或3nf?

+0

'voter_ID'是否是唯一的? – Pogrindis

+0

我认为这是1nf,因为城市,州和邮政编码可以被提取出来,而且你没有引用任何其他表格,所以它甚至不可能是2nf –

+0

我必须同意@ cricket_007的澄清:http:// i.imgur.com/Nz8cge9.jpg – Pogrindis

回答

0

要检查它的最高范式,按照这个基本步骤:

  1. 首先为了简单起见,重命名“选民”的属性。 voter_id为 “A” VOTER_NAME为 “B” residential_address为 “C” current_city为 “d” current_state为 “E” current_postal_code为 “F”

  2. 根据提供给FD的:{DE - > F,C - > F}

3.这里的候选键是:{ABCDE}。 因此,
总理属性(5):{A,B,C,d,E}, 非总理属性(1):{F}

对于2NF: “部分依赖不允许”。意思是,候选关键字的一部分不应该确定非主要属性。

这里,部分依赖是:{DE - > F,C - > F}

所以,这表不是2NF。

**要成2NF,关系应该是分解这样的:

R1 = {DEF},

R2 = {CF}

R3 = {ABCDE}

希望这可以帮助。有关如何分解表格以及所有表格的更多详细信息,您还可以参考:Detailed explanation of Normal forms

0

通过BCNF规范化基于功能依赖性。根据专栏名称,它是而不是,虽然这似乎是根据他们关于SO的问题来教授大学的学生。

我假设“voter_id”是替代关键,但这只是受过教育的猜测。 (这是而不是是设计数据库的良好基础。)如果它是代理键,那么“voter_id”是唯一的,所以我们有这个FD。

  • voter_id - > VOTER_NAME,residential_address,current_city,current_state,current_postal_code

你说, “邮政编码是每个城市和国家独特的。”,所以我们也有这样的FD。

  • current_city,current_state - > current_postal_code

最后,你说 “每个地址只有一个邮政编码”。

根据我的经验,我认为你的意思不大可能是你的居住地址 - > current_postal_code。我认为你的意思是residential_address,current_city,current_state - > current_postal_code。但是我们已经知道current_city,current_state - > current_postal_code,所以这并没有告诉我们关于函数依赖的任何有用信息。

如果只有这两个函数依赖关系,那么“选民”的唯一候选键是“voter_id”。

2NF涉及部分密钥依赖关系。 只有候选键是单个列。因此,部分键依赖关系不能存在。所以“选民”是在2NF。

3NF涉及传递依赖。至少有一个:voter_id - > current_city,current_state和current_city,current_state - > current_postal_code。所以“选民”不在3NF。