SQL基础(巧记范式)

第一范式介绍:

如果关系模式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)

posted @ 2018-02-11 22:09  木桩  阅读(280)  评论(0编辑  收藏  举报