关系数据库设计范式

说到关系数据库设计难免想到范式这个问题,所谓范式简而言之就是约束关系数据库的设计模式。

首先对于1NF(第一范式)来说:就是一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。

什么是不可分的基本数据项呢?举个例子:例如学生(学号,姓名,课程号,成绩)在这里面学号、姓名、课程号、成绩都是不可分的基本数据项。

也只有满足了1NF范式的数据库模式才能被称为关系数据库

2NF(第二范式):若关系模式R∈1NF,并且每一个非主属性完全函数依赖于R的码,R∈2NF。简单解释下什么是非主属性?意思就是一个关系模式R中除了主属性其它属 性都是非主属性。当然什么是完全函数依赖这个才是理解2NF的关键!所谓完全函数依赖:在一个关系中,若某个非主属性数据项依赖于全部关键字称之为 完全函数依赖。举一个例子:例如成绩表(学号,姓名,课程号,成绩)关系中,学号决定学生的姓名即(姓名函数依赖学号),且成绩不函数依赖学号以 及不函数依赖课程号。所以成绩完全依赖(学号和课程号)从另一个角度来 理解:2NF是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性。

3NF(第三范式):如果R∈2NF,且它的任何一个非主属性都不传递函数依赖于任何主码,则R是第三范式,记作R∈3NF。传递函数依赖:在R中,对于属性X,Y,Z。若Y完全函数依赖于 X且Y不属于X,Z函数依赖于Y。则称为Z对X传递函数依赖。例如:在学生(学号,系别 号,系院名)这个关系中,系别号函数依赖于学号,而系院名函数依赖于系别号。

BCNF(特殊的第三范式):第三范式的扩展,消除主属性对码的部分和传递函数依赖。关系数据库设计范式_第1张图片

你可能感兴趣的:(数据库,2NF,3NF,1NF,BCNF)