数据库
首页 > 数据库> > 【2019-2020春学期】数据库作业15:第六章: 关系数据理论

【2019-2020春学期】数据库作业15:第六章: 关系数据理论

作者:互联网

关系数据库逻辑设计
· 针对具体问题,如何构造一个适合于它的数据模式

数据库逻辑设计的工具──关系数据库的规范化理论

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

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

主要类型:
1、函数依赖(Functional Dependency,简记为FD)
2、多值依赖(Multi-Valued Dependency,简记为MVD)

1、函数依赖普遍存在于现实生活中

描述一个学生关系,可以有学号、姓名、系名等属性。
(1)一个学号只对应一个学生,一个学生只在一个系中学习
(2)“学号”确定后,学生姓名及所在系的值就被唯一确定。

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

函数依赖

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

若X→Y,并且Y→X, 则记为X←→Y。
若Y不函数依赖于X, 则记为X↛YX \not\rightarrow YX​→Y。

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

对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。
若不特别声明, 我们总是讨论非平凡函数依赖。

定义6.2
在R(U)中,如果X→Y,并且对于X的任何一个真子集 X’, 都有 X’ ↛ Y, 则称Y对X 完全函数依赖,记作
XFYX\overset F \rightarrow YX→FY。
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XPYX\overset P \rightarrow YX→PY。

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

定义6.4
设K为R<U,F>中的属性或属性组合。若KFUK\overset F \rightarrow UK→FU,则K称为R的一个候选码(Candidate Key)。

如果U部分函数依赖于K,即KPUK\overset P \rightarrow UK→PU,则K称为超码
候选码是最小的超码,即K的任意真子集都不是候选码。

若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。

主属性与非主属性
包含在任何一个候选码中的属性 ,称为主属性
不包含在任何码中的属性称为非主属性

整个属性组是,称为全码(All-key)

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

范式

范式是符合某一种级别的关系模式的集合。
种类:
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)

各种范式之间存在联系
1NF2NF3NFBCNF4NF5NF1NF \supset 2NF\supset 3NF\supset BCNF\supset 4NF\supset 5NF1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF
某一关系模式R为第n范式,可简记为R∈nNF。

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

2NF

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

一个关系模式不属于2NF,会产生以下问题:
(1)插入异常
(2)删除异常
(3)修改复杂

出现这种问题的原因:
有两类非主属性

解决方法:
用投影分解把该关系模式分解成两个关系模式

3NF

定义6.7
设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立,则称R<U,F> ∈ 3NF
SC没有传递依赖,因此SC ∈ 3NF
S-L中Sno →Sdept( Sdept ↛ Sno), Sdept→Sloc,可得SnoSlocSno \overset 传 \rightarrow SlocSno→传Sloc。
解决的办法(是将S-L分解成
S-D(Sno,Sdept)∈ 3NF
D-L(Sdept,Sloc)∈ 3NF

BCNF

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

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

定义6.9
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。

平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=Ф,则称X→→Y为平凡的多值依赖。
否则称X→→Y为非平凡的多值依赖。

定义6.10
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF

如果一个关系模式是4NF, 则必为BCNF。

关系模式规范化的基本步骤
1NF -> 消除非主属性对码的部分函数依赖-> 2NF ->消除非主属性对码的传递函数依赖-> 3NF ->消除主属性对码的部分和传递函数依赖-> BCNF ->消除非平凡且非函数依赖的多值依赖-> 4NF

1NF ->BCNF 是消除决定因素非码的非平凡函数依赖

闭包(记作X+)就是有一个属性直接或间接推导出的所有属性的集合。
例如:
f={a->b,b->c,a->d,e->f}
由a直接得到b、d,间接得到c
则a的闭包是{a,b,c,d}

L类 仅出现在函数依赖左边的属性
R类 仅出现在右边
N类 两边均未出现
LR类 两边都出现

须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。上面的规范化步骤可以在其中任何一步终止。而非盲目的追求规范化程度更高的关系模式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

附加题

一.
Y(X1,X2,X3,X4)
(X1,X2)→X3
X2→X4

  1. 侯选码?
  2. 属于第几范式?
    二.
    R(A,B,C,D)
    F={AB→D,AC→BD,B→C}
  3. 侯选码?
  4. 最高属于第几范式?
    三.
    R(X,Y,Z,W)
    F={Y←→W,XY→Z}
  5. 侯选码?
  6. 最高属于第几范式?
    四.
    R(A,B,C,D,E) F={A→B,CE→A,E→D}
  7. 求候选码。
  8. 最高属于第几范式,为什么?
  9. 分解到3NF。
    五.
    R(商店编号,商品编号,数量,部门编号,负责人)
    每个商店的每种商品只在一个部门销售,
    每个商店的每个部门只有一个负责人,
    每个商店的每种商品只有一个库存数量。
  10. 求候选码。
  11. R已达第几范式?为什么?
  12. 若不属于3NF,分解成3NF。
    六.
    R(A,B,C,D,E,F) F={A→C,AB→D,C→E,D→BF}
  13. 写出关键字。
  14. 分解到2NF。
  15. 分解到3NF。
  16. 分解到4NF。

【注】

AB→D 等价于 (A,B)→ D

D→BF 等价于 D→B, D→F

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

心得体会
说来可能不信,我做了快一天才写完,主要因为不熟练,还有就是我做事比较慢,有时候要反反复复的确认。看了视频,定义例子看了超多遍。(做题的时候还是有点记不住)现在,判断候选码很熟练,关于范式不太熟练,定义还要背一背。我打算把所有的定义,最后都写在一个本子上方便复习(主要是按自己的记忆方法顺序,我记忆力真的不太好),以前写的都和题混在一起,不太简洁。做题是手写的,虽然没有很好看,但有几张为了工整还重写了。。

标签:3NF,依赖,15,函数,关系数据,模式,2020,范式,属性
来源: https://blog.csdn.net/weixin_43901601/article/details/105616150