关系模式可以表示为R(U,D,DOM,F) 在研究关系数据理论时,可以简化为R(U,F)
U是一组属性,F是数据依赖
数据依赖是一个关系内部属性与属性之间的一种约束关系。函数依赖和多值依赖是两种重要的数据依赖
第一范式要求关系模式的二维表的每一个分量均为不可分割的数据项。第一范式存在以下问题:
下面以Student表为例,解释第一范式为何存在以上问题
Sno | Sdept | Mname | Cno | Grade |
---|---|---|---|---|
2017133 | CSSE | DR.CHEN | C1 | 100 |
数据冗余:每个系的系主任名字相同,在该数据模式中大量出现,将导致大量空间的浪费
更新异常:当要改变系主任的名字时,将对所有该系的元组进行更改,很容易出错
插入异常:当要创建一个新的系,该系尚未有学生就读,将无法插入该关系模式中
删除异常:当某个系的学生全部毕业了,意味着要删除所有该系的元组,这会导致该系也消失,这不符合常理
一个好的关系模式是不应该存在更新异常,插入异常和删除异常的,同时还应该尽可能地减少数据冗余。那么怎么设计一个好的关系模式呢?
非平凡函数依赖 X->Y ,Y不包含于X
平凡函数依赖X->Y,Y包含于X
X又称为决定因素
在关系模式R(U)中,若X->Y且对于X的任何一个真子集X‘,均无法得到X’->Y,则称Y对X完全函数依赖。相反地,则称Y对X的部分函数依赖。
传递函数依赖:X->Y,Y不包含于X,Y->X不成立,Y->Z,Z不包含与Y,则X->Z(Z对X的传递函数依赖)
主码,超码,候选码的概念
若关系模式U完全依赖于K,则称K为候选码
若关系模式U依赖于K,则称K为超码
在超码中选择一个作为主码
包含在任何一个候选码中的属性称为主属性,反之则称为非主属性
极端情况,整个属性组是候选码,则称为全码
外码:关系模式R中的属性X并非R的码,但X是关系S的码,则称关系R中的属性X是关系R的外码
范式是表达关系模式级别的方式,低级的范式可以通过模式分解(schema decomposition)转换为高级的范式的关系模式,这个过程叫规范化
若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF
以关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)为例
Sno | Sdept | Sloc | Cno | Grade |
---|---|---|---|---|
该关系模式不是第二范式,存在如下问题:
第二范式也有以上问题:
Sno | Sdept | Sloc |
---|---|---|
Sno->Sdept
Sdept->Sloc
第三范式旨在消除非主属性对码的传递依赖。其定义如下:设关系模式R属于第一范式,不存在主码X,属性组Y,非主属性Z,使得X->Y,Y->Z,Z不包含于Y,Y->X不成立,则称关系模式R满足第三范式
关 系 模 式 R < U , F > ∈ 1 N F , 若 X → Y 且 Y 不 包 含 于 X 时 , X 必 含 有 码 , 则 R < U , F > ∈ B C N F 关系模式R∈1NF,若X\rightarrow Y且Y不包含于X时,X必含有码,则R∈BCNF 关系模式R<U,F>∈1NF,若X→Y且Y不包含于X时,X必含有码,则R<U,F>∈BCNF
BC范式满足以下特点:
只有一个码如C(CNO,CNAME,PCNAME),一定是BCNF
全码也一定是BCNF
如果一个模式的关系模式属于BCNF,那么它在函数依赖范畴内已经实现了彻底的分离,消除了插入和删除的异常。3NF的不彻底性表现在可能存在主属性对码的部分函数依赖和传递依赖
Course | Teacher | Reference |
---|---|---|
Math | LEE | Liner szu |
Math | LEE | Liner pku |
Math | LEE | Liner zju |
如上表所示,这样的一个关系模式数据冗余十分明显,增删改也很麻烦,其具有多值依赖的数据依赖。
多值依赖的定义如下:
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中值依赖X ->->Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于X值而与Z值无关
Example:在关系模式Teaching中,(Course,Reference)组成了(x,z),有一组Teacher值,该组值仅仅与Course相关而与Reference无关,则称Teacher多值依赖于Course
若 X → → Y , 而 Z = U − X − Y = 空 集 , 则 称 X → → Y 为 平 凡 的 多 值 依 赖 若X\rightarrow\rightarrow Y,而Z=U-X-Y=空集,则称X\rightarrow\rightarrow Y为平凡的多值依赖 若X→→Y,而Z=U−X−Y=空集,则称X→→Y为平凡的多值依赖
多值依赖的性质
多值依赖和函数依赖的区别:
Armstrong公理系统提出的价值在于从一组函数依赖中找寻蕴含的函数依赖。
同理系统的推理规则如下:
根据这三条推理规则,我们可得到下列三条推理规则
在关系模式R中为F所蕴含的所有函数依赖的集合称为F的闭包
Armstrong公理系统具有有效性和完备性。有效性是指由F出发的根据Armstrong公理系统推导出来的函数依赖均属于F的闭包中。完备性是指F的闭包中的函数依赖均可由F根据Armstrong公理系统推导得出。
属性集X关于函数依赖集F的闭包,X,Y包含于U,X+={A|X->A能够由F根据Armstrong公理系统推出}
X->Y能由Armstrong公理系统推导而出的充要条件是Y属于X+
判断X->Y能否由Armstrong公理系统推导而出就可以转换为求X+,然后判断Y是否属于X+
求X+的算法可见书本191页
如果G+=F+ ,则称G和F等价,F是G的覆盖,G是F的覆盖
每一个函数依赖集F均等价于一个极小函数依赖集Fmin
最小依赖集(minimal cover)满足下列条件:
F中任一函数依赖的右边仅有一个属性
F中不存在这样的函数依赖
X → Y 使 得 F − X → Y 与 F 等 价 X\rightarrow Y使得F-{X\rightarrow Y}与F等价 X→Y使得F−X→Y与F等价
F中不存在这样的函数依赖 X->A,使得X有真子集Z,使得F-{X->A}∪Z->A与F等价
求F的最小依赖集的算法可以见书本193页底部
关 系 模 式 R < U , F > 的 一 个 分 解 是 指 p = R 1 < U 1 , F 1 > , R 2 < U 2 , F 2 > , R 3 < U 3 , F 3 > . . . , 其 中 F i 为 函 数 依 赖 F 在 U i 上 的 投 影 , U i 的 并 集 等 于 U 关系模式R的一个分解是指p={R1
在进行模式分解时,要求分解后产生的模式与原模式“等价”。
“等价”有如下三种定义:
无损连接性:对关系模式R的分解是可回复的
函数依赖:分解后的关系模式Ri应保持原来的函数依赖
无损连接的定义:目前还没搞懂
判别一个分解是否为无损连接的算法:
1.如果是一个关系模式分解为两个关系模式,那么直接对两个关系模式求交集,求两个关系模式的对称差,如果存在对称差对交集的函数依赖,那么该分解就是无损的
2.如果分解为多个关系模式,则需要:
to be countinued…