第一范式为:如果一个关系(表)不包含重复组就称它是第一范式(1NF)的。
例:
订单号 订货日期 货号 订货数量 货物描述
12489 9/02/98 AX12 11 洗衣机
12491 9/03/98 BT04 1 冰箱
BZ66 3 电视机
12494 9/04/98 CX11 4 VCD
为非规范关系,将其改为
订单号 订货日期 货号 订货数量 货物描述
12489 9/02/98 AX12 11 洗衣机
12491 9/03/98 BT04 1 冰箱
12491 9/03/98 BZ66 3 电视机
12494 9/04/98 CX11 4 VCD
就转换为满足1NF的表
如果一个关系(表)是第一范式的,并且没有非关键字只依赖于主关键字的一部分,
就称它为第二范式(2NF)的。上表主关键字为(订单号 货号)
将上表变为
(订单号 订货日期 )
( 货号 货物描述 )
(订单号 货号 订货数量)
三个表后,就满足2NF
如果上面第一个表再多两个字段为
(订单号 订货日期 订货人代码 订货人姓名)
显然,订单号决定了所有其他的属性(即只要知道订单号,就可知其它字段的值)
所以订单号为主关键字段,并且满足2NF(主关键字只有一列,该表就自动为2NF)
但是仍然存在冗余问题。如下:
订单号 订货日期 订货人代码 订货人姓名
12489 9/02/98 03 陈强
12491 9/03/98 04 张明
12492 9/03/98 04 张明
12494 9/04/98 07 李伟
如果一个关系(表)是第二范式的,并且它所包含的决定者都是侯选关键字,那么就称它为
第三范式(3NF)的。
(任何可以决定其他属性的属性或属性集合被称为决定者)如上表有二个决定者
订单号和订货人代码,但订货人代码不是候选关键字(它不能做主关键字)
(候选关键字是一个具有和主关键字同样性质的属性的集合。即可用它做主关键字)
将上表改为
(订单号 订货日期 订货人代码)
(订货人代码 订货人姓名)二个表后,就满足3NF。