数据库范式

 

1NF(无重复列)

所有的域都应该是原子的,即每一列都是不可分割的数据项

 

2NF(消除部分子函数依赖)

 

假如:(学号,姓名,年龄,课程号,成绩,学分), primary key 为(学号, 课程号)

所以存在(学号,课程号) → (姓名,年龄,成绩,学分)

但该表不满足2NF,因为存在以下关系

(课程名称) →  (学分)

(学号) → (姓名,年龄)

即存在组合关键字中的字段绝对非关键字

 

3NF(消除传递依赖,非主属性)

 

假定:(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字"学号",因为存在如下决定关系:

(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)

这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:

(学号) → (所在学院) → (学院地点, 学院电话)

即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递依赖。

 

BCNF(消除候选关键字的传递依赖)

 

假设:(仓库ID, 存储物品ID, 管理员ID, 数量),且有一个管理员只在一个仓库工作;一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:

(仓库ID, 存储物品ID) →(管理员ID, 数量)

(管理员ID, 存储物品ID) → (仓库ID, 数量)

 

所以,(仓库ID, 存储物品ID)和(管理员ID, 存储物品ID)都是的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

(仓库ID) → (管理员ID)

(管理员ID) → (仓库ID)

数据库范式,布布扣,bubuko.com

数据库范式

上一篇:Oracle 关联并且批量修改


下一篇:SQL常用语法大全