第一范式介绍:
如果关系模式R中的所有属性都是基本属性,即每个属性都是不可分的,那么R属于第一范式
例:表中的高级职称人数(含有“教授”和“副教授”这两个基本属性组成),所以它不是基本属性,所有不属于第一范式。
第二范式简介:
如果R属于第一范式,且每个非主属性完全依赖于主码,就属于第二范式
例:score表中的(sno,cno,grade),主键由sno,cno 共同组成,grade完全依赖于主键,所以score表属于第二范式
S-L-C(sno,sname,ssex,sdept,sloc,cno,grade) 由于sname依赖于sno 而不是依赖于sno和cno的联合主键,所以S-L-C表不符合第二范式
分解主键,然后将只有主键构成的子集删除
S-L-C(sno,sname,ssex,sdept,sloc,cno,grade)
分解:
(sno,sname,ssex,sdept,sloc)
(cno)
(sno,cno,grade)
去除只有主键的子集
得:
(sno,sname,ssex,sdept,sloc)
(sno,cno,grade)
第三范式简介:
如果关系模型属于第二范式,且每个非主属性都不传递依赖于主码 ,则该关系模型R属于第三范式
例如:S-L(sno,sname,ssex,sdept,sloc)
其中 sdept依赖于sno,sloc依赖于sdept,所以存在传递依赖
固进行分解:
(sno,sname,ssex,sdept)
(sdept,sloc)
(sno,cno,grade)
BC范式简介:
这是一种为了解决第三范式的冗余性问题和更新的问题提出的
例子:
csz(city,street,zip)
城市,街道,邮编
zip依赖于(city、street)
city依赖于zip
所以进行分解
ZC(zip,city)
SZ(street,city)