一、三范式概念

第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。

第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。

第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。

二、理解三范式

2.1 第一范式

第一范式要求:

  • 每一列的属性都是不可再分的属性
  • 属性相近或者相似的,尽量合并成同一列

例如保存一个学生对象的信息时,学生信息表的设计:

这里的地址信息是可以拆分的:xx省 xx市 xx区,按照第一范式的准则,应该设计为:

2.2 第二范式

第二范式要求每一行的数据只与一列数据有关,数据中不能出现重复的项目,如果有就要把表拆开来。

如学生所在的班级信息:

表中可能会出现多个学生对应的班级信息都是一样的情况,此时class_id就会重复。应该把class_id和学生信息单独抽出来放在新表中。

2.3 第三范式

第三范式要求所有的列都跟主键有直接关系而不是间接关系。例如学生所在的班级和班级所在的楼栋地址等关系,不应该设计成学生 - 班级 - 地址的关系,而应该是学生 - 班级班级 - 地址,两者相互独立,应该拆开。

最后修改:2019 年 05 月 04 日
如果觉得我的文章对你有用,请随意赞赏