我对这些的非正式表示是:
1NF:表格被划分,因此没有项目会出现超过一次。
2NF:?
3NF:值只能由主键确定。
我无法从我在网上或书中找到的摘录中理解它。如何区分 1NF 和 2NF?
我对这些的非正式表示是:
1NF:表格被划分,因此没有项目会出现超过一次。
2NF:?
3NF:值只能由主键确定。
我无法从我在网上或书中找到的摘录中理解它。如何区分 1NF 和 2NF?
如果每个非主属性在功能上完全依赖于每个键,则关系模式属于 2NF。
维基百科说:
一个表在 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
某些列是键的一部分(主要或次要)。我们称这些主要属性。
对于第二范式,我们将考虑非主属性,看看是否应该将它们移动到另一个表中。我们可能会发现某些属性不需要完整的键,我们就能够识别它们对至少一个候选键持有什么值。也就是说,有一个候选键,即使该候选键的一列中的值被删除,我们仍然可以在给定候选键的情况下确定该属性的值。