这里只对第一范式,第二范式,第三范式与BCNF范式做了相应的总结。(用于自己理解)
1NF第一范式:属性(原子值)不可分割,即每个字段的值必须是单一的、不可再分的数据项。
例如:表中的有animal(动物)列,存放数据为{老虎,猫科,肉食}则这个列里的数据可拆分出来,即无法满足第一范式不可再分的数据项。
2NF第二范式:不存在非主属性对候选码的部分依赖,即所有非主键属性完全依赖于主键。
例如:候选码为AB,非主属性C。除了AB->C,还存在A ->C或B->C则不符合2NF。在数据库表中的体现为一张表就存储一种类型相关的信息,如学生表只存储学生信息不存储他的相关课程信息。
3NF第三范式:不存在非主属性对候选码的依赖,所有非主键属性不仅完全依赖于主键,且不传递依赖于其他非主键属性。
例如:候选码AB,非主属性D,有AB->C,C->D则不符合3NF。在数据库中的表现:如有一个表包含学号、课程号、教师职称等字段,而教师职称是通过教师ID与教师表关联的,那么这个表就不满足3NF,因为教师职称是通过教师ID传递依赖于学号和课程号的
BCNF范式:所有函数依赖的决定因素都必须是候选键.
例如:有Sno(学号),Cno(课程号),Grade(成绩)。他们之间存在
{Sno, Cno} → Grade,Sno → Cno,Cno → Sno。
{Sno, Cno}是候选键,所以第一个函数依赖{Sno, Cno}→Grade是符合BCNF要求的。Sno → Cno,Cno → Sno不符合,因为它们的决定因素Sno和Cno都不是候选键。
标签:候选,范式,Sno,数据库,简易,Cno,主键,属性 From: https://blog.csdn.net/m0_73436299/article/details/142457084