基础知识
关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以減少系统中信息存储的冗余度,但又可方便地获取信息。
数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。函数依赖则是一种最重要、最基本的数据依赖。
函数依赖:设R(U)是属性集U上的关系模式,X和Y是U的子集。若R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的值不等,则称X函数决定Y或Y函数依赖于X,记作X->Y。
- 如果X->Y,但 Y ⊊ X Y\subsetneq X Y⊊X,则称X->Y是非平凡的函数依赖。如(Sno,Cno)->Sno。
- 如果X->Y,但 Y ⊆ X Y\subseteq X Y⊆X,则称X->Y是平凡的函数依赖。如(Sno,Cno)->Grade。
任何可能的关系:若X->Y,则X叫做决定因子;若X->Y,Y->X,则记做X<–>Y;若Y函数不依赖于X,则记作 X ≠ > Y X \neq> Y X=>Y。
常见的函数依赖:
- 完全函数依赖:在R(U)中,设X->Y,且对于X的任何一个真子集 X ′ X^{'} X′,都有 X ′ X^{'} X′不能决定Y,则称Y对X完全函数依赖。如(Sno,Cno)->Grade,但 S n o ≠ > G r a d e Sno \neq> Grade Sno=>Grade。
- 部分函数依赖:在R(U)中,设X->Y,但Y不完全依赖于X,则称Y对X部分函数依赖。
- 传递函数依赖:在R(U,F)中,如果X->Y, Y ⊊ X , Y ≠ > X Y\subsetneq X,Y \neq> X Y⊊X,Y=>X,Y->Z,则称Z对X传递函数依赖。如Sno->Sdept、Sdept->Mname,则Sno->Mname。
多值函数依赖:在R(U,F)中,其属性集为U。X、Y、Z是U的子集,并且Z=U-X-Y。当且仅当对R(U)的任何一个关系r,给定一对(x,z)的值,这组值仅仅决定于x值而与z值无关,则称“Y多值依赖于X”或“X多值决定Y”,记X->->Y。
多值依赖具有6种性质:
- 具有对称性。若X->->Y,则X->->Z,其中Z=U-X-Y。
- 传递性。若X->->Y,Y->->Z,则X->->Z-Y。
- 函数依赖可以看成是多值依赖的特殊情况。
- 若X->->Y,Y->->Z,则X->->YZ。
- 若X->->Y,Y->->Z,则X->-> Y ∩ Z Y\cap Z Y∩Z。
- 若X->->Y,Y->->Z,则X->->Z-Y。
Armstrong 公理系统:设关系模式R(U,F),其中U为属性集,F是U上的一组函数依赖,那么有一下推理规则:
- 自反律:若 Y ⊆ X ⊆ Z Y\subseteq X\subseteq Z Y⊆X⊆Z,则X->Y为F所逻辑蕴含。
- 增广率:若X->Y为F所逻辑蕴含,且 Z ⊆ U Z\subseteq U Z⊆U,则XZ->YZ为F所逻辑蕴含。
- 传递率:若X->Y和Y-Z为F所逻辑蕴含,则X->Z为F所逻辑蕴含。
- 合并规则:若X->Y,X->Z,则X->YZ为F所蕴含。
- 传递递率:若X->Y,WY->Z,则XW->Z为F所蕴含。
- 分解规则:若X->Y, Z ⊆ Y Z\subseteq Y Z⊆Y,则X->Z为F所蕴含。
最小函数依赖集:如果函数依赖集F满足下列条件,则称F为一个最小函数依赖集,或极小哈书依赖集或最小覆盖。
- F种任一函数依赖的右部仅有一个属性,即无多余的属性。
- F种不存在这样的函数依赖X->A,使得F与 F − { X − A } F-\{X-A\} F−{ X−A}等价,即无多余的函数依赖。
- F种不存在这样的函数依赖X->A,X有真子集Z使得F与 F − { X − > A } ∪ { Z − > A } F-\{X->A\}\cup \{Z->A\} F−{ X−>A}∪{ Z−>A},即去掉各函数依赖左边的多余属性。即不存在部分函数依赖。
函数闭包:在关系模式R(U,F)中被F逻辑蕴含的函数依赖的全体构成的集合称F闭包,记作 F + F^{+} F+。
求候选码:用图解法确定候选码:
- 将关系的函数依赖关系,用“有向图”的方式表示。
- 找出入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
- 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。
示例1:给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1->A2,A2->A3,A3->A2,A2->A4},R的候选关键字为A1。
示例2:关系R(A,B,C)满足下列函数依赖:F{B->C,B->A,A->BC},关系R的候选键为A和B。
规范化
示例:First(Sno,Sname,Status,City,Pno,Qty),F={Sno->Sname,Sno->Status,Status->City,(Sno,Pno)->Qty}
1NF(第一范式)
若关系模式R中,每个数据项都是不可再分的,则称R属于第一范式,简称1NF,记作 R ∈ 1 N F R\in 1NF R∈1NF。
1NF存在4个问题:
- 冗余度大。部分列可进行再分,部分列代表的信息量大。
- 引起修改操作的不一致性。由于部分列数据行数相同,进行更新会引起不一致。
- 插入异常。主码不能取空值或部分为空值,当插入时会异常。
- 删除异常。如果某个产品不销售了,删除后无法再找回该产品,但是该产品客观存在。
2NF(第二范式)
若关系模式 R ∈ 1 N F R\in 1NF R∈1NF,并且每一个非主属性都完全依赖于R的码,则称R属于第二范式,简称2NF,记作 R ∈ 2 N F R\in 2NF R∈2NF。也就是说,1NF基础上消除了非主属性对码的部分函数依赖。主要进行分解关系模式。如First关系分解为First1(Sno,Sname,Status,City)和First2(Sno,Pno,Qty)。
3NF(第三范式)
若关系模式R(U,F)中不存在这样的码X,属性组Y及非属性Z( Z ⊊ Y Z\subsetneq Y Z⊊Y)使得X->Y,(YKaTeX parse error: Undefined control sequence: \eq at position 1: \̲e̲q̲>X)Y->Z,则关系模式 R ∈ 3 N F R\in 3NF R∈

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



