第六章 关系数据理论

6.1 问题的提出

关系模式由五部分组成,是一个五元组:R(U, D, DOM, F)

  • 关系名R是符号化的元组语义
  • U为一组属性
  • D为属性组U中的属性所来自的域
  • DOM为属性到域的映射
  • F为属性组U上的一组数据依赖

作为二维表,关系要符合一个最基本的条件:**每个分量必须是不可分开的数据项。**满足了这个条件的关系模式就属于第一范式(1NF)

数据依赖

  • 是一个关系内部属性与属性之间的一种约束关系
    • 通过属性间值的相等与否体现出来的数据间相互联系
  • 是现实世界属性间相互联系的抽象
  • 是数据内在的性质
  • 是语义的体现

数据依赖的主要类型

  • 函数依赖(Functional Dependency,简记为FD)
  • 多值依赖(Multi-Valued Dependency,简记为MVD)

函数依赖

Sname=f(Sno),Sdept=f(Sno)
即Sno函数决定Sname
Sno函数决定Sdept
记作Sno→Sname,Sno→Sdept

关系模式Student<U, F>中存在的问题

(1)数据冗余 浪费大量的存储空间

(2)更新异常(Update Anomalies)
数据冗余 ,更新数据时,维护数据完整性代价大。

(3)插入异常(Insertion Anomalies)

应该插入的数据未被插入

(4)删除异常(Deletion Anomalies)

原因
由存在于模式中的某些数据依赖引起的。
解决方法
用规范化理论改造关系模式来消除其中不合适的数据依赖

6.2 规范化

6.2.1 函数依赖

设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。

平凡函数依赖与非平凡函数依赖

X→Y,但Y⊈X则称X→Y是非平凡的函数依赖
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖

对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。

若X→Y,则X称为这个函数依赖的决定因素(Determinant)。
若X→Y,Y→X,则记作X←→Y。
若Y不函数依赖于X,则记作image-20201206193120151

完全函数依赖与部分函数依赖

在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 image-20201206193323216则称Y对X完全函数依赖,记作image-20201206193346340
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作image-20201206193420905

传递函数依赖

在R(U)中,如果X→Y(Y⊈X),image-20201206193539548,Y→Z,Z⊈Y, 则称Z对X传递函数依赖(transitive functional dependency)。记为:image-20201206193555601
注: 如果Y→X, 即X←→Y,则Z直接依赖于X,而不是传递函数依赖。

6.2.2 码

设K为R<U,F>中的属性或属性组合。若image-20201206193749705,则K称为R的一个候选码(Candidate Key)。
如果U部分函数依赖于K,即image-20201206193811678,则K称为超码 (Surpkey)。候选码是最小的超码,即K的任意一个真子集都不是候选码。
若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。

主属性与非主属性
包含在任何一个候选码中的属性 ,称为主属性 (Prime attribute)
不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)
全码:整个属性组是码,称为全码(All-key)

关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码

主码与外部码一起提供了表示关系间联系的手段

6.2.3 范式

范式是符合某一种级别的关系模式的集合。
关系数据库中的关系必须满足一定的要求。满足 不同程度要求的为不同范式。
范式的种类:

第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)

各种范式之间存在联系:image-20201206194058481
某一关系模式R为第n范式,可简记为R∈nNF。

一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)。

6.2.4 2NF

若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF

单属性候选码最低满足2NF

一个关系模式不属于2NF,会产生以下问题:
插入异常
如果插入一个新学生,但该生未选课,即该生无Cno,由于插入元组时,必须给定码值,因此插入失败。
删除异常
如果S4只选了一门课C3,现在他不再选这门课,则删除C3后,整个元组的其他信息也被删除了。
修改复杂
如果一个学生选了多门课,则Sdept,Sloc被存储了多次。如果该生转系,则需要修改所有相关的Sdept和Sloc,造成修改的复杂化。

出现这种问题的原因
例子中有两类非主属性:
一类如Grade,它对码完全函数依赖
另一类如Sdept、Sloc,它们对码不是完全函数依赖
解决方法:
用投影分解把关系模式S-L-C分解成两个关系模式
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)

6.2.5 3NF

设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,image-20201206200659588不成立,则称R<U,F> ∈ 3NF。

即不存在传递依赖

无非主属性码最少属于第三范式

非键属性不能依赖于其他非键属性

6.2.6 BCNF

BCNF是修正的第三范式,有时也称为扩充的第三范式。

设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。

BCNF的关系模式所具有的性质

  • 所有非主属性都完全函数依赖于每个候选码
  • 所有主属性都完全函数依赖于每个不包含它的候选码
  • 没有任何属性完全函数依赖于非码的任何一组属性

如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

  • 所有非主属性都完全函数依赖于每个候选码
  • 所有主属性都完全函数依赖于每个不包含它的候选码
  • 没有任何属性完全函数依赖于非码的任何一组属性

如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dl8YVzbQ-1608881374371)(C:\Users\12548\Documents\GitHub\Notebooks\课程笔记\数据库\第六章 关系数据理论.assets\image-20201206201224154.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值