上一节 本书简介 下一节
第 23 章:数据库设计 作者:希赛教育软考学院 来源:希赛网 2014年01月27日
3NF
上一节 本书简介 下一节
第 23 章:数据库设计 作者:希赛教育软考学院 来源:希赛网 2014年01月27日
BCNF
R∈2NF.
为了说明问题,现举一个例子来说明。
有一个获得专业技术证书的人员情况登记表结构为:省份、姓名、证书名称、证书编号、核准
项目、发证部门、发证日期、有效期。
这个结构符合1NF,其中 "证书名称"和"证书编号"是主码,但是因为"发证部门"只完全依赖于"证
书名称",即只依赖于主关键字的一部分(即部分依赖),所以它不符合2NF,这样首先存在数据冗余,
因为证书种类可能不多。其次,在更改发证部门时,如果漏改了某一记录,存在数据不一致性。再
次,如果获得某种证书的职工全部跳槽了,那么这个发证部门的信息就可能丢失了,即这种关系不
允许存在某种证书没有获得者的情况。我们可以用分解的方法消除部分依赖的情况,而使关系达到
2NF的标准。方法是从现有关系中分解出新的关系表,使每个表中所有的非关键字都完全依赖于各
自的主关键字。我们可以将其分解成两个表,分别是:省份、姓名、证书名称、证书编号、核准项
目、发证日期、有效期,证书名称、发证部门。这样就完全符合2NF了。
版权方授权希赛网发布,侵权必究
如果一个关系R属于2NF,且每个非主属性不传递依赖于主属性,这种关系是3NF, 记做R∈3NF.
从2NF中消除传递依赖,就是3NF.比如有一个表(职工姓名,工资级别,工资额),其中职工
姓名是关键字,此关系符合2NF,但是因为工资级别决定工资额,也就是说非主属性"工资额" 传递依
赖于主属性"职工姓名",它不符合3NF,我们同样可以使用投影分解的办法将其分解成两个表:职工姓
名、工资级别,工资级别、工资额。
版权方授权希赛网发布,侵权必究
一般满足3NF的关系模式已能消除冗余和各种异常现象,能够获得比较满意的效果,但无论2NF
还是3NF都没有涉及主属性间的函数依赖,所以有时仍会引起一些问题。由此我们引入BC范式
(BCNF,Boyeet和Codd提出)。通常认为BCNF是第三范式的改进。
BC范式的定义:如果关系模式R∈1NF,且R中每一个函数依赖关系中的决定因素都包含码,则R
是满足BC范式的关系,记做R∈BCNF.
当一个关系模式R∈BCNF,则在函数依赖范畴里,就认为已彻底实现了分离,消除了插入、删除
的异常。
相关文档
评论