数据库系统概论_第六章.ppt
文本预览下载声明
数据库系统概论
An Introduction to Database System
第六章 关系数据理论;第六章 关系数据理论;6.1关系模式设计的问题;概念回顾
关系:描述实体、属性、实体间的联系。
从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。
关系模式:用来定义关系。
关系数据库:基于关系模型的数据库,利用关系来描述现实世界。
从形式上看,它由一组关系组成。
关系数据库的模式:定义这组关系的关系模式的全体。;关系模式由五部分组成,即它是一个五元组:
R(U, D, DOM, F)
R: 关系名
U: 组成该关系的属性名集合
D: 属性组U中属性所来自的域
DOM:属性向域的映象集合
F: 属性间数据的依赖关系集合
关系模式R(U, D, DOM, F)简化为一个三元组:R(U, F)
当且仅当U上的一个关系r 满足F时,r称为关系模式 R(U, F)的一个关系
有时候,更简写成R(U),即R(A1,A2,…,An)的形式;如何设计一个适合的关系数据库系统,关键是关系数据库模式的设计,一个好的关系数据库模式应该包括多少关系模式,而每一个关系模式又应该包括哪些属性,又如何将这些相互关联的关系模式组建一个适合的关系模型,这些工作决定了到整个系统运行的效率,也是系统成败的关键所在,这属于数据库设计的问题,确切地讲是数据库逻辑设计的问题(有关数据库设计的全过程将在第7章详细讨论)。
本章讲述关系数据库规范化理论,这是数据库逻辑设计的理论依据。;规范化理论主要包括三个方面的内容:
函数依赖
范式(Normal Form)
模式设计
其中,函数依赖起着核心的作用,是模式分解和模式设计的基础,范式是模式分解的标准。;关系模式的存储异常问题
数据库的逻辑设计为什么要遵循一定的规范化理论?
什么是好的关系模式?
某些不好的关系模式可能导致哪些问题?
下面通过例子进行分析:;描述教学管理数据库:
学号(sno),姓名(sname),年龄(age),所在系别(dept),所在系的系主任姓名(Mn),选修的课程号(cno),该课程的成绩(score)
用一个单一的关系模式来表达:
SCD(Sno,Sname,Age,Dept,Mn,Cno,Score)
语义定义如下:
一个系有若干个学生,但一个学生只属于一个系;
一个系只有一名系主任;
一个学生可以选修多门功课,每门课程可有若干学生选修;
每个学生学习课程有一个成绩。;教学管理数据库的一个实例: ;关系模式SCD存在的问题:
1. 数据冗余
浪费大量的存储空间
例:每一个系主任的姓名重复出现
2. 更新异常(Update Anomalies)
数据冗余 ,更新数据时,维护数据完整性代价大。
例:某系更换系主任,或学生改名后;关系模式SCD存在的问题(续):
3. 插入异常(Insertion Anomalies)
该插的数据插不进去
例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。又如,学生未选课,则学生信息无法输入. (为什么?)
4. 删除异常(Deletion Anomalies)
不该删除的数据不得不删
例,如果某个系的学生全部毕业了, 我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。;结论: 关系模式SCD不是一个好的模式。
“好”的模式应该满足:
不会发生插入异常、删除异常、更新异常,
数据冗余应尽可能少。
产生的原因:模式中的某些数据依赖引起的
解决方法:分解!!!
学生关系S(SNO,SN,AGE,DEPT)
选课关系SC(SNO,CNO,SCORE)
系关系D(DEPT,MN);分解后: (左上:S; 左下:Dept; 右: SC);分解后的关系模式是“好” 的。
不过,一个好的关系模式并不是在任何情况下都是最优的。
如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把“不好”的关系数据库模式转变为“好”的关系数据库模式,这就是关系的规范化。
规范化又可以根据不同的要求而分成若干级别。
数据库模式的好坏和关系中各属性间的依赖关系有关,因此,我们先讨论属性间的依赖关系,然后再讨论关系规范化理论。;;函数依赖
平凡函数依赖与非平凡函数依赖
完全函数依赖与部分函数依赖
传递函数依赖
;1. 函数依赖
定义6.1 设R(U)是一个属性集U上的关系模式,X , Y ? U, r是R(U) 上的任意一个关系,如果成立
对?t , s ? r,若t[X] = s[X],则t[Y] = s[Y]
则称 “X函数确定Y” 或 “Y函数依赖于X”,记作
显示全部