我对这些的非正式陈述是:
1NF :表格已分割,因此不会多次出现任何项目。
2NF :?
3NF :值只能由主键确定。
我无法从网上或书中找到的摘录中理解它。如何区分1NF和2NF?
答案 0 :(得分:3)
如果每个非素数属性在功能上完全依赖于每个键,则关系模式为2NF。
答案 1 :(得分:1)
一个表在2NF中,当且仅当它在1NF和每个非素数时 表的属性要么取决于整个候选者 键,或另一个非主要属性。
为了解释这个概念,让我们使用一张表来查看从Head First SQL改编的玩具清单:
TOY_ID| STORE_ID| INVENTORY| STORE_ADDRESS
主键由TOY_ID和STORE_ID属性组成。如果我们分析非素数属性INVENTORY,我们会看到它同时依赖于TOY_ID和STORE_ID。那很酷。
但另一方面,非素数属性STORE_ADDRESS仅取决于STORE_ID属性(即它与主键属性TOY_ID无关)。这明显违反了2NF,所以要向2NF投诉我们的架构必须是这样的:
库存表:TOY_ID| STORE_ID| INVENTORY
和商店表:STORE_ID| STORE_ADDRESS
答案 2 :(得分:0)
某些列是键的一部分(主键或辅助键)。我们将这些主要属性称为
。对于第二种范式,我们将考虑非素数属性,并查看是否应将其移至另一个表。我们可能会发现,某些属性不需要完整密钥,因为我们可以识别至少一个候选密钥所拥有的值。也就是说,有一个候选键,即使删除了该候选键的一列中的值,我们仍然可以在给定候选键的情况下确定该属性的值。