第3章电子教案(数据库).ppt
文本预览下载声明
第3章 关系数据库设计理论 学习目标 函数依赖 3条Armstrong公理和3条推理规则 关系范式1NF、2NF、3NF、BCNF、4NF 模式分解规则…… 第3章 关系数据库设计理论 教学内容 3.1 引言 3.2 函数依赖 3.3 关系模式的规范化 3.4 本章小结 3.1 引言 某些不恰当的关系模式可能导致的问题 存储异常问题 更新异常 插入异常 删除异常 3.1 引言——讨论范围 关系数据库设计理论主要包括3方面的内容: 数据依赖 范式 模式设计方法 数据依赖在此起着核心的作用。我们重点讨论函数依赖的概念,然后再介绍模式分解的标准,即范式,为数据库的设计准备一定的基本理论基础。 3.1 引言——存储异常问题 某些不恰当的关系模式可能导致的问题 。 例如,有教师任课关系模式TDC: TDC(T#,TNAME,TITLE,ADDR,D#,DNAME,LOC,C#,CNAME,LEVEL,CREDIT) 其中各属性含义为教师号T#、教师姓名TNAME、职称TITLE、教师地址ADDR、系号D#、系名称DNAME、系地址LOC、课程号C#、课程名CNAME、教学水平LEVEL、学分CREDIT。 3.1 引言——存储异常问题 3.1 引言——存储异常问题 在这个关系中,只有根据教师号和课程号才能够确定哪位教师讲授哪门课程,因此,关系TDC的主码是(T#,C#),该关系在使用过程中存在以下几个问题: 数据冗余 每当教师开设一门课程时,该教师的职称、地址等信息就重复存储一次。一般每位教师都开设几门课,数据冗余不可避免。一个系有很多教师,使关系中的数据冗余度很大。 3.1 引言——存储异常问题 更新异常 由于数据的重复存储,会给更新带来麻烦。如果一位任3门课的教师改变了地址,3个元组的地址都要更新,一旦一个元组的地址未修改就会导致数据不一致。如果某个系改变办公地址,所要修改的数据量会更大。 3.1 引言——存储异常问题 插入异常 如果学校新调入一个教师,暂时未主讲任何课程。由于缺少主码的一部分,而主码不允许出现空值,新教师就不能插入到此关系中去。只有当他开设了课程之后才能插入,这是不合理的。 3.1 引言——存储异常问题 删除异常 与插入异常相反,如果某些教师致力于科研,不担任教学任务了,就要从当前数据库中删除有关记录。那么关于这些教师的其它信息将无法记载,这也是极不合理的现象。 3.1 引言——存储异常问题 上述在插入、删除或修改元组时将产生的不希望发生的异常情况是由于关系模式设计得不好所造成的。如果用下面4个关系模式代替原来的一个关系模式,上述4个方面的问题就基本解决了。 教师关系:T(T#,TNAME,TITLE,ADDR,D#) 系关系:D(D#,DNAME,LOC) 课程关系:C(C#,CNAME,CREDIT) 教师课程关系:TC(T#,C#,LEVEL) 3.2 函数依赖 函数依赖反映了数据之间的内在联系,是进行关系分解的指导和依据,是本章讨论的中心问题。 属性之间的联系 函数依赖 函数依赖的逻辑蕴涵 码 3.2 函数依赖——属性之间的联系 现实世界中的事物是彼此联系且互相制约的。这种联系分为两类,一类是实体与实体之间的联系(我们已经在第一章讨论过了实体之间的联系);另一类是实体内部各属性间的联系。实体内部各属性间的联系分为3类: 一对一 一对多 多对多 3.2 函数依赖——属性之间的联系 以图书管理关系数据模型为基础来介绍这3类联系。设图书管理关系数据模型包括以下3个关系模式: 图书(总编号,分类号,书名,作者,出版单位,单价) 读者(借书证号,姓名,性别,单位,职称,地址) 借阅(借书证号,总编号,借阅日期,备注) 3.2 函数依赖——属性之间的联系 1.一对一联系 在读者关系中,借书证号是唯一的,如果读者没有重名的,姓名与借书证号两属性之间是1:1联系。姓名可以确定借书证号,借书证号也可以确定姓名。 设X、Y为关系中的属性或属性组,它们的所有可能取值组成两个集合。为简便起见,也叫X、Y,如果对于X中的任一具体值,Y中至多有一个值与之对应,并且对于Y中的任一具体值,X中至多有一个值与之对应,称X、Y这两个属性之间是一对一联系。 3.2
显示全部