三大范式
数据库设计原则也就是指数据库的三大范式
.
作用:是用来指导数据库设计人员的一种设计思想,保证数据库的设计是具备可拓展性,无数据的冗余,结构清晰简单明了.
-
1NF:原子性,也就是说表中任何一个列都是唯一的,不可再拆分的
R(id,name,age),此关系中name可以分为first_name和last_name,
所以,此设计不符合1NF,应该重新设计为:
R(id,first_name,last_name,age) -
2NF:在1NF的基础上,不存在非关键列部分依赖于关键列,也就是说所有的非关键列都必须完全依赖于关键列.
R(sno,sname,cno,cname,score)
由于以上不管是以哪一列作为关键列,都存在其他非关键列部分依赖
于关键列,所以此设计不符合2NF,应该重新设计为:
R1(sno,sname),存放学生信息的表
R2(cno,cname),存放课程信息的表
R3(sno,cno,score),存放学生与课程考试成绩的中间表 -
3NF:在2NF的基础上,不存在非关键列传递函数依赖于关键列,也就是说,所有的非关键列都必须直接依赖于关键列
如果A依赖于B,B依赖于C,我们就说A传递函数依赖于C
学生考入某所大学的信息表:
R(sno,sname,uno,uname,phone,address)
如果以sno作为关键列,sanme,uno是直接依赖于sno,但是uname,phone,
address这三列都是直接依赖于uno,间接依赖于sno,所以此设计不符合
3NF,应该重新设计为:
R1(sno,sname,uno),存放学生信息的表R2(uno,uname,phone,address);//存放学校的表