预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共87页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第五章关系数据库设计理论关系数据库设计理论是关系数据库的指南,也是关系 数据库的理论基础。它是数据库领域的专家和学者们总结 数据库设计中的经验教训的基础上,借助近代数学工具而 提出来的。它把抽象的数学理论和具体的实际问题结合起 来,为数据库领域的发展起到了推动作用。意义: 提供分析和判断数据库模式好坏的准则; 指导设计好的数据库模式。 地位: 本章是本书最难的部分之一,但对于应用设计十分有用5.1问题的提出-什么是不好的数据库设计上述的关系模式在实际应用中会出现什么样的问题呢? 1、数据存在冗余 该关系模式中,学生每选一门课,他的名字和院系就 要重复存放一次。而且,如果他的院系改变的话,那么对 于其的每一个元组的院系都要改变。这样不仅增添了更新 代价,而且还有可能出现一个人在不同院系的情况。2、插入(删除)异常 该关系模式的主键应该是由学生学号和课程号共同构 成。按照常理,新学生登记注册,应该在学生信息库里存 在他的资料,但如果此时他还未选课,那么关于这个学生 的信息就不能创建,这是违背现实的情况的。3、更新复杂 如果某个学生转换所在系,那么和他所有的相关的记录 都必须进行修改。而且,容易造成潜在的数据不一致的问题。 比如‘李平’的记录,可能会只修改了其中一部分元组。结论: Student关系模式不是一个好的模式。 “好”的模式: 不会发生插入异常、删除异常、更新异常, 数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的 解决方法:通过分解关系模式来消除其中不合适 的数据依赖。由此可见,一个关系模式如果设计的不合理,将会造成很多 问题。如果我们将上述的关系模式进行分解: Student(Sno,Sname,Dept) SC(Sno,Cno,Grade) 分解以后可以解决上述的问题。但是上述关系模式在有些情 况下也不是最优的。具体的关系模式的设计不仅要结合数据 库设计理论,也还要根据实际的应用来决策。关系模式的形式化定义什么是数据依赖3.数据依赖的类型 函数依赖(FunctionalDependency,简记为FD) 多值依赖(MultivaluedDependency,简记为MVD) 其他5.2规范化理论函数依赖属性之间的联系分为三类: 1、1-1:例如果学生关系模式中没有同名现象,则学号和 姓名两个属性之间的关系是一对一的关系。 2、1-M:例一个院系有多个人,但是单个人只能属于一个 院系,那么院系和人的学号之间的关系是一对多的。 3、M-N:一个课程号对应于多个学号,一个学号对应于多 个课程号,这两个属性之间是多对多的联系。二、函数依赖的定义 定义:设有关系模式R(U),X和Y是属性集U的子集,r是R 上的任一具体关系,u和v是r中的任意两个元组。如果由 v[X]=v[X]能推导出u[Y]=v[Y],则称X函数决定Y,或Y函 数依赖于X,记为例:有一个学习模式R(S#,SNAME,C#,GRADE,TNAME,TAGE) 现在规定,每个学号只对应一个具体学生,每个课程号只 由一个教师来教,写出函数依赖。三、属性间的联系和函数依赖 属性间的联系有三种,但并不是每一种关系中都存在函数 依赖,设有属性集X、Y属于关系模式R, 如果X和Y之间是‘1-1’关系,则存在函数依赖:如果X和Y之间是‘1-M’关系,则存在函数依赖:例:如果人名唯一的话,那么一个人名对应一个学号,则有四、FD的逻辑蕴涵五、FD的推理规则证明Armstrong公理,用FD定义:A2:设u,v是r中的任意两个元组,设u[XZ]=v[XZ],即 u[X]u[Z]=v[X]v[Z],则u[X]=v[X],u[Z]=v[Z],由条件 根据函数依赖定义有u[Y]=v[Y],则u[YZ]=u[Y]u[Z]= v[Y]v[Z]=v[YZ]这样在u[XZ]=v[XZ]的基础上推出了 u[YZ]=v[YZ],得证。A3:设u,v是r中的任意两个元组,对于u[X]=v[X], 因为,则有u[Y]=v[Y],又因为则根据定 义可以得出u[Z]=v[Z],因此得到例题:已知关系R(X,Y,Z)以及其上的函数依赖集F,求F+。FD的分类:合并规则:分解规则:伪传递规则:*用函数依赖定义键属性集的闭包定理:X->Y能用FD推理规则推出的充分必要条件是 证明:(充分性)根据,设Y=A1,A2,…,An。由属性集 闭包定义可知:X->Ai在F+中。再根据合并规则,X->A1, A2,…,An即X->Y。 (必要性)由X->Y,根据分解规则,X->Ai,根据属性集闭 包定义可得,所以,即*用属性集的闭包来定义候选键算法:求属性集X关于FD集F的闭包X+ 输入:属性集U,U上的FD集F,X是U的子集 输出:X关于F的闭包X+ 方法:Result:=X; repeat forF中的每