关系模式的码与范式

本文详细介绍了数据库理论中的关键概念,包括候选码、外码和不同范式(如1NF、2NF、3NF和BCNF)。通过例子说明了如何判断关系模式是否满足这些范式,以及不满足时可能导致的问题,如插入异常、删除异常和修改复杂。此外,还探讨了不同范式在消除数据依赖问题上的作用和重要性。
摘要由CSDN通过智能技术生成

定义1:设K为R<U,F>中的属性或属性组合,若U对K完全函数依赖,则K为R的候选码。

定义2:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,也称外码。

注意:U是完全函数依赖于K,而不是部分函数依赖于K

一般地,如果U函数依赖于K,即K->U,则K称为超码。候选码是一类特殊的超码,即候选码的超集一定是超码,候选码的任何真子集一定不是超码。

若候选码多于一个,则选定其中的一个为主码。包含在任何一个候选码中的属性称为主属性;不包含在任何候选码中的属性称为非主属性或非码属性。最简单的情况,单个属性是码;最极端的情况,整个属性组是码,称为全码。

定义3:关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式,满足最低要求的叫第一范式,简称1NF。

定义4:若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则称R∈2NF。

所有单关键字的数据库表都符合2NF,因为不可能存在组合关键字,也就不可能存在非主属性部分依赖于主关键字。

例如:S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中Sloc为学生的住处,并且每个系的学生住在同一个地方。

S-L-C的码为(Sno,Cno),则函数依赖有:

(Sno,Cno)->Grade (完全依赖)

Sno->Sdept          ,(Sno,Cno)->Sdept(部分依赖)

Sno->Sloc             ,(Sno,Cno)->Sloc(部分依赖)

Sdept->Sloc

由于非主属性Sdept,Sloc并不完全函数依赖于码,因此不符合2NF

一个关系模式R不属于2NF,就会产生以下几个问题:

1.插入异常            2.删除异常             3.修改复杂

定义3:设关系模式R<U,F>∈1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Z不属于Y)使得X->Y,Y->Z成立,X不依赖于Y,则称R<U,F>∈3NF。

由定义可知,若R∈3NF,则每个非主属性既不传递依赖于码,也不部分依赖于码。也就是说,可以证明如果R∈3NF,则必属于2NF

例如:SC(Sno,Cno,Grade)   S-L(Sno,Sdept,Sloc),关系模式SC没有传递依赖,而S-L存在非主属性对码的传递依赖。

在S-L中,由Sno->Sdept,Sdept->Sloc,可得Sno->Sloc(传递),因此S-L不属于3NF,SC∈3NF

一个关系模式R若不是3NF,就会产生2NF类似问题。

定义4:关系模式R<U,F>∈1NF,若X->Y且Y不属于X时,X必含有码,则R<U,F>∈BCNF。

也就是说,关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>∈BCNF。

一个满足BCNF的关系模式有:

(1)所有非主属性对每一个码都是完全函数依赖。

(2)所有主属性对每一个不包含它的码也是完全函数依赖。

(3)没有任何属性完全函数依赖于非码的任何一组属性。

          由于R∈BCNF,按定义排除了任何属性对码的传递依赖与部分依赖,所以R∈3NF。但是若R∈3NF,R未必属于BCNF。

          3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个模式中的关系模式如果都能属于BCNF,那么在函数依赖范畴内它已经实现了彻底的分离,已消除插入和删除异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值