文档介绍:数据库原理与应用数据库系统概论第四版王珊萨师煊第6章关系数据理论?数据库设计的一个最基本的问题是怎样建立一个好的数据库模式。 Codd 提出了一套关系数据库设计理论—关系的规范化理论,根据现实世界存在的数据依赖进行关系模式的规范化处理,从而得到一个好的数据库设计。 问题的提出?1、问题的提出?关系的描述: R(U,D,DOM,F) ??关系是一个五元组。 R 为关系名, U 为属性集合, D 为属性组 U 中属性所来自的域, DOM 为属性到域的映射集合, F 为属性间数据的依赖关系集合。 问题的提出(续) ?2、数据依赖?属性间数据的依赖关系集合 F 是描述关系的元组语义,限定关系内部属性与属性间必须满足的约束条件。?数据依赖是通过一个关系中属性间值的依赖与否体现出来的数据间的相互关系。?最重要的数据依赖是函数依赖(FD) 和多值依赖(MVD) 问题的提出(续) ?实例:建立一个数据库,涉及的对象包括: 学生的学号(Sno) 、所在系(Sdept) 、系主任姓名(Mn) 、课程名(Cname) 、成绩( Grade )。要求如下: ?(1) 一个系有若干学生,但一个学生只属于一个系; ?(2) 一个系只有一个系主任; ?(3) 一个学生可以选多门课程,每门课程有若干学生选修; ?(4) 每个学生学习每一门课程有个成绩。建立关系模式: Student(SNO,SDEPT,AME,GRADE) 这个关系模式存在 4个问题: (1) 数据冗余:一个学生选修多门课程,所在系和系主任就重复存储多次。(2) 更新异常: 当更新某些数据时,容易造成存储数据的不一致性。如换系主任了, 则必须修改与该系学生有关的每一个元组。(3) 插入异常:若某个学生未学习课程, 则他的信息就无法插入。(4) 删除异常: 当要删除学生所有成绩时,将所有关于该学生的信息都删除了。 F={SNO ? SDEPT,SDEPT ? MN,(AME) ? G} 原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖 F={SNO ? SDEPT,SDEPT ? MN,(AME) ? G} S(SNO,SDEPT) SG(AME,Grade) DEPT(SDEPT,MN) 规范化?规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。?1、函数依赖?定义?设 R(U) 是属性集 U 上的关系模式, X,Y 是U的子集,若对于 R(U) 的任意一个可能的关系 r ,r 中不可能存在两个元组在 X 上的属性值相等,而在 Y 上的属性值不等,则称 X 函数确定Y或Y函数依赖于 X,记作 X?Y。?几点说明: ?(1) 函数依赖不是指关系模式 R 的某个或某些关系实例满足的约束条件,而是指 R 的所有关系实例均要满足的约束条件。?(2) 函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。我们只能根据数据的语义来确定函数依赖。?(3) 数据库设计者可以对其做出强制的规定。 规范化(续) ?1、函数依赖?基本术语和符号?若X? Y,但Y?X ,则称 X?Y 是非平凡的函数依赖,反之称为平凡的函数依赖。?若X?Y,则 X叫做决定因素?若X?Y,Y?X,则记作 X ?? Y ?若Y不函数依赖于 X,则记作 X ? Y 规范化(续)