数据库设计理论Word文档下载推荐.docx
《数据库设计理论Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库设计理论Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
关系模式仅仅是对数据特征的描述。
关系模式的一般形式为R(U,D,DOM,F)
R是关系名。
U是全部属性的集合。
D是属性域的集合。
DOM是U和D之间的映射关系,关系运算的安全限制。
F是属性间的各种约束关系,也称为数据依赖。
关系模式可以表示为:
关系模式(属性名1,属性名2,……,属性名n)
示例:
学生(**,,年龄,性别,籍贯)。
当且仅当U上的一个关系r满足F时,r就称为关系模式R(U,F)上的一个关系,R是关系的型,r是关系的值,每个值称为R的一个关系。
关系数据库模式:
一个数据库是由多个关系构成的。
一个关系数据库对应多个不同的关系模式,关系数据库模式是一个数据库中所有的关系模式的集合。
它规定了数据库的全局逻辑结构。
关系数据库模式可以表示为:
S={Ri<
Ui,Di,DOM,Fi>
|i=1,2,…,n}
3.关系子模式
关系子模式是用户所用到的那部分数据的描述。
外模式是关系子模式的集合。
4.存储模式
存储模式及内模式。
关系数据库理论的主要内容:
(1)数据依赖。
数据依赖起着核心的作用。
(2)*式。
(3)模式的设计方法。
如何设计一个合理的数据库模式:
(1)与实际问题相结合。
泛关系模式:
把现实问题的所有属性组成一个关系模式
泛关系:
泛关系模式的实例称为泛关系。
泛关系模式中存在的问题:
a数据冗余b更新异常,c插入异常d删除异常。
(2)数据库设计理论:
借助近代代数工具,把抽象的数据理论同实际问题结合起来。
理论基础:
数据依赖(数据的相关性)。
二,关系模式及其评价。
1.关系数据库设计的核心:
关系模式的设计。
2.关系模式的设计:
按照一定的原则,从数量众多的而又互相关联的数据中构造出一组即能较好的反映现实世界,而又有良好的操作性能的关系模式。
3.关系模式的优劣、评价、改进:
冗余度高
修改困难
插入问题
删除问题
这些问题的产生原因是:
属性间的约束关系太强,即数据间的依赖关系太强。
解决的方法:
将关系模式分解为一组较理想的关系模式。
第二节函数依赖
一,函数依赖FunctionalDependency
函数依赖是数据依赖的一种,反映属性或属性之间的依存、互相制约的关系,既反映现实世界的约束关系。
二,函数依赖的定义
设R(U)是属性U上的一个关系模式,*和Y均为U={A1,A2,…An}的子集,r为R的任一关系,如果对于r中的任意两个元组u和v,只要有U[*]=V[*],就有U[Y]=V[Y],则称*函数决定Y,或称Y函数依赖于*,记作:
*→Y。
三,函数依赖的语义*畴:
1.语义:
数据所反映的现实世界事务本质的联系。
2.根据语义来确定函数依赖型的存在与否。
3.函数依赖反映属性之间的一般规律,必须在关系模式F的任何一个关系r都满足约束条件。
回顾概念
键:
由一个或多个属性组成。
设R(U)为一个关系模式,F为R的函数依赖集,*为属性集U的子集。
(1)超键:
能唯一标识元组的属性集。
如果*→U∈F,则*是R的超键。
(2)候选键:
不含有多余属性的超键
a*是R的超键。
b且不存在*的真子集Y,使得Y→U∈F+
则称*是R的候选键
(3)主键:
用户选作元组标识的一个候选键。
(4)主属性:
包含任何一个候选键的属性。
(5)非主属性:
不包含任何一个候选键的属性。
(6)外键:
如果关系R的*一个属性组不是该关系本身的候选键,而是另一个关系的候选键,则称该属性组是R的外来关键码,或称为外键(外码)。
如何确定候选码?
(1)如果有属性不在函数依赖集中出现,则它必定包含在候选码中。
(2)如果有属性不在函数依赖集中任何函数依赖的右边出现,则它必定包含在候选码中。
(3)如果该属性或属性组能唯一标识元组,则它就是候选码。
根据对数据库的语义描述,确定其中候选码,同时还可以写出该关系模式的函数依赖集。
四,函数依赖的关系
属性间的关系决定函数依赖关系。
设*和Y都是U的子集:
1*和Y的联系是1:
1则*→Y,Y→*.
2*和Y的联系是M:
1(M>
1)则*→Y.
3*和Y的联系是M:
N(M,N>
1)则,*、Y之间不存在函数依赖。
五函数依赖图:
FD图。
六完全函数依赖和部分函数依赖
在R(U)中,如果*→Y,并且对于*的任何真子集*`,都不存在*`→Y,则称Y完全依赖于*,记作
*→Y(箭头上加个F表示FULL完全函数依赖)
否则,如果*→Y,且*中存在一个真子集*`,使得*`→Y,则Y部分函数依赖*。
*→Y(箭头上面加一个P,表示PART,部分函数依赖)
七平凡函数依赖和非平凡函数依赖
设*,Y均为*关系的属性集,并且*→Y,
若Y包含于*,则称*→Y为平凡函数依赖(Y是*的子集)。
若Y不包含于*,则称*→Y为非平凡函数依赖(Y不是*的子集)
第三节函数依赖的蕴涵与公理体系
一,函数依赖的逻辑蕴含
定义:
设有关系模式R(U),及其函数依赖集F,如果对于R的任何一个满足F的关系r,函数依赖*→Y都成立,则称F逻辑蕴含*→Y或称*→Y可以由F推出,记作:
例题:
关系模式R=(A,B,C),函数依赖集F={A→B,B→C}
则F逻辑蕴含A→C
记作:
二,F闭包
定义:
若F为关系模式R(U)的函数依赖集,我们把F以及所有被F逻辑蕴含的函数依赖的集合称为F的闭包,记作F+。
F+={*→Y|F╠*→Y}
三,Armstrong公理
F1自反律:
若Y包含于*,则*→Y(Y是*的子集)
F2增广律:
若*→Y为F所蕴含,则*Z→YZ在R上成立。
F3传递律:
若*→Y,Y→Z在R上成立,则*→Z在R上成立。
F4伪增律:
Z是W的子集,*→Y为F所蕴含,则*W→YZ在R上成立。
F5伪传律:
若*→Y,YW→Z为F所蕴含,则*W→Z在R上成立。
F6合并律:
若*→Y,*→Z为F所蕴含,则*→YZ在R上成立。
F7分解律:
若Z是Y的子集,*→Y为F所蕴含,则*→Z在R上成立。
四,属性集的闭包
若F为关系模式R(U)的函数依赖集,*是U的子集,则由Armstrong公理推导出来的所有*→Ai所形成的属性集{Ai|i=1,2,…,n}称为*关于F的闭包记为*+。
属性集闭包的举例:
设:
R=ABC,F={A→B,B→C}当*分别是A,B,C,时,求*+
解:
当*=A时,*+=ABC
当*=B时,*+=BC
当*=C时,*+=C
定理:
*→Y能根据Armstrong推理规则导出的充要条件是:
只要Y是*+的子集,则*→Y。
只要*→Y,则Y一定是*+的子集。
Armstrong公理的完备性定理
函数依赖推理规则系统(自反律、增广律、传递律)是完备的。
函数依赖公理体系
Armstrong公理体系
由于Armstrong公理的完备性,Armstrong公理及其推论构成了一个完备的逻辑推理体系,称为Armstrong公理体系:
A,一套形式推理规则。
B,利用这些推理规则可以求出给定关系模式的关键字。
C,而且可以从关系模式的一组已知函数依赖出发,求得它蕴含的所有函数依赖。
D,或者对于给定的F和*→Y,判断*→Y是否在F+中。
E,是关系规*化理论的依据。
计算*+的算法
1)依据:
若F为关系模式R(U)的函数依赖集,*,Z,W是U的子集,对于任意的Z→W∈F,若Z是*的子集,则*→*W
2)算法的实现
输入:
关系模式R上的子集*,R上的函数依赖F
输出:
*关于F的闭包*+
3)算法:
a.令*(0)=φ,*+=*;
b.如果*(0)≠*+,置*(0)=*+,否则,转到d;
c.对于f中的每个未被访问过的函数依赖
Y→Z,若Y包含于*+,则令
*+=*+∪Z,为被访问过的函数依赖设置访问标志,转b;
d.输出*+
结论
判定函数依赖*→Y是否能由F导出的问题,可以转化为求*+的闭包,并判定Y是否是*+子集的问题。
即求闭包的问题可以转化为求属性集的问题。
判定给定函数依赖*→Y是否蕴含与函数依赖集F算法实现:
输入:
函数依赖集F,函数依赖*→Y
若*→Y∈F+,输出真,否则输出假。
四,函数依赖的等价和覆盖
设F和G是关系模式R(U)上的两个函数依赖集,如果F+=G+,则称F等价于G,亦称F覆盖G或者G覆盖F,记作:
F≡G
定理1,设F和G是关系模式R(U)的两个函数依赖集,则F+=G+的充分必要条件是:
定理2,设F和G是关系模式R(U)的两个函数依赖集,则F+=G+的充分必要条件是
定理3,每个函数依赖集F都可以被一个右部只有单属性的函数依赖集G所覆盖。
五,最小函数依赖集
设F是函数依赖集,如果F满足
(1)F中每个函数依赖*→Y的右边均为单个属性。
(2)F中的任何一个函数依赖*→A,其F-(*→A)都与F不等价。
(3)F中的任何一个函数依赖*→A,Z为*的真子集,
(F-{*→A})∪{Z→A}都与F不等价。
则称