DBMS NORMALIZATION 第二规范化形式
DBMS NORMALIZATION 2nd Normalization Form
选民(voter_id, voter_name, residential_address, current_city, current_state, current_postal_code).
每个城市和州的邮政编码都是唯一的,每个地址只有一个邮政编码。
在规范化方面,选民是 2nf 还是 3nf?
通过 BCNF 的规范化基于函数依赖性。它 不是 基于列名,尽管这似乎是大学生根据他们在 SO 上的问题被教授的内容。
我假设 "voter_id" 是代理键,但这只是有根据的猜测。 (这不是设计数据库的良好基础。)如果它是代理键,那么"voter_id"是唯一的,所以我们有这个FD。
- voter_id -> voter_name, residential_address, current_city, current_state, current_postal_code
你说,"Postal code is unique for each city and state . . .",所以我们也有这个FD
- current_city, current_state -> current_postal_code
最后,你说,“……每个地址只有一个邮政编码”。
根据我的经验,我认为您的意思不太可能是 residential_address -> current_postal_code。我想你的意思是 residential_address、current_city、current_state -> current_postal_code。但是我们已经知道 current_city、current_state -> current_postal_code,所以这并没有告诉我们任何关于函数依赖的有用信息。
如果只有这两个函数依赖,那么"voters"的唯一候选键就是"voter_id"。
2NF 与部分键依赖有关。 only 候选键是 single 列。因此,partial 关键依赖不能存在。所以 "voters" 在 2NF 中。
3NF 关注传递依赖。至少有一个:voter_id -> current_city、current_state 和 current_city、current_state -> current_postal_code。所以 "voters" 不在 3NF 中。
要检查其最高范式,请遵循以下基本步骤:
为了简单起见,首先重命名"Voter"的属性。
voter_id 作为 "A"
voter_name 作为 "B"
residential_address 作为 "C"
current_city 作为 "D"
current_state 作为 "E"
current_postal_code 作为 "F"
根据给定的 FD:{DE -> F , C -> F }
3.Here 候选键是:{ABCDE}。
因此,
素数属性(5):{A,B,C,D,E},
非 Prime 属性 (1):{F}
对于 2NF:
"Partial Dependencies are not allowed"。
意味着,候选键的一部分不应该确定非素数属性。
这里,部分依赖是:{DE -> F , C -> F }
所以,这个 table 不在 2NF 中。
**要进入2NF,关系应该像这样分解:
R1 ={DEF},
R2 = {CF}
R3 = {ABCDE}
希望这对您有所帮助。有关如何分解 table 等更多详细信息,您还可以参考:Detailed explanation of Normal forms
选民(voter_id, voter_name, residential_address, current_city, current_state, current_postal_code).
每个城市和州的邮政编码都是唯一的,每个地址只有一个邮政编码。
在规范化方面,选民是 2nf 还是 3nf?
通过 BCNF 的规范化基于函数依赖性。它 不是 基于列名,尽管这似乎是大学生根据他们在 SO 上的问题被教授的内容。
我假设 "voter_id" 是代理键,但这只是有根据的猜测。 (这不是设计数据库的良好基础。)如果它是代理键,那么"voter_id"是唯一的,所以我们有这个FD。
- voter_id -> voter_name, residential_address, current_city, current_state, current_postal_code
你说,"Postal code is unique for each city and state . . .",所以我们也有这个FD
- current_city, current_state -> current_postal_code
最后,你说,“……每个地址只有一个邮政编码”。
根据我的经验,我认为您的意思不太可能是 residential_address -> current_postal_code。我想你的意思是 residential_address、current_city、current_state -> current_postal_code。但是我们已经知道 current_city、current_state -> current_postal_code,所以这并没有告诉我们任何关于函数依赖的有用信息。
如果只有这两个函数依赖,那么"voters"的唯一候选键就是"voter_id"。
2NF 与部分键依赖有关。 only 候选键是 single 列。因此,partial 关键依赖不能存在。所以 "voters" 在 2NF 中。
3NF 关注传递依赖。至少有一个:voter_id -> current_city、current_state 和 current_city、current_state -> current_postal_code。所以 "voters" 不在 3NF 中。
要检查其最高范式,请遵循以下基本步骤:
为了简单起见,首先重命名"Voter"的属性。 voter_id 作为 "A" voter_name 作为 "B" residential_address 作为 "C" current_city 作为 "D" current_state 作为 "E" current_postal_code 作为 "F"
根据给定的 FD:{DE -> F , C -> F }
3.Here 候选键是:{ABCDE}。
因此,
素数属性(5):{A,B,C,D,E},
非 Prime 属性 (1):{F}
对于 2NF: "Partial Dependencies are not allowed"。 意味着,候选键的一部分不应该确定非素数属性。
这里,部分依赖是:{DE -> F , C -> F }
所以,这个 table 不在 2NF 中。
**要进入2NF,关系应该像这样分解:
R1 ={DEF},
R2 = {CF}
R3 = {ABCDE}
希望这对您有所帮助。有关如何分解 table 等更多详细信息,您还可以参考:Detailed explanation of Normal forms