1 / 60

第七章 逻辑数据库设计 任务:把概念数据库模式变换为逻辑数据库模式 特点:数据库设计从这一阶段起依赖于逻辑数据模型和 DBMS

G. 第七章 逻辑数据库设计 任务:把概念数据库模式变换为逻辑数据库模式 特点:数据库设计从这一阶段起依赖于逻辑数据模型和 DBMS ( 以下以关系模型和关系 DBMS 为基础讨论逻辑数据库设计 ) 目标:  满足用户的完整性和安全性要求;  动态关系至少达到 3NF ;静态关系至少达到 1NF;  在逻辑级支持数据库各种事务的高效率运行; 存储空间利用率高。 第一节 形成初始关系数据库模式 第二节 关系数据库设计理论 第三节 关系模式作规范化方法

lupita
Download Presentation

第七章 逻辑数据库设计 任务:把概念数据库模式变换为逻辑数据库模式 特点:数据库设计从这一阶段起依赖于逻辑数据模型和 DBMS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. G 第七章 逻辑数据库设计 任务:把概念数据库模式变换为逻辑数据库模式 特点:数据库设计从这一阶段起依赖于逻辑数据模型和DBMS (以下以关系模型和关系DBMS为基础讨论逻辑数据库设计) 目标:满足用户的完整性和安全性要求; 动态关系至少达到3NF;静态关系至少达到1NF; 在逻辑级支持数据库各种事务的高效率运行; 存储空间利用率高。 第一节形成初始关系数据库模式 第二节关系数据库设计理论 第三节关系模式作规范化方法 第四节关系模式的优化 第五节定义关系完整性和安全性约束 第六节子模式定义 第七节逻辑数据库的性能估计

  2. G1 第一节 形成初始关系数据库模式 初始关系数据库模式是指使用简单方法直接由概念数据库 模式生成的关系数据库模式。它使用关系模式描述概念模 式中的实体型以及实体型之间的联系型。当完成从概念模 式到初始关系模式的变换之后,应该和用户协商,确定每 个初始关系模式的函数依赖集,使用关系数据库设计理论, 对关系模式进行规范化处理。 从概念模式到初始关系模式的变换方法如下: 1.普通实体型变换为关系模式R 2.弱实体型W变换为关系模式R 3.实体型E的多值属性A变换为关系模式T 4.实体型之间的联系型R的变换为关系模式W 5.超类/子类联系型变换为关系模式。

  3. G11 1.普通实体型E变换为关系模式R 把普通实体型E的全部简单属性、以及复合属性中的简单子 属性,映射到关系模式R,直接作为R的属性。取实体型E的 键作为R的主键。例如,下边的实体型教师E: 学校 信箱 邮编 市 区 单位 证号 工资 地址 课程 教研室 姓名 教师 按上述规则生成关系: R(姓名,证号,工资,邮编,市,区,学校,信箱,课程,教研室)

  4. G12 2 弱实体型W变换为关系R 设弱实体型W的识别实体型为E。把W的所有简单属性及复合属性中 的简单子属性连同E的键映射到R,作为R的属性。把E的键和W的部 分键组合为R的键。例如,下边的弱实体型婴孩及其识别型父亲 区号 房号 床号 姓名 单位 证号 位置 姓名 性别 1 N 父子 E 父亲 婴孩 W 按上述规则生成关系:R(父亲证号,姓名,性别,区号,房号,床号)

  5. G13 3 具多值属性的实体 具多值属性A的实体E变换为关系S, 方法是为属性A建立关系T。 设E的键为k,则T的结构如下: 若A是简单属性,则T的属性为{k,A}. 若A是复合属性(a1,a2),则T的属性为{k,a1,a2} 多值属性(简单属性) 任课编号(证号,课号) 年 校 学衔 证号课号 001 A11 001 A12 002 A11 002 A12 姓名 证号 学历 任课编号 多值属性(复合属性) 学历(证号,年,校,学衔) 教师 单值简单属性 名字(证号,姓名) 证号 年 校 学衔 001 81 北大 学士 001 84 北大 硕士 001 87 清华 博士 002 90 中大 学士 003 91 中大 学士 证号姓名 001 陈大 002 赵二 003 张三

  6. G14 编 号 课 号 姓名 系属 名称 4.实体联系型R变换为关系W 首先把实体型A、B变换为 关系S、T,然后 情况1;若对应约束是1:N (含1:1) 方法1:取1方的键,添加到 N方,作为N方的外部键; 方法2:构造关系w,至少含 两个属性,分别是A、B的 键,若联系型R有属性,则 还包括R层次结构中的全 体简单属性. 情况2:若对应约束是M:N, 采用情况1的方法2。 学生 课程 N N 班主任 任教 学时 1 M 教师 教师 教 号 教 号 姓名 职称 姓名 职称 教号姓名职称 001 陈大讲师 002 赵二助教 003 张三教授 课程表 课号名称 901 哲学 902 语文 903 公英 教师表 学生表 编号姓名系属教号 851 何东数学 001 852 王西物理 001 853 马北化学 003 教号课号学时 001 901 2 002 901 3 002 902 2 联系表

  7. G15 5.把超类/子类联系变换为关系 设超类实体型C的属性是k,A1,…, An,其中k是键。 E1,…, Em是C的子类。 方法1:建立超类对应的关系,其属性是C的属性,k是键; 建立子类Ei对应的关系,其属性是Ei的属性和k,k是键。 要求各子类在k的投影是超类在k投影的子集。 例如: 超类‘员工’对应的关系:员工(证号,姓名,性别) 子类‘医师’对应的关系:医师(证号,学位) 子类‘护士’对应的关系:护士(证号,工龄) 方法2:建立子类Ei对应的关系,其属性是C和Ei的属性,k是键。 适合于全域约束和正交约束的情况。 例如: 子类‘医师’对应的关系:医师(证号,姓名,性别,学位) 子类‘护士’对应的关系:护士(证号, 姓名,性别,工龄) 方法3:综合超子类所有属性建立关系,增添一个特殊属性t, 用来说明元组所属的子类,k是键; 适合于正交约束的情况。 例如, 建立关系:员工(证号,姓名,性别,学位,工龄,职务) 接下页

  8. G151 方法4:综合超子类所有属性建立关系, k是键, 增添m个特殊属性ti,用来说明元组是否属于子类Ei。 适合于子类相交的情况。 例如,在下边的超子类中,有员工兼任教师和行政人员。 证 号 姓 名 性 别 员工 相交子类 o 课程 业务 教师 行政 学时 职位 可以用下边关系表示: 员工(证号,姓名,性别,课程,学时,业务,职位,a,b) a=1,表示该员工是教师;b=1表示该员工是行政人员。

  9. G16 6.把范畴与共享子类变换为关系 设C是E1,…, Em的范畴或共享子类, 若所有Ei有相同的键k,则用C的所有属性连同k建立一个 关系L,k作为L的键。 若所有Ei有不同的键,则用C的所有属性及一个特殊属性 k建立一个关系L,k作为L的键,并将k作为外部键加入到 E1,…, Em中。 转换方法1 教师(证号,姓名,课程,时数) 干部(证号,姓名,业务,职务) 工人(证号,姓名,工种,工龄) 住户(证号,房号,水费,电费) 转换方法2 教师(教号,姓名,课程,时数,编号) 干部(证号,姓名,业务,职务,编号) 工人(工号,姓名,工种,工龄,编号) 住户(编号,房号,水费,电费) 例如: 干部 工人 教师 u  住户

  10. G17 7.确定函数依赖集 经过前述变换,概念数据库模式的实体联系模型已经 变为初始关系数据库模式。但其中某些关系模式可能 存在后边指出的冗余问题、插入问题、更新问题和删 除问题。这就需要对所产生的初始关系数据库模式进 行后边介绍的规范化处理。要进行规范化处理,首先 必须对初始关系数据库模式作深入分析,与用户协商, 确定属性之间的函数依赖(第二节)。

  11. G2 第二节 关系数据库设计理论 初始逻辑关系模式,可能存在插入异常、删除异常、更新异常和数 据冗余问题。这是由属性之间存在的数据依赖造成的。最重要的数 据依赖是函数依赖和多值依赖。 关系数据库规范化理论是1970年Codd提出的函数依赖概念发展起来 的,是指导关系数据库设计工作的基本理论。根据这个理论去确定 关系数据库模式的关系模式群以及每一关系模式的属性集合,确定 如何将这些相互关联的关系模式组建成一个合适的关系模型。用这 种方法设计的关系数据库可以避免出现可能存在的插入异常、删除 异常、更新异常问题和改善数据冗余。根据关系数据库规范化理论 去设计性能较优的关系模式,这个工作过程称为关系模式的规范化。 一 问题的提出 二 函数依赖 三 数据依赖的公理系统 四 关系模式的规范形式 五 多值依赖与第四范式 六 连续依赖与第五范式

  12. G21 一 问题的提出 考虑关系模式:学生(学号,系名,系主任,课名,成绩) 假定学校的教学环境有以下的基本情况: (1)一个系有多名学生,但一个学生属于并只属于某一个系; (2)一个系有且只有一名主任; (3)每个学生可选多门课程,每门课程供多名学生选修. (4)每个学生修每门课程都有一个成绩。 这意味上述关系‘学生’的属性之间存在如下的‘决定’关系: 学号决定系名,系名决定系主任,(学号,课名)决定成绩。 对‘决定’关系进行形式化描述,就得出后边的函数依赖概念。 上述关系模式有以下四个问题: 1)插入异常:系刚成立,没有学生,使系名和主任信息无法存入; 2)删除异常:全体学生毕业,资料删除,系名和主任信息随之删除; 3)数据冗余:主任数据重复存储,降低时空效率,增加维护复杂性; 4)数据更新:更新冗余数据容易引起数据不一致。 四个问题的产生原因是: 关系模式的属性之间存在较复杂的‘决定’关系, 解决方法是对属性集合作适当分组,即后边介绍的规范化处理。

  13. G22 二 函数依赖 定义1设R是关系模式,U是其属性集,X、Y是U的子集。 对R任取实例r,对r任取两个元组t1和t2. , 若 t1和t2在X取等值可导出在Y取等值, 则称Y函数地依赖于X,或X函数地确定Y。记XY (x称为决定因素,y称为依赖因素)  若X Y,YX,即X和Y互相函数依赖,则记作XY. 例如,学号身份证号。 注意: 1.函数依赖实际是对现实世界某些强制性约束的抽象描述。 2.若YX则XY自然成立,称为平凡函数依赖; 若YX,则XY被称为非平凡的函数依赖; 3.关系模式上全体函数依赖由两部分组成:基本部分直接 由语义得到,其它部分由公理系统导出。 接后页

  14. G221 [例] 考虑关系模式;学生(学号,姓名,课程,分数) 设有函数依赖:学号姓名 学生(学号,姓名,课程,分数) 该函数依赖意味着应用领域有这么一个约束: 关系模式的任意实例(例如下边列出的两个实例), 实例中的任意两行, 只要这两行在学号等值,那么这两行在姓名也必须等值。 学号姓名课程分数 M01 陈大数学 81 M01 陈大英语 82 M02 赵二物理 91 M02 赵二化学 92 学号姓名课程分数 P01 张三数学 83 P01 张三英语 84 P02 李四物理 93 P02 李四化学 94 关系实例2 关系实例1 接后页

  15. G222 定义2若X Y,而X的任何真子集Z不成立ZY, 则称X完全函数确定Y,或Y完全函数依赖于X; 若XY,但Y不完全函数依赖于X, 则称X部分函数确定Y,或称Y部分函数依赖于X.  显然,若X仅包含一个属性,则XY意味着Y完全函数依赖于X。 [例] 考虑关系模式;学生(学号,姓名,课程,分数) 设有函数依赖:学号姓名,{学号,课程}分数。 上述两个函数依赖都是完全依赖。 由这两个函数依赖可以推出{学号,课程}姓名, 这个新的函数依赖是部分依赖。 接后页

  16. G223 定义3设R是关系模式,U是其属性集,X、Y、Z是U的子集, YX不成立,Z-X、Z-Y、Y-X非空。 若XY,YZ,则称X传递地函数确定Z, 或称Z传递地函数依赖X  [例1]考虑关系模式;学生(学号,系,主任) 设有函数依赖:学号系主任。 由于系学号不成立,主任-学号、主任-系、系-学号均非空, 故主任传递地函数依赖于学号。 [例2]考虑关系模式;学生(身份证号,学号,系) 设有函数依赖:身份证号学号系 虽可推出身份证号系,但不能说系传递地函数依赖于身份证号。 [例3]考虑关系模式;学生(学号,姓名,性别) 令X=学号,Y= (姓名,性别),Z=姓名。设有函数依赖XY, 虽然YX不成立,且可推出YZ,但因Z-Y为空, 故不能说Z传递地函数依赖于X。 接后页

  17. G224 定义4设R是关系模式,U是其属性集,KU. 若K完全函数确定U,则称K是R的候选键。  包含在任意候选键内的属性称为键属性,不是键属性的属性称为 非键属性。显然,候选键可以唯一标识关系的元组。候选键可能 不唯一,通常指定一个候选键作为识别元组的主键。 定义5若关系R的属性子集X是另一关系S的候选键,则称X是R关 于S的外部键。 主键和外部键描述了关系之间的联系。 下边三个关系实例表中,有下划线的属性子集是主键。 表2的学号是关于表1的外部键,课号是关于表2的外部键。 学号 姓名 班别 0001 陈大 0198 0002 赵二 0198 0003 张三 0298 0004 李四 0298 学号课号 成绩 0001 001 78 0001 002 87 0002 001 90 0002 002 65 课号 课名 教师 001 政治 王东 002 语文 马南 003 数学 冯西 004 物理 杨北 1:学生名册 2:学生选课表 3:课程清单

  18. G23 三. 数据依赖的公理系统 定义6 设关系模式R有属性集U和函数依赖集F. 若对R任一个使F成立的关系实例r,函数依赖XY都成立, 则称F蕴含XY ‘F蕴含XY’意味着关系实例只要满足F就必然满足XY。 例如{工号工种,工种定额}蕴涵工号定额,因为任两元组, 只要在工号等值,就必在工种等值,从而在定额等值。  [Armstrong公理系统]设关系模式R具有属性集合U和函数依赖集合F. 三条推理规则: 自反律:若YXU,则F蕴含XY.(XY是平凡依赖,与F无关) 增广率:若F蕴含XY,ZU,则F蕴含XZYZ. 传递率:若F蕴含XY,YZ,则F蕴含XZ.  定理1 Armstrong推理规则是正确的.(简称为A规则)  我们下面从函数依赖和蕴含的定义来证明A公理的三条推理规则. 接后页

  19. 证明A公理的三条推理规则: G231 自反律:若YXU,则F蕴含XY. [证]设YXU,对于R任实例r任两元组t和s, 若t[X]=s[X],则t[Y]=s[Y],故XY成立 YXU X Y t s 实例表r两行s、t在X等值,在Y当然也等值. 增广率:若F蕴含XY,ZU,则F蕴含XZYZ. [证]对R任实例r的任两元组t和s, 若t[XZ]=s[XZ],则t[X]=s[X],t[Z]=s[Z], 因F蕴含XY,ZU,故t[Y]=s[Y],t[Z]=s[Z], 故有t[YZ]=s[YZ],所以F蕴含XZYZ. XY X Y Z t s 实例表r两行s、t在X、Z等值,可导出在Y、Z等值. XY YZ 传递率:若F蕴含XY,YZ,则F蕴含XZ. [证]对R任实例r任两元组t和s, 若t[X]=s[X],则由XY知t[Y]=s[Y], 再由YZ知t[Z]=s[Z]  X Y Z t s 实例表r两行s、t在X等值,可导出在Y、Z等值. 接后页

  20. G232 定理2 三条推理规则: 1) 合并规则:若XY,XZ则XYZ 2)伪传递规则:若XY,YWZ则XWZ 3) 分解规则:若XY,Z Y则XZ  可用定义证,但下面应用A公理规则证. 证1)由XY和增广率得XXY, 由XZ和增广率得XYYZ,最后由传递率得XYZ . 证2)由XY和增广率得XWYW, 由YWZ和传递率得XWZ . 证3)由ZY及自反率得YZ,再由XY和传递率得XZ . 工号 姓名 工种 班次 定额 0001 陈大 车工 1 90 0002 赵二 车工 2 85 0003 张三 钳工 1 60 0004 李四 钳工 1 60 0005 王五 钳工 2 55 接后页

  21. G233 引理1 XAB的充分必要条件是XA,XB.  使用推理规则(定理2)证明引理1: 充分性由合并规则直接得到,必要性由分解规则直接得到。 使用A公理推理规则(定理1)证明引理1: 充分性由增广律和传递律得到,必要性由自反律和传递律得到。 使用函数依赖的定义证明引理1: 无论是XAB还是XA、XB,按定义都意味着事实: 对任意实例的任意两行,只要在X等值,则在A和B也等值。 引理1的推广形式是: XA1A2…Ak的充分必要条件是XAj(1jk) 接后页

  22. G234 定义7 设关系模式R有属性集U和函数依赖集F, 由F蕴含的所有函数依赖称为F的闭包F+  XY PQ XY由F所蕴涵的判别 条件由后边的引理2给出 F F+ MN HK 定义8 设关系模式R有属性集U和函数依赖集F,XU. 定义XF+={A|XA能由F通过A准则导出} 为属性子集X关于函数依赖集F的闭包。  例 关系模式R(A,B,C) , 函数依赖集F{AB,BC} 若X=A,则x+F={A,B,C} 若X=B,则x+F={B,C} 若X=C,则x+F={C} A X XF+ U B C XB能由F通过A准则导出的 判别条件由后边的引理2给出 接后页

  23. G235 引理2 设关系模式R有属性集U和函数依赖集F, 则XY能由F按A规则导出的充要条件是YXF+ . 证明:设Y=B1 B2 BK,则 YXF+ (由属性子集闭包XF+的定义) XB1,,XBK由F按A规则导出. (由引理1) XY由F按A规则导出.  接后页

  24. G236 算法1 给出属性子集X及函数依赖集F,计算X+F 1. X0:=X; /*属性子集X0从X开始沿依赖集F扩张*/ 2. B:={A|VWF,VX0,AW}; /*扫描F中决定因素V含于X0的函数依赖VW, 取W的所有属性*/ 3. X1:=X0 B; 4. if X1X0 then X0:=X1;goto 2 else X+::=X1 endif 引理3 用X*F表示算法1从属性子集X出发按依赖集F的计算结果, 若XYU,则X*FY*F . 算法1的终止性由定理3给出,至于X*FY*F 则是显然的 定理3 算法1正确算出属性子集X关于依赖集F的闭包,即X*F=XF+ 证终止性:因若X1=X0算法即停,否则集合X会增加属性。 而U所含属性是有限的,故算法经有限次循环终止。 证正确性:后页 接后页

  25. [正确性]记X*为算法的结果属性集合。 (1)证明X*X+F .即证XX*由F按A规则导出。记X^是X的动态集合. 用X0和X1分别表示X^在算法每轮循环的始态和终态, 因X0Vi(自反律)和ViWiF(算法),故有X0Wi(传递律), 从而X0B=Wi(合并规则),于是有X0X1=BX0(增广律), 因首轮循环有X0=X,并考虑到循环次数的有限性, 故得XX*(传递律). (2)证明X+F X*. V  X+F ,往证VX*。 因XV由F按A规则导出,设导出过程共使用了n次A规则。 以下对n运用归纳法证明VX*。 当n1,只有两种情况.情况1:VX,由XX*立知VX*; 情况2: XVF,由算法,V必加入到X^中,从而VX*。 设nk时结论成立,现考虑n=k+1。用Ti表示第i次使用A规则。 A公理有三条规则,分别考虑Tk+1应用A公理的三种情况: 自反律.Tk后已证VX,因XX*,故VX*; 增广律.Tk后已证X1V1,ZU,X=ZX1, V=ZV1 (注意X1V1未必F) 由归纳假设及引理3,V1X1*F X*。又ZXX* ,故V=ZV1 X* . 传递律.Tk后已证XY,YV,类似得YX*,进而VX* .证毕 G237 接后页

  26. G238 A公理的有效性是指:由F出发,按A公理推导的函数依赖一定在F+中; A公理的完备性是指:F+中所有函数依赖必可由F出发按A公理推出. 定理4 设关系模式R有属性集U和函数依赖集F. A公理系统是有效和完备的. 证明有效性:‘若依赖xy由F按A公理推出,则必为F所蕴含.’ TH1对此已作证明. 证明完备性:‘若依赖xy不能由F按A公理推出,则不为F蕴含.’ i 由xF+的封闭性,对F任意依赖vw,只要vxF+,则必有wxF+ ii 由i知关系模式R的如下特例 r 满足依赖集F: r仅有两行,仅在x+的属性取等值。 iii 由引理2,若依赖xy不能由F按A公理推出, 则必有y  x+. 于是y有非空子集y1U-x+. 这样一来,实例r满足F但不满足依赖xy. 故依赖xy不为F蕴含。 证毕。  U m= x+ y a b c 12 a b c 34 实 例 r 接后页

  27. G239 定义9 设G、F是两个函数依赖集,若G+=F+,则称G、F等价 引理4 函数依赖集G、F等价的充要条件是:FG+,GF+ 证必要性:若G、F等价,即G+=F+,则FF+= G+,GG+=F+ 证充分性:若FG+,GF+, XYF+ ,由定理4, XY可由F经A公理推出,当然可以由G+经A公理推出。 故XYG++= G+,因此F+G+. 利用对称性同样可得:G+F+ . 故G+=F+,即G和F等价。  判断FG+ 的操作: XYF,检查是否成立XYG+ ? 即检查XY是否可由G经A公理推出? 即检查是否成立YXG+ ? 属性子集X通过函数依赖集G扩充的闭包XG+由算法1形成。 接后页

  28. G2310 定义10 满足以下条件的函数依赖集F称为极小函数依赖集: (1) F任一依赖的右边是简单属性; (2) XAF , F-{XA}与F不等价; (3) XAF , ZX(真子集), (F-{XA}){ZA}与F不等价 定理5 每个函数依赖集F都等价于一个极小函数依赖集。 以下证明是构造性的,仅列出步骤: 1 对F中形如XA1AK者,用{XAi|i=1k}取代 (根据引理1) 2 检查F每项XA,令G=F-{XA},若F、G等价,则删去XA, 判定G、F等价的方法: GF+( ) , FG+(?)  F中任意依赖XAG+ (A是单个属性) XA由G按A公理导出 AXG+  AXG+(由算法7.2.1实现) 3 逐项处理XAF,设X=X1XK,逐一考查Xi 。 令Gi=(F-{XA})({X-Xi}A), 若Gi与F等价,则以{X-Xi}A取代XA , 验证方法:检查是否满足A(X-Xi)F+ 注意每次改造都保证新旧函数依赖集是等价的。  接后页

  29. G2311 [例]考虑关系模式:选课(学号,课号,班别,老师,成绩) 的三个函数依赖集: F1={学号课号成绩,学号班别,班别老师}, F2={学号课号成绩,学号班别老师}, F3={学号课号成绩,学号班别,班别老师,学号老师}, 根据定义,其中只有F1是最小函数依赖集。 [例]最小函数依赖集可能是不唯一的. 下边的Fm1和Fm2都是函数依赖集F的最小覆盖。 F ={AB,BA,BC,AC,CA} Fm1={AB,BC,CA} , Fm2={AB,BA,AC,CA} 该例计算最小函数依赖集的算法: 只须检查定义中的条件(2),即检查F每项XA, 令G=F-{XA}, 若F、G等价,则将该项XA删去。 G、F等价的充要条件是AXG+

  30. G24 • 关系模式的规范形式 • 基于函数依赖概念的关系模式的范式(简称范式)主要有四种, • 即第一范式、第二范式、第三范式和BCNF范式.关系模式满足 • 这些约束可在一定程度上避免本节开头提到的四个异常问题: • 冗余问题、插入问题、更新问题和删除问题。 • 定义1 若关系模式每个属性的值都是不可分的简单数据项, • 则称该关系模式为满足第一范式,简写为1NF. • 1NF是对任何关系模式的最起码的要求。 • 定义2 满足1NF的关系模式,若所有非键属性完全地依赖于 • 所有候选键,则称之为满足第二范式,简写为2NF. • 显然若所有候选键都是单属性,则必满足2NF. • 定义3 满足2NF的关系模式,若所有非键属性不传递地依赖 • 于所有候选键,则称之为满足第三范式,简写为3NF. • 定义4 满足1NF的关系模式,若每个函数依赖XY,其决 • 定因素X都含有候选键,则称之为满足BCNF范式. • [关系模式的分解] [例1] [例2] [例3] [例4]

  31. G24a 定义1 若关系模式每个属性的值都是不可分的简单数据项, 则称该关系模式为满足第一范式,简写为1NF.  定义2满足1NF的关系模式,若所有非键属性完全地依赖于 所有候选键,则称之为满足第二范式,简写为2NF.  [例1] 课程安排(座数,课室,时间,课号,教师,系属) 该关系模式由简单属性组成,故满足1NF。 按图示的函数依赖集,{课室,时间}是唯一的候选键,是主键。 有三个非键属性:课号、 教师和座数。 非键属性‘座数’部分依赖于主键, 故该关系模式不满足2NF.仅满足1NF.在维护管理上有四种异常: 插入问题:某课程尚未排课,键值空,其它基本数据不能录入。 删除问题:某课程取消选课,其基本数据被删除。 修改问题:某课室时间改课号,还要附加改教师和系属。 冗余问题:座数重复存储,这是由对键的部分依赖造成的; 系属重复存储,这是由对键的传递依赖造成; 重复存储也造成修改复杂化。

  32. G24b 定义2满足1NF的关系模式,若所有非键属性完全地依赖于 所有候选键,则称之为满足第二范式,简写为2NF. 显然若所有候选键都是单属性,则必满足2NF.  定义3 满足2NF的关系模式,若不存在非键属性传递地依赖 于某个候选键,则称之为满足第三范式,简写为3NF.  [例2] 课程安排(课室,时间,课号,教师,系属) {课室,时间}仍是唯一的候选键,是主键。 三个非键属性‘课号’、 ‘教师’和‘座数’均完全依赖于主键,故关 系模式满足2NF.但后两个非键属性传递地依赖于主键,故关系 模式不满足3NF,仅满足2NF.在维护管理上仍有四种异常: 插入问题和删除问题仍存在: 冗余问题虽然没有例1严重,但仍存在对键传递依赖造成的冗余, 重复存储同样造成更新操作的复杂化。

  33. G24c 定义3 满足2NF的关系模式,若所有非键属性不传递地依赖 于所有候选键,则称之为满足第三范式,简写为3NF.  定义4 满足1NF的关系模式,若每个函数依赖XY的决定因 素X都含有候选键,则称之为满足BCNF范式.  [例3] 选课(教师,学生,课程) 设每位教师仅上一门课 按图示的函数依赖集,{教师,学生}和{学生,课程}都是候选键, 无非键属性,故关系模式满足3NF. 但因函数依赖‘教师课程’的决定因素‘教师’,不含候选键, 故关系模式不满足BCNF.仅满足3NF. 该例消除了冗余,但仍有插入异常和删除异常问题:即使设 置了课程并安排了教师,但只要学生还没有选课,则课程和 教师的信息就不能载入。此外,若有学生因毕业或退学等原 因被删除记录时,课程和教师的信息也连同一起被删除了。

  34. G24d 定义4 满足1NF的关系模式,若每个函数依赖XY的决定因 素X都包含候选键,则称之为满足BCNF范式.  当关系模式具有多个候选键,而这些候选键具有公共属 性,在这种情况下,仅满足3NF的关系模式仍然有插入异常 和删除异常问题,原因是存在键属性对另一个候选键的部分 依赖和传递依赖。需要进一步强化约束,即要求满足BCNF. [例4] 中学生(学号, 班别,座号, 姓名,性别,地址) 候选键是{学号}和{班别,座号}, 每个函数依赖XY的决定因素X都是候选键,故满足BCNF. 若一个关系数据库的所有关系模式都满足BCNF,则在函数 依赖范畴内已达到最高的规范化程度,已经消除了插入和 删除异常问题。含有两个属性的任意关系模式,所满足的最 高规范模式必然是BCNF。 当属性之间存在着组对应的情况时,就要求在数据依赖的 另一个范畴(多值依赖)寻求规范化方法。

  35. G24e 当关系模式所满足的范式条件较低时,会出现插入异常、 删除异常、更新异常和数据冗余问题。解决方法是重组属 性,使关系模式的子模式满足较高的范式条件。看下例: [例5] 学生(学号,课程,成绩,系属,宿舍) 1NF 分 解 学生1(学号,课程,成绩) BCNF 学生2(学号,系属,宿舍) 2NF 分 解 学生21(学号,系属)BCNF 学生22(学号,宿舍)BCNF [例6] BCNF 分解 选课1(成绩,教师,学生) 选课2(教师,课程) 选课(成绩,教师,学生,课程) 3NF BCNF

  36. G25 五.多值依赖与第四范式 关系模式属性之间的数据依赖,前边所讨论的情况属于函数依 赖范畴,即当属性子集X取定一个值时,属性子集Y有唯一的一 个值与之对应,有点类似于数学中的单值函数。但在某些应用 领域中,关系模式的属性之间出现‘组对应’的情况,即当属性 子集X取定一个值时,属性子集Y有一组值与之对应,有点类似 于数学中的多值函数。此时的数据依赖属于下边讨论的多值依 赖范畴。基于多值依赖概念的范式是第四范式。 [多值依赖的例子] [多值依赖的定义] [第四范式的定义]

  37. G25a [多值依赖的例子] 设公司有四个仓库: 在康乐仓库中,两个雇员(陈大和赵二) 管理着两种物资(马达和水泵); 在天河仓库中,一个雇员(张三) 管理着两种物资(种子和农药); 在唐湾仓库中,两个雇员(李四和王五) 管理着一种物资(饲料); 在新造仓库中,一个雇员(马六) 管理着一种物资(化肥)。 这是一种‘组对应’关系:每一个仓库对应 一组雇员和一组物资。由于1NF是关系模 式的最低要求,故只能把 ‘组’拆散,将各 元素单独载入关系实例中,如左表所示。 数据冗余很大。可从两个角度描述这表: 每个仓库对应一组雇员,无论管理何种物资. 每个仓库对应一组物资,无论雇员是谁. [注意]若规定每个仓库一个雇员和一种物资, 则就退回到函数依赖的情况。 仓库 雇员 物资 康乐 陈大 马达 康乐 陈大 水泵 康乐 赵二 马达 康乐 赵二 水泵 天河 张三 种子 天河 张三 农药 唐湾 李四 饲料 唐湾 王五 饲料 新造 马六 化肥 给定一个仓库, 雇员与物资的对应 形成完全二分图; 每个仓库记录数= 雇员数物资数

  38. G25b 多值依赖的定义: 定义 设R是关系模式,U是其属性集合。X、Y是U的子集, Z=U-X-Y. 若对R任一实例r,r在(X,Z)上每个值对应一组 Y值,这种对应关系与Z无关,则称X多值确定Y,或称Y 多值依赖于X,记作X Y. 若Z为空集,称X Y为平凡的多值依赖,否则称为非平 凡的多值依赖。  定义中有两层意思: X的一个值与Y的一组值对应;这种对应关系与Z无关。 第二层意思才是定义的强制性约束,也是数据冗余的主因。 多值依赖的性质: 对称性:使用上述定义的符号,若X Y,则X Z . 实例r的X或Z每增删一个值,r就须同步增删多条记录。 若XY,则XY。故可把函数依赖看成多值依赖的特款。 具多值依赖的关系模式的分解: 为降低数据冗余,作模式分解,使子模式的Z=,仅有平凡 多值依赖。对前例,子模式为R1(仓库,雇员),R2(仓库,物资)

  39. G25c 第四范式的定义 具有多值依赖的关系模式,其数据冗余是很大的, 主要原因是‘X、Y的对应’与Z无关。 减少数据冗余的方法是通过分解关系模式,使子 模式仅有平凡多值依赖。 定义 若关系模式R每个非平凡多值依赖X Y (Y非X的子集),X都含有候选键,则R满足 第四范式,简记为4NF.  定义中的非平凡多值依赖实际上是函数依赖。满足 4NF的关系模式若有函数依赖,则必然满足BCNF. 反之不然,仅需考虑前例R(仓库,雇员,物资)即可, R因具有全键,故满足BCNF,但两个多值依赖 (仓库雇员,仓库 物资)的左端都不含候选 键,故不满足4NF.此例的数据冗余严重,解决方法 是把关系分解为R1(仓库,雇员)和R2(仓库,物资),两 子模式都是4NF,有非平凡多值依赖,没有非平凡 的多值依赖。

  40. G26 连接依赖和第五范式 连接依赖的定义 设关系模式R、Ri的属性集是U、Ui,UiU(1in). 若R每个容许的实例r均满足r=U1(r)Un(r) 则称R满足连接依赖,记作(R1,,Rn). 若其中某个Ui=U,则称连接依赖是平凡连接依赖。 多值依赖也是连接依赖。 第五范式的定义 设关系模式R 、Ri的属性集是U、Ui, UiU(1in). 若每个连接依赖(R1,,Rn)或是平凡连接依赖,或每个Ui 均含候选键,则称R满足第五范式,简记为5NF或PJNF.  例1:设关系模式R={A,B,C}仅满足连接依赖(AB,BC). 因为ABC是唯一的候选键,故R不满足5NF.但R满足4NF. 例2:设关系模式S={ABC}所满足的依赖约束集是 J={(AB,BC,AC),(AB,BC),B→C,C→BA}. 因为B和C都是S的候选键,故S满足5NF。

  41. G3 第三节 关系模式规范化方法 根据需求分析资料,按是否需要更新维护把关系模式划分为静 态和动态两个类型。静态类型仅供用户查询,至少满足1NF;动 态类型的特点是经常需要更新,至少要满足3NF。 关系模式规范化的主要方法是把规范形式较低的关系模式分解 为几个具有指定规范形式的子模式,但分解操作必须满足无损 连接性和函数依赖保持性。 一.分解的无损连接性 即可通过对子模式自然连接能恢复原来模式和实例。 二.分解的函数依赖保持性 即能保持原来的函数依赖信息. 三.关系模式分解算法

  42. G31 一.分解的无损连接性 [关系模式的分解] 定义1 设R、Ri是关系模式,U和Ui是对应的属性集。 若U=i=1nUi,则称={R1Rn}是R的一个分解。  [依赖集关于分解的投映] 定义2 设关系模式R具属性集U和函数依赖集F, 若={R1Rn}是R的分解, 定义F在子模式Ri属性集Ui上的投映为 Fj={XY|XYF+,XYUj }  [关系实例关于分解的投映连接] 定义3 设={R1Rn}是R的一个分解,r是R的一个实例,称 m(r)=R1(r)Rn(r) 是r在中各子模式之投映连接.  接下页

  43. G311 关系模式分解例:几个分解方案的比较 学生(学号,系属,主任) 分解1 1={P(学号),Q(系属),R(主任)} F={学号系属,系属主任}, F1=F2=F3= 不能连接为原关系实例 分解2 2={P(学号,系属),R(学号,主任)} F={学号系属,系属主任}, F1={学号系属},F2={学号主任} 能连接为原关系实例,但依赖约束不能恢复 分解3 3={P(学号,系属),R(系属,主任)} F={学号系属,系属主任}, F1={学号系属},F2={系属主任} 既能连接为原关系,又能保持函数依赖约束 接下页

  44. G312 [引理1]关于分解的投映连接的性质 1 r  m(r) 2 若s= m (r) ,则Rj (r)=Rj (s) 3 m(m( r))= m( r)  注意:从引理1知道, 关系实例r经投映连接 后,记录数目可能增 多。下例说明,经过 不适当的分解后再连 接,将恢复不了原来 的信息。 关系R 的实例 r • 工号 工种 定额 • 车工 80 • 车工 80 • 钳工 80 • 104 铣工 70 实例 r的投影 连接结果m( r) • 工号 工种 定额 • 车工 80 • 101 钳工 80 • 102 车工 80 • 钳工 80 • 103 车工 80 • 103 钳工 80 • 104 铣工 70 r投影到 工号定额 r投影到 工种定额 • 工号 定额 • 80 • 80 • 80 • 104 70 工种 定额 车工 80 钳工 80 铣工 70 自然连接 接下页

  45. G313 定义4 若对任意实例r有r=m(r),则称分解具无损连接性。  [算法1]判别分解具有无损连接性的识别算法 设关系模式R具n个属性,分解把R分解为k个子模式, 1)构造k行n列矩阵S,先对每元素取值为它的行标, 然后按子模式的属性集将矩阵的相关元素改值为a, 例如,若第i个子模式含第p、第q个属性,则置Sip=Siq=a. 2)依次考虑函数依赖集F的每个函数依赖xy, 在x对应的列上考虑相同元素所在的行号i1,i2,,im 在y对应列上考虑上述行号的元素子列,按下法改为相同符号: 若含a,则将全子列改为a;否则改为子列的最小行标. 3)最后矩阵若含全a的行,则分解具无损连接性,否则不具无损连接性 x列 y列 考虑x列中 相同元素 构成的子列 处理这几个元素: 若含a,则全改为a; 否则都取为最小行标 矩阵 xy 接下页

  46. 属属属 属 属 属 性性性 性 性 性 1 2 3 p q n 子关系1 1 1 1 1 1 1 子关系2 2 2 2 2 2 2 子关系i i i i i i i 子关系k k k k k k k G314 无损连接性的识别算法 设关系R具n个属性,分解为k个子关系 1)构造k行n列矩阵S 每元素取值为它的行标; 按子关系属性将相关元素改为a. 例如,若第i个子关系含第p、q 个属性则置Sip=Siq=a 2)依次考虑函数依赖集F的每个xy, 在x对应的列上考虑相同元素所在行号, 在y对应列上考虑上述行号的元素列, 若列含a,则全列改a;否则取最小行标. 3)最后的矩阵若含全a行,则分解无损. 初始化1 属属属 属 属 属 性性性 性 性 性 1 2 3 p q n 子关系1 1 1 1 1 1 1 子关系2 2 2 2 2 2 2 子关系i i i i a a i 子关系k k k k k k k 初始化2 x 列 中 相 同 元 素 xy y列 x列 这几个元 素,若含a, 则全改为a; 否则都取 最小行标 接下页

  47. G315 无损连接性识别算法的例题 设关系R(A,B,C,D,E)有 函数依赖集F={AC, BC, CD, DEC, CEA}, 试判断模式分解={R1(AD), R2(AB), R3(BE),R4(CDE), R5(AE)} 是否具有无损连接性。 C的125行相等 A B C D E R1 a 1 1a 1 R2 a a 2 2 2 R3 3 a 3 3a R4 4 4a a a R5 a 5 5 5 a A B C D E R1 a 1 1a 1 R2 a a 1 2 2 R3 3 a 3 3a R4 4 4 a a a R5 a 5 1 5a A B C D E R1 a 1 1a 1 R2 a a 1 2 2 R3 3a 1 3 a R4 4 4a a a R5 a 5 1 5 a AC BC 1 2 CD 3 A B C D E R1 a 1 aa 1 R2 a a a a 2 R3 aa a a a R4 a 4 a a a R5 a 5 aaa A B C D E R1 a 1 aa 1 R2 a a a a 2 R3 3 a aaa R4 4 4 a a a R5 a 5 a a a A B C D E R1 a 1 1a 1 R2 a a 1a 2 R3 3 a 1aa R4 4 4 a a a R5 a 5 1 a a CEA DEC 5 4 有纯a 的行, 具无损 连接性 接下页 此实例满足全体函数依赖 C的345行相等

  48. G316 关系分解无损连接性判别算法的正确性证明 接下页 引理1 算法1的初始矩阵有性质:j,第j行对Rj的投映元素全是a. 事实上,这是由算法的初始化手续所决定的。 引理2 执行算法1过程中,矩阵的每个符号a不可能变为其它符号. 因算法规则是‘若列含a则全列改为a,否则全列取为最小行标’. 引理3 算法1终止矩阵有性质:j,第j行对Rj的投映元素全是a. 事实上,这由引理1和引理2所决定。 引理4 算法1的终止矩阵作为关系实例必然满足函数依赖集F. 事实上,算法的实质是检查初始矩阵作为关系实例是否满足F 的每个函数依赖.若不满足某个函数依赖,则修改相关元素, 使矩阵满足这个函数依赖,故终止矩阵必满足F. 定理1 关系R的分解具无损连接性的充要条件是算法1的终止矩 阵r有一行的符号全是a.  证明必要性:若终止矩阵无全a的行,断言不具无损连接性. 一方面, 由引理4,终止矩阵r必满足函数依赖集F,且无全a的行. 另方面,由引理3,终止矩阵r的第j行对Rj的投映元素全是a(j), 故m(r)=R1(r)Rk(r)必含全a行.故rm(r).故断言真. 证明充分性:若终止矩阵有一行全a,往证具无损连接性.(略)

  49. G317 在子模式数目为2的特殊情况下,定理1有简单的形式: 定理2 设(1) ={R1,R2}是关系模式R的一个分解; (2) U1、U2和U分别是R1、R2和R的属性集合; (3) F是R的函数依赖集, 则具无损连接性的充要条件是 U1U2U1-U2F+或 U1U2U2-U1F+  记Z=U1U2 , X=U1-U2 ,Y=U2-U1 . 由于R1的属性落在Z和X,,R2的属性落在Z和Y, 因此,在定理2的情况下,算法1的初始矩阵如下图: Z X Y U1U2 U1-U2 U2-U1 R1 aaaa aaaa 1111 R2 aaaa 2222 aaaa

  50. G32 二.函数依赖保持性 定义5 设关系模式R具有属性集U和函数依赖集F,=(R1,,Rk) 是R的一个分解,Ui是Ri的属性集,Fi是F在Ui的投映。 若F+=(i=1kFi)+,则称分解具函数依赖保持性 [算法2]函数依赖保持性的判断算法 输入:函数依赖集合F、F1、F2、…、Fk,记G=(i=1kFi) 输出:是否F+=G+ 方法 (1)for 每个xyF do if y 不属于x关于G的闭包 then 输出 ‘F+G+’停止 endfor; (2)输出‘F+=G+’停止. 由引理4, F+=G+的充分必要条件是GF+及FG+, 由G的定义,前者是必然的,只需考虑后者。 该算法实际上是通过判断FG+来判别F+=G+。 接下页

More Related