一、三范式概念
第一范式:当关系模式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 第三范式
第三范式要求所有的列都跟主键有直接关系而不是间接关系。例如学生所在的班级和班级所在的楼栋地址等关系,不应该设计成学生 - 班级 - 地址的关系,而应该是学生 - 班级和班级 - 地址,两者相互独立,应该拆开。
此处评论已关闭