关系规范化理论

MySQL-关系规范化

几个概念:

有集合{a,b,c,d,e}
码 \textcolor{purple}{码} :能确定整个集合(元组)的所有组合(属性列)。 比如{a},{a,b,c},{a,c,d}等等都可以确定整个集合,尽 管有的存在冗余,但是它们都是码。
候 选 码 \textcolor{purple}{候选码} :含有属性最少的能确定整个集合的小集合。例如如果{a,b}能确定整个集合,但{a},{b}都不能单独确定整个集合,那么{a,b}就是一个候选码。 候 选 码 的 真 子 集 中 不 存 在 码 \textcolor{red}{候选码的真子集中不存在码}
主 码 \textcolor{purple}{主码} :是任意一个候选码,可以人为选定。
外 码 \textcolor{purple}{外码} :如果{a,b,c}不是{a,b,c,d,e}的码,但是另一个集合{a,b,c,d,e,f}的码,那{a,b,c}就是{a,b,c,d,e}的一个外码。
主 属 性 \textcolor{purple}{主属性} :候选码所有属性的并集
非 主 属 性 \textcolor{purple}{非主属性} :不包含在任何码里的属性,例如每个能确定集合{a,b,c,d,e}的小集合里面都没有e,那e就是非主属性。
image-20220423200247513

范式

关系型数据库中,数据表设计的基本原则
image-20220423194549185
函数依赖:完全、部分、传递
image-20220423194946659
1.第一范式
原子的,一个格里就一个数据

2.第二范式
满足条件:
(1)满足第一范式
(2)必有主键,且 非 主 属 性 必 须 完 全 函 数 依 赖 于 主 键 ( 候 选 键 ) \textcolor{red}{非主属性必须完全函数依赖于主键(候选键)}
球员编号比赛编号姓名年龄比赛时间比赛场地
(球员编号, 比赛编号) → (姓名, 年龄, 比赛时间, 比赛场地)
(球员编号) → (姓名,年龄) 姓 名 、 年 龄 部 分 依 赖 于 主 键 , 不 满 足 第 二 范 式 \textcolor{red}{姓名、年龄部分依赖于主键,不满足第二范式}
所以要改进为第二范式,分成三张表:
image-20220423202304459
此时每张表都符合第二范式

3.第三范式
满足条件
(1)满足第一范式,且每一个非主属性既不 部 分 \textcolor{red}{部分} 依赖于码,也不 传 递 \textcolor{red}{传递} 依赖于码。
(2)满足第二范式,且每一个非主属性不 传 递 \textcolor{red}{传递} 依赖于码
球员编号姓名球队名称球队教练
image-20220423214231064
存在传递依赖,所以不满足第三范式
如果分成两张表:
image-20220423215025281
此时满足第三范式

4.巴斯范式
满足条件:
(1)满足第三范式
(2)主属性既不 部 分 \textcolor{red}{部分} 依赖也不 传 递 \textcolor{red}{传递} 依赖于候选键
学生ID专业导师专业GPA
1AITom
2大数据Landa
1大数据Landa
3大数据Judy
已知其中学生ID和专业是主键
显然满足第三范式,但是主属性专业依赖于导师,{学生ID,导师}也是一个候选键,所以主属性部分依赖于候选键,不符合巴斯范式。
如果分成两张表:
image-20220424082132028
此时满足巴斯范式

逻辑蕴含

对于关系R(U,F),X—>Y不在F中,但X—>Y可以由F导出,则F逻辑蕴含X—>Y。
举例:image-20220424092817987
ArmStrong公理系统
image-20220424091207969
例:
image-20220424093119384

属性集闭包

X关于函数依赖集F的闭包:
(1)X⊆U,例如U={A,B,C,D},X可以是{A},{A,D}等等。
(2)F是一堆函数依赖的集合,例如A—>B,A—>D等等。
(3)

X F + = A ∣ X — > A 可 以 由 F 根 据 A r m S t r o n g 公 理 系 统 推 出 X^+_F={A|X—>A可以由F根据ArmStrong公理系统推出} XF+=AX>AFArmStrong

举个例子:
image-20220424095513895
求 属 性 集 闭 包 : \textcolor{red}{求属性集闭包:}
image-20220424103826684 img

码值理论

属性分四类:
(1)L类:只出现在F中依赖关系左边的属性,如:X—>Y ,只出现在X处的属性。
(2)R类:只出现在F中依赖关系右边的属性,如:X—>Y ,只出现在Y处的属性。
(3)N类:F中依赖关系左右两边都没出现的属性。
(4)LR类:F中依赖关系左右两边都出现的属性。
定理1:如果属性是L或者N类,那它 一 定 \textcolor{red}{一定} 是R的候选码的成员,如果是R类, 必 不 \textcolor{red}{必不} 在任何候选码中,如果是LR类, 可 能 \textcolor{red}{可能} 是R候选码的成员。
定理2:如果X(X∈R)是L类和N类属性的并集,且image-20220424105859545包含R的全部属性,那么X就是R的唯一候选码。
候选关键字求解算法:
image-20220424155552622
举例:
image-20220424160411835 image-20220424163811273

函数依赖集的等价与覆盖

1.等价:
image-20220424165447974
2.依赖集:
image-20220425195410397
例题:
image-20220425195727794 img
3.最小依赖集:
也叫最小覆盖
F是最小依赖集要满足条件:
(1)右单一属性:F中的函数依赖,右边只能有一个属性
(2)无冗余: 如果F中有这样一个依赖:X—>A,当F刨去X—>A时,发现与原F等价,则不满足最小依赖。
(3)决定因素不冗余:如果F中有这样一个依赖:X—>A,X有个真子集Z,当F刨去X—>A,又加上Z—>A时,发现还与原F等价,则不满足最小依赖。
例:
image-20220424170725505
很显然F是最小依赖,但是F’不是,F‘去掉(SNO,SDEPT)—>SDEPT之后,还能跟原F’等价。
求 最 小 依 赖 集 ( F m ) 的 算 法 \textcolor{red}{求最小依赖集(Fm)的算法} Fm)
image-20220424190642007
例题:
例1image-20220424191928858
img
例2:image-20220424193300866
img

模式分解

概念:
image-20220425194928978
1.无损连接性
image-20220425200704281
判断方法(以题举例):
image-20220425200929622
第一步:建表T
ABCDEF
ABCa1a2a3b14b15b16
CDb21b22a3a4b25b26
DEFb31b32b33a4a5a6
image-20220425201754743
第二步:逐个考察函数依赖,修改表

ABCDEF
ABCa1a2a3 a 4 \textcolor{red}{a4} a4 a 5 \textcolor{red}{a5} a5 a 6 \textcolor{red}{a6} a6
CDb21b22a3a4 a 5 \textcolor{red}{a5} a5 a 6 \textcolor{red}{a6} a6
DEFb31b32b33a4a5a6
第三步:观察新表,若其中有一行已变成a1,a2,a3…ak,则满足无损连接性
2.独立投影法则
判断无损连接性的一种方法,但是条件是R 只 被 分 解 为 两 个 关 系 模 式 \textcolor{red}{只被分解为两个关系模式}
image-20220425203048204
例题:
image-20220425203223055
3.函数依赖保持性
若R(U,F)的一个分解image-20220425203841450的所有函数依赖的并集(F1UF2UF3U…UFk)逻辑蕴含了函数F中的所有函数依赖,则其具有函数依赖保持性。
例:
image-20220425220137485 img
4.模式分解算法
一个模式分解必须满足以下条件:
(1)无损连接性
(2)依赖保持性
(3)某一范式
分解算法1:
转换为3NF的保持函数依赖的分解(考虑范式和函数依赖保持性,忽略无损连接性)
步骤:
(1)求F的最小依赖集,记为G
(2)找出不在G中出现的属性,把这些属性构成一个关系模式,把这些属性从U中去掉,剩余的属性记为W
(3)若G中存在这样一个依赖关系X—>A,XA=W,image-20220426101916442={R},R={X,A},算法中止
(4)否则,把每一个X—>A变成Ri={X,A},image-20220426101916442={R1,R2,…Rk},算法结束
例:
image-20220426103747376 img
分解算法2:
结果为3NF,且具有依赖保持和连接不失真的分解
步骤:
(1)算一遍分解算法1,求出各个分组(R1,R2…)
(2)求原F的候选码KEY,依据码值定理
(3)如果求出的候选码KEY包含在由分解算法1求出的各函数依赖关系中,舍弃,否则并进来
例:
image-20220426113716978 image-20220426141612972
例:
image-20220426145833724 img

主码,候选码等之间关系的图片引用自https://blog.csdn.net/sumaliqinghua/article/details/85872446

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_坐看云起时_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值