- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库试题4要点
第4章 关系数据理论
关系数据理论是关系数据库的理论基础,也是设计关系数据库的指南。本章讨论关系数据理论的基本概念、方法和题解。
4.1 数据存储异常
假设有如下关系S:
S(NO,NAME,SEX,COUR,DEGR)即学号,姓名,性别,课程,成绩。
其中NO,COUR是主关键字。
这个关系模式存在如下问题:
·数据冗余一个学生选修多门课程,这样导致NAME和SEX多次重复存储;
·不一致性由于数据存储冗余,当更新某些数据项时,就有可能一部分字段修改了而另一部分字段未修改,造成存储数据的不一致性
·插入异常如果某个学生未选修课程,则他的(NO,NAME,SEX)信息无法插入因为COUR为空,关系数据模式规定主关键字不能为空或部分为空,这便是插异常;
·删除异常当要删除所有学生成绩时,将所有你NO,NAME,SEX也都删除了,便是删除异常。
为了克服这些异常,将S关系分解为如下两个关系:
S1(NO,NAME,SEX)
S2(NO,COUR,DEGR)
这是因为S关系中的某些属性之间存在数据依赖。
数据依赖是现实世界事物之间的相互关联性的一种表达,是属性固有语义的体现。们只有对一个数据库所要表达的现实世界进行认真的调查与分析,才能归纳与客观事实符合的数据依赖。
4.2 函数依赖
4.2.1函数依赖定义
大多数的数据依赖是函数依赖(FD)。下面讨论函数依赖的一些基本定义。
定义:设R(U)是一个关系模式,X,Y是R的两个属性集合,X,Y U,R[X,Y]是关系R在属性。
X∪Y上的投影,当任何时刻R[X,Y]中的任意两个元组中的X属性值相同时,则们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X,记作X→Y。
定义:设X→Y是一个FD,如果它在任何满足X,Y U的关系模式R(U)上都成立,则称X→Y是一个平凡函数依赖。
定义:如果函数依赖X→U在R上成立,且不存在任何X’ X,使得X’→U也成立,则称X是R的一个候选关键字。候选关键字中包含的属性称为主属性。不包含在候选关键字中的属性称为非主属性。
定义:设X→Y是一个FD,并且对于任何X’ X,X’ →Y都不成立,则称X→Y是个完全函数依赖。即Y函数依赖于整个X,记作X Y。
定义:设X→Y是一个FD,但不是完全函数依赖,则称X→Y是一个部分函数依赖或称Y函数依赖于X的某个真子集,记作X Y。
定义:设R(U)是一个关系模式,X,Y,Z U,如果X→Y,Y→Z且Y X,Z-Y≠Φ,Y-X≠Φ成立,则称Z传递函数依赖于X,记为X Z。
4.2.2函数依赖公理
函数依赖的推导公理——Armstorng公理:
设有关系模式以R(U),X,Y,Z,W= U,则:
·A1(自反性):若YX,则X→Y;
·A2(增广性):若X→Y,则XZ→YZ;
·A3(传递性):若X→Y,Y→Z,则X→Z。
由Armstorng公理可以得到以下推论:
·合成规则:若X→Y,X→Z则X→YZ;
·分解规则:若X→YZ,则X→Y,X→Z。
·伪传递规则:若X→Y,YW→Z,则XW→Z。
定理4.1:Armstorng公理是正确的、完备的。
4.2.3函数依赖与属性关系
属性之间有三种关系,但并不是每一种关系中都存在函数依赖。设有属性集X,Y及关系模式R:
·如果X和Y之间是”l-l”关系(如学校和校长),则存在函数依赖:X→Y和Y→X。
·如果X和Y之间是”m-1”关系(如学号和姓名),则存在函数依赖:X→Y。
·如果X和Y之间是”m-n”关系(如学生和课程),则X和Y之间不存在函数依赖
4.2.4闭包及其计算
定义:设关系模式R(U),F为其函数依赖集,则称所有用Annstrong公理从F推出函数依赖X→Ai中Ai的属性集合为X的属性闭包,记为X+。
定理4.2:设关系模式R(U),F为其函数依赖集,X,Y U则从F推出X→Y的要条件Y X+。
算法4.1:求属性集X关于函数依赖F的属性闭包X+。
输入:关系模式R的全部属性集U,在U上的函数依赖F,U的子集X。
输出:关于F的属性闭包X+。
方法:计算X(i)(i=0,l,…)
(l)X(0)=X;
(2)X(i+1)=X(i)A;
其中A是这样的属性:在F中寻找尚未用过的左边是X(i)的子集的函数依赖:
Y→Zj(j=l,…,k),
其中XjX(i)
即在Zj中寻找X(i)中未出现过的属性集合A,若无这样的A则转(4)。
(3)判断是否有X(i+l)=X(i),若是则转(4);否则转(2)。
(4)输出X(i),即为X+。
对于(3)的计算停止条件,以下四种方法是等价的:
·X(i+l)=X(i)
·当发现X(i)包含了全部属性时;
·在F中的函数依赖的右边属性中
文档评论(0)