第二正规化(2NF)是资料库正规化所使用的正规形式。规则是要求资料表里的所有资料都要和该资料表的(主键与候选键)有完全依赖关系:每个非键属性必须独立于任意一个候选键的任意一部分属性。如果有哪些资料只和一个键的一部份有关的话,就得把它们独立出来变成另一个资料表。如果一个资料表的键只有单个栏位的话,它就一定符合第二正规化。

一个资料表符合第二正规化若且唯若

  • 它符合第一正规化
  • 所有非键字段都不能是候选键非全体字段的函数

范例 编辑

有一个资料表记录了设备元件的资讯,如下所示:

元件来源
元件 ID (主键) 价格 供应商ID (主键) 供应商名称 供应商住址
65 59.99 1 Stylized Parts VA
73 20.00 1 Stylized Parts VA
65 69.99 2 ACME Industries CA

这个资料表的每个值都是单一值,所以它符合第一正规化。因为同一个元件有可能由不同的供应商提供,所以得把元件 ID 和供应商 ID 合在一起组成一个主键。

元件(关键词)和价格之间的关系很正确:同一个元件在不同供应商有可能会有不同的报价,所以价格确实和主键完全相关(完全依赖)。

另一方面,供应商的名称和住址就只和供应商 ID 有关(部分依赖),这不符合第二正规化的原则。仔细看就会发现 "Stylized Parts" 这个名称和 "VA" 这个住址重复出现了两次;要是它改名了或是被其他公司并购了怎么办?这时候最好把这些资料独立出新的资料表:

供应商
供应商 ID (主键) 名称 住址
1 Stylized Parts VA
2 ACME Industries CA

这么一来,原本的 "元件来源" 资料表就得要做相对应的改动:

元件来源
元件 ID (主键) 价格 供应商 ID(主键、非关键词)
65 59.99 1
73 20.00 1
65 69.99 2

检查资料表里的每个栏位,确认它们是不是都和关键词完全相关, 这样才能知道这个资料表是不是符合第二正规化; 如果不是的话,就把那些不完全相关的栏位独立出一个资料表。 接下来的步骤是要确保所有不是键的栏位都和彼此没有相依关系,这就叫做第三正规化

参考文献 编辑

外部链接 编辑