`

三范式

 
阅读更多

第一范式(1NF):

1、有关键字;

2、列不可分;

即不存在冗余数据,但实际情况实际分析。

 

第二范式(2NF):

当一个表里有多个字段作为主键时,非主键字段不能依赖于部分主键,即不能存在部分依赖。

符合第二范式的数据库表,消除了数据冗余、重新异常、插入异常和删除异常。

例如表结构如下:

aa_id  aa_name  host_id  host_name  user_name password

关键字<aa_id、host_id>

因为存在: 

aa_name  依赖aa_id

host_name  user_name password 依赖host_id 

所以不满足2NF

拆分成三个表:

aa:aa_id  aa_name

hosts:host_id  host_name  user_name password

installaa:aa_id  host_id 

 

第三范式(3NF):

在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y

例如单一关键字host_id 表:

host_id host_name room_number address phone

该表符合2NF

但host_id->room_number ->(address phone)

不符合3NF

拆成两个表:

host:host_id host_name room_number

room:room_number address phone

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics