Chr*_*eta 4 database database-normalization
我对这些的非正式表述是:
1NF:表格被划分,以便任何项目都不会出现多次。
2NF:我需要一个明确的定义
3NF:值只能由主键确定。
我无法从网上或书中找到的摘录中理解它。如何区分 1NF 和 2NF?
维基百科说:
一个表是 2NF 当且仅当它是 1NF 并且表的每个非素数属性要么依赖于整个候选键,要么依赖于另一个非素数属性。
为了说明概念,让我们使用一个改编自Head First SQL的玩具清单表:
TOY_ID| STORE_ID| INVENTORY| STORE_ADDRESS
Run Code Online (Sandbox Code Playgroud)
主键由属性TOY_ID和组成STORE_ID。如果我们分析非素数属性,INVENTORY我们会发现 int同时依赖于TOY_ID和。STORE_ID这很酷。
另一方面,非主属性STORE_ADDRESS仅依赖于属性STORE_ID(即它与主键属性无关TOY_ID)。这明显违反了 2NF,因此为了遵守 2NF,我们的模式必须如下所示:
库存表:TOY_ID| STORE_ID| INVENTORY
和一个存储表:STORE_ID| STORE_ADDRESS