购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 关系规范化

3.2.1 1NF

在关系模式R的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,即不存在属性有子属性、表中含表的情况,则称R是第一范式的关系。记为R∈1NF。1NF是最基本的规范化,达到1NF的关系就属于规范化的关系。

如表3-1所示的关系模式R不满足1NF要求,去掉关系中的一级属性后得到新的关系模式R(SID, sname, college, MID, CID, password, balance, BID, bname, payamount, saledate)达到了1NF的要求,如表3-3所示。

表3-3 符合1NF要求的关系模式R

但是关系中的数据冗余、插入异常、删除异常和数据不一致问题依然存在,因此我们需要对关系进行更高级别的规范化处理。

3.2.2 2NF

根据部分函数依赖中属性的性质,我们把部分函数依赖分为非主属性对候选键的部分函数依赖和主属性对候选键的部分函数依赖。

关系模式R(U, F)满足1NF的要求且所有非主属性都完全函数依赖于R的任意一个候选键,则称关系模式R是第二范式,记为R∈2NF。在2NF的关系模式中不存在非主属性对任一候选键的部分函数依赖。

例3-1 把关系模式R(SID, sname, college, MID, CID, password, balance, BID, bname, payamount, saledate)规范为2NF。

先确定关系模式R的所有候选键。该模式的候选键有两个,分别是(SID, BID, saledate)和(CID, BID, saledate)。该模式中存在非主属性对键的部分函数依赖,需要把部分依赖的属性从现有模式中拆分出去,组成新的关系模式,如下所示。

3.2.3 3NF

根据传递函数依赖中属性的性质,我们把传递函数依赖分为非主属性对键的部分函数依赖和主属性对键的部分函数依赖。如果关系模式R(U, F)满足2NF的要求且所有非主属性对任何候选键都不存在传递函数依赖,则称关系模式R是第三范式,记为R∈3NF。

例3-2 student中的college和MID都是非主属性, 属于非主属性对候选键的传递函数依赖,因此student不属于3NF。将SID→college,college→MID拆分到两个关系模式中,分解后的两个关系模式都属于3NF,如下所示。

3.2.4 BCNF

3NF虽然可以对部分函数依赖、传递函数依赖进行分解,但仅局限于非主属性对候选键的函数依赖,在某些关系模式下仍会存在数据冗余和数据操纵异常等情况。Boyce和Codd提出并以他们的名字命名的BC范式(Boyce-Codd Normal Form,BCNF)比3NF又进了一步,人们通常认为它是修正后的3NF。

如果关系模式 R (U, F)中的所有非平凡的、完全的函数依赖的决定因素是键,则R属于BC范式,记为R∈BCNF。

BCNF要求关系模式R满足3NF且消除了主属性对任一候选键的部分函数依赖和传递函数依赖,即R中不仅所有非主属性对任何候选键都是完全函数依赖,而且所有主属性对每一个不包含它的候选键也是完全函数依赖,且R中没有任何属性完全函数依赖于非候选键的任何一组属性。

例3-3 设关系模式salebill(SID, CID, BID, payamount, saledate)的候选键为(SID,BID, saledate)和(CID, BID, saledate),主属性为SID、BID、CID和saledate,非主属性为payamount。存在(SID, BID, saledate) payamount、(CID, BID, saledate) payamount、(SID, BID, saledate) CID和(CID, BID, saledate) SID,该关系模式的非主属性只有一个,不存在非主属性对键的部分函数依赖和传递函数依赖,属于3NF,但存在主属性对不包含它的候选键的部分函数依赖,且不属于BCNF。

将关系模式R分解为以下两个关系模式:

salebill和SC中消除了主属性对不包含它的候选键的部分函数依赖后,不存在任何属性对候选键的部分函数依赖和传递函数依赖,属于BCNF。但是,得到的新关系模式SC (SID, CID)与数据库中原有的关系模式student (SID, CID, sname, college, MID)具有相同的键,表述的是同一个实体,应该合并。

在函数依赖的范畴内,BCNF实现了关系模式的彻底分离。

3.2.5 4NF

对于存在多值依赖的关系模式需要分解和优化。如果关系模式R(U, F)属于1NF,对于R的每个非平凡多值依赖X→→Y(Y⊈X),X都含有键,则称R属于第四范式,记为R∈4NF。

例3-4 授课关系(teacher, department, course)中teacher→→course是非平凡多值依赖,其决定因素teacher不含键,只是键的一部分,所以授课关系R不属于4NF。我们将其分解为两个属于4NF的关系模式,如表3-4和表3-5所示。

表3-4 教师-院系关系

表3-5 教师-课程关系

4NF虽然能消除非平凡多值依赖带来的数据冗余和数据操作异常的问题,但是我们没必要过度追求更高的规范化程度,因为关系模式分解得越彻底,查询数据时多表连接查询的可能性就越高。我们需要在关系模式的规范化与数据库的时间性能之间做好权衡,并非规范化程度越高越好。 lXNBKBysw7BcIpU+YrE4Ai7o721EPaMXSvQpvMZMOdGLSgd7U48+3Xrg72G5xauW

点击中间区域
呼出菜单
上一章
目录
下一章
×