关系模式的规范化理论

1.关系模式通常被简化为一个三元组: R(U, F)
R:关系名
U:组成该关系的属性名集合
F:属性间数据的依赖关系集合

2.不规范的关系模式可能会带来的问题
以下面这个模式为例
学生(学号,姓名,系名,系主任,课程号,课程名,成绩)
①冗余度大
学生每选一门课,个人信息和课程信息都要存一次,数据冗余
②插入异常
该模式的关键字为(学号,课程号),如果有一门课暂无学生选修,该课程的信息就无法插入到数据库
③删除异常
如果一课程C1只有一个人选修,那么当我删除这个人的信息之后,课程C1的信息也被删除了
④修改复杂
假如某个系更换了系主任,那么该系所有学生的“系主任”姓名全部要修改
所以,该关系模式不是一个好模式,属性与属性之间存在不合理的数据依赖关系。

3.函数依赖概念
设R(U)是一个关系模式,U是R的属性全集,X和Y是U的子集,如果对于属性组X的每一个值,属性Y只有一个值与它相对应, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。
举例:
学生(学号,姓名,系名,系主任,课程号,课程名,成绩)
该模式的函数依赖有
F={ 学号→姓名,学号→系名,学号→系主任,系名→系主任,
课程号→课程名,(学号,课程号)→成绩 }

候选码的定义 :设K为关系模式R<U,F>中的属性或属性组合,若K → U,则K称为R的一个候选码。

4.如果Y ⊆ X,则称X→Y是平凡函数依赖
如果Y ⊄X,则称X→Y是非平凡函数依赖
非平凡的函数依赖分为三种
完全函数依赖
部分函数依赖
传递函数依赖

在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有:
X’ →Y, 则称Y部分函数依赖于X,否则,则称Y完全函数依赖于X
例如,SNO→DNAME是完全函数依赖,(SNO,SNAME)→DNAME是部分函数依赖。

在关系模式R(U)中,如果X→Y,Y→Z,且Y ⊄X,Y不函数依赖于X,则称Z传递函数依赖于X
注意: 如果Y→X, 即X←→Y,则Z直接依赖于X

5.设F是关系模式R(U)上的一个函数依赖集, X →Y不包含在F中,但是如果可以从F中推导出X →Y,则称F逻辑蕴含X →Y

6.Armstrong公理系统
三条基本推理规则
自反律(平凡函数依赖)
若Y ⊆ X ⊆ U,则X →Y为F所蕴含
增广律(扩展律)
若X→Y为F所蕴含,且Z ⊆U,则XZ→YZ为F所蕴含
传递律
若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含

三条推论
合并规则:若X→Y,X→Z,则X→YZ成立
伪传递规则:若X→Y,WY→Z,则XW→Z成立
分解规则:若X→YZ,则X→Y, X→Z成立

7.函数依赖集闭包
在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+
属性集闭包
设F为属性集U上的一组函数依赖,X⊆U, XF+ ={ A|X→A能由F 根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F 的闭包,简称属性集X的闭包。

属性集闭包求解方法
①令X(0)=X,i=0
②求B,B为依赖于X(0)的子集的属性集;
③X(i+1)=B∪X(i)
④判断是否存在以下情况:
(a) X(i)=U
(b)X(i+1)=X(i)
© 在F中未用过的函数依赖的左边再也找不到x(i) 的子集
若存在,则算法终止。
否则, i=i+l,返回第②步
例题
已知关系模式R<U,F>,其中
U={A,B,C,D,E};
F={AB→C,B→D,C→E,EC→B,AC→B}。
求(AB)F+
解:设X(0)=AB;
(1)计算X(1): 逐一的扫描F集合中各个函数依赖,
找左部为A,B或AB的函数依赖。得到两个:
AB→C,B→D。
于是X(1)=AB∪CD=ABCD
(2)因为X(0)≠ X(1) ,所以再找出左部为ABCD子集的那些函数依赖,又得到AB→C,B→D, C→E,AC→B,
于是X(2)=X(1)∪BCDE=ABCDE
(3)因为X(2)=U,算法终止
所以(AB)F+ =ABCDE

8.最小函数依赖集
如果函数依赖集F满足下列条件,则称F为一个最小函数依赖集,亦称为极小依赖集或最小覆盖:
(1)每个函数依赖右边都只有一个属性
(2)每个函数依赖左边都没有多余的属性
(3)函数依赖集中不存在多余的函数依赖
求最小函数依赖集的方法
1、右边属性单一化;
2、消除部分函数依赖和传递函数依赖

9.候选码的求解方法
(1)求最小函数依赖集Fmin
(2)根据Fmin,将给定的关系R的属性分为4类:
L类 仅出现在函数依赖左边的属性
R类 仅出现在函数依赖右边的属性
N类 在F的函数依赖左右两边均未出现的属性
LR类 在F的函数依赖左右两边均出现的属性
(3)求L类和N类属性集闭包
假设X为L类、N类属性集,如果X+包含了R的全部属性,则X是R的惟一候选码,否则再从LR类属性中依次取一个、两个…加入X中,并求其闭包,直到闭包包含全部属性
规则
1、若X是L或 N类属性,则X必为R的任一候选码的成员。
2、若X是R类属性,则X不在任何候选码中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

漂流の少年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值