数据库第07章.ppt

数据库第07章

第7章 关系数据库设计理论 7.1 数据依赖对关系模式的影响 7.2 函数依赖 7.3 范 式 7.4 多值依赖与第4范式(4NF) 7.5 关系模式的规范化 7.6 数据依赖的公理系统 7.1 数据依赖对关系模式的影响 关系数据库规范化理论中的重要概念是数据依赖。 数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性值之间的依赖关系来体现的。 数据依赖中最重要的是函数依赖(Functional Dependency,FD)和多值依赖(Multivalued Dependency,MVD)。 属性间的这种依赖关系类似于数学中的函数y f(x),自变量x确定之后,相应的函数值y也就惟一地确定了。 现在我们建立一个描述学校教务的数据库,该数据库涉及的对象包括学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、 课程名(Cname)和成绩(Grade)。假设我们用一个单一的关系模式Student来表示,则该关系模式的属性集为: U ={ Sno,Sdept,Mname,Cname,Grade } 现实世界的已知事实(语义)告诉我们: (1)一个系有若干学生,但一个学生只属于一个系。 (2)一个系只有一名主任。 (3)一个学生可以选修多门课程,每门课程有若干学生选修。 (4)每个学生所学的每门课程都有一个成绩。 从上述事实我们可以得到属性集U上的一组函数依赖F(如图7.1所示): F ={ Sno → Sdept, Sdept → Mname, Sno,Cname → Grade } 如果只考虑函数依赖这一种数据依赖,我们就得到了一个描述学生的关系模式: Student U,F 1.数据冗余太大 例如,每一个系主任的姓名重复出现。 2.更新异常(Update Anomalies) 例如,某系更换系主任后,系统必须修改与该系学生有关的每一个元组。 3.插入异常(Insertion Anomalies) 如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。 4.删除异常(Deletion Anomalies) 如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。 一个关系模式之所以会产生上述问题,是由存在于模式中的某些数据依赖引起的。规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。 7.2 函数依赖 7.2.1 函数依赖 定义7.1 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系实例r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→Y。 对于函数依赖,需要说明以下几点: (1)函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。 (2)函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。我们只能根据数据的语义来确定函数依赖。例如,“姓名→年龄”这个函数依赖只有在没有同名人的条件下成立。 如果有相同名字的人,则“年龄”就不再函数依赖于“姓名”了。 (3)X→Y,但YX 则称X→Y是非平凡的函数依赖。 (4)X→Y,但Y ? X 则称X→Y是平凡的函数依赖。对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。若不特别声明,总是讨论非平凡的函数依赖。 (5)若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。 (6)若X→Y,并且Y→X,则记为X←→Y。 (7)若Y函数不依赖于X,则记为XY。 (8)若X→Y,并且对于X的任何一个真子集X,都有X Y,则称Y完全函数依赖于X,记作XY,否则称Y部分函数依赖于X,记作X Y。 (9)若X→Y,Y→Z,且Y∈X,YX,则称Z传递函数依赖于X。 加上条件Y X,是因为如果Y →X,则X ←→Y,实际上是X → Z,即是直接函数依赖而不是传递函数依赖。 属性集U上的关系模式R(U)常常表示为R U,F ,F是属性集U上的一组函数依赖。 7.2.2 码 码是关系模式中一个重要概念。下面我们用函数依赖的概念来定义码。 定义7.2 设K为关系模式R U,F 中的属性或属性组合,若KU,则K称为R的一个候选码(Candidate Key)。若关系模式R有多个候选码,则选定其中的一个作为主码(Primary key)。主码用下横线(_)显示出来。 包含在任何一个候选码中的属性,叫作主属性(Prime attribute)。不包含在任何码中的属性称为非主属性(Nonprime attr

文档评论(0)

1亿VIP精品文档

相关文档