收藏 分享(赏)

第3章 数据库设计.ppt

上传人:tangtianxu2 文档编号:3485536 上传时间:2018-11-04 格式:PPT 页数:55 大小:919KB
下载 相关 举报
第3章 数据库设计.ppt_第1页
第1页 / 共55页
第3章 数据库设计.ppt_第2页
第2页 / 共55页
第3章 数据库设计.ppt_第3页
第3页 / 共55页
第3章 数据库设计.ppt_第4页
第4页 / 共55页
第3章 数据库设计.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、第1部分 数据库系统基础第3章 数据库设计,高级数据库系统及其应用,第3章 数据库设计,ER数据模型,3.1,EER数据模型,3.2,逻辑数据库设计:映射ER/EER模式到关系模式,3.3,关系模式求精与规范化,3.4,DB应用,DB应用定义:一个特定的数据库,加上实现此数据库查询/更新的相关程序。 概念设计是成功设计DB应用的一个环节。 实体-关系模型(Entity-Relation model),简称ER模型,是一种非常流行的概念数据模型。 EER是基于ER的扩展模型(Enhanced ER model) ER/EER已被广泛应用于DB概念设计。它们均以图形化方式描述和捕获用户需求。 基于

2、ER/EER进行概念设计的输出为一组ER/EER图。 基于概念模型的设计,最终都必须变换/转换到可在DB中实现的逻辑数据模型。 借助RDB设计有关规范理论,不仅可对转换后的逻辑数据模式进行规范,而且可对ER/EER图进行求精。,DB设计的主要阶段与过程,DB设计的基本步骤(1),1. 需求分析 2. 概念DB设计 利用需求分析获得的信息,建立DB数据的一个抽象描述。 这一步通常利用ER/EER模型,或其它高级数据概念模型(如UML类图),来实现。 3. 逻辑DB设计 转换DB概念设计模式到指定DBMS逻辑模式。 由于需求信息本身带有很大主观性,故基于需求信息构造的ER/EER图只能提供数据的一

3、个近似描述。 4. 模式细化 5. 物理DB设计 6. 安全设计,DB设计的基本步骤(2),1. 需求分析 2. 概念DB设计 3. 逻辑DB设计 4. 模式细化 分析关系数据库模式的关系集,检查潜在问题并进行优化。与需求分析和概念设计的主观性特点不同,细化可得到强有力的规范理论支持。 5. 物理DB设计 考虑应用必须支持的一些典型预期负荷,并以此为基础进一步求精DB设计,确保它能满足预期的性能要求。 这个步骤可能包括为一些表建立索引,或指定聚集存储方式等。 6. 安全设计,3.1 ER数据模型,3.1.1 实体类型、实体集、属性和键,3.1.2 关系、关系类型和关系集,3.1.3 ER模型的

4、其他特性,ER模型简介,1. 构成ER模型的基本概念 实体与属性 实体类型、实体集与键 实体类型:定义了具有相同属性的实体模式结构,由名和属性来描述。 实体集:具有相同实体类型的所有实体集合。 实体类型描述了相同结构实体集的模式或内涵; 实体集则描述了实体类型的外延。 ER图中不区分实体类型和实体集(被视为同义词)。 关系、关系类型和关系集 ER模型的其它概念, ER图表示规定 实体集:用加矩形外框的名字来表示。 属性名:则用椭圆框起,并用直线与实体集相连。 多值属性:用双线椭圆框起; 复合属性:用名字后加注结构成份表示; 键属性:通过属性名加下划线来标识。, ER图表示规定 关系集:用名字外

5、加菱形框表示,并用直线将其与参与实体集的矩形框相连。,ER图设计举例(1),ER图设计举例 (2),ER模型的其它概念,关系属性 关系集也可以有自己的描述属性,用来刻画关系集本身的性质,而不是某个参与实体集的性质。 关系约束 指与关系集相关的约束,通过约束表达可限制参与关系各实体的可能组合。 主要类型:基数词约束、键约束和参与约束。 弱实体集 指只能附属其它实体集而存在的实体集。,在ER图中表达关系基数词和参与约束,弱实体集的几种ER建模方法(图3.5),3.2 EER数据模型,3.2.1 EER模型核心概念的形式定义,3.2.2 子类、超类与类层次结构,3.2.3 特化与泛化,3.2.4 利

6、用union子类建模,3.2.5 值集属性与复合结构属性的建模表示,3.2.6 EER与UML类图比较,3.2.7 EER作为知识表示模型,3.2.8 为大型企业/组织进行DB概念设计,EER核心概念(1),类 指实体的集合或实体集,这包括可对DB应用域实体分组的任何EER模式构造,如实体类(型)、子类、超类和类别。 EER中,任何类都允许参与一个关系。 子类、超类 子类S是一个类,子类中的实体必然是其超类C中实体的一个子集,即有关系:SC 成立 超类/子类关系也称为ISA关系,记做C/S。 子类实体除了可以从超类实体中继承所有的属性外,还可以有自己专有的属性和关系。,EER核心概念(2),特

7、化 特化ZS1,S2,Sn是具有相同超类G的一个子类集合,每个G/Si是一个超类/子类关系。G被称为泛化实体类型。 用“特化”指代由特化过程所获得的-特化子集。 特化的种类(约束) 完全特化与部分特化; 不相交特化与重叠特化。 两类约束相互独立,可以组合出四种约束。 泛化 是特化的逆过程,允许我们忽略多个实体集之间的性质差异,找出它们的共同点抽象出超类。,特化是概念上的求精,而泛化则是概念上的综合。 显然,由泛化获得超类方法,易得到完全特化的子集。,特化及其约束的EER表示,EER核心概念(3),类别(category) 类别有时也被称为union子类。 类别T是一个类,它是n个判定超类D1,

8、D2,Dn(n1)并集的一个子集。 其形式表示为:T(D1D2Dn) union子类的约束 完全约束:子类包含了其所有超类并集中的所有成员; 部分约束:子类只包含并集的一个子集。,UNION子类及其约束的EER表示(图3.8 ),基本ER模型与UML类图的特性对比,Company DB模式的EER表示,Company DB模式的UML表示,3.3 逻辑数据库设计:映射ER/EER模式到关系模式,3.3.1 映射常规实体集到关系表,3.3.2 映射关系集到关系表,3.3.3 映射弱实体集,3.3.4 映射带有聚集关系的ER图,3.3.5 映射EER扩展结构,3.3.6 ER模型至关系模型映射小结

9、,3.3 映射ER/EER模式到关系模式,ER/EER模型适合于初始阶段、抽象层次较高的DB概念设计。 给定一个概念设计模式(ER/EER图),现已有一套标准方法可将它们映射到关系DB模式,但这种转换还只是近似的。 DB模式:一组表+ 约束集 基于SQL-92,我们尚无法捕获隐含在ER/EER设计中的所有约束。 本节我们将介绍从ER/EER模式创建关系模式的方法和过程。,映射常规实体集到关系表,一个常规实体集可直接地映射到一个关系表: 将实体集的每个属性,作为关系表的一个属性。 用SQL-92 DDL建表语句基本上可以完全捕获这些信息,包括域约束和主键约束。,映射关系集到关系表,(一)映射含键

10、约束的关系集 方法1:独立关系表法 映射关系集R到独立的关系表R。,映射关系集到关系表,(一)映射含键约束的关系集 方法1:独立关系表法 方法2:外键方法 将关系集的相关信息合并到具有键约束的参与实体集中(一对多关系的一端)。,映射关系集到关系表,(一)映射含键约束的关系集 方法1:独立关系表法 方法2:外键方法 方法3:合并关系法 若关系集的所有参与实体集都有键约束且都是完全参与。这时,也可合并所有参与实体集到一个关系。 (二)在映射关系集时考虑参与约束 图3.9(a)中的Manages,除了键约束(每部门至多有一经理)外,还含有一完全参与约束(每部门至少需要有一经理)。考虑到这一点,Dep

11、t_Mgr:ssn应设置NOT NULL。 (三)无键约束和参与约束的关系集映射 对这类关系集,一般只能用独立关系表法(方法1)进行映射。,映射弱实体集,弱实体集总是参与一对多的二元关系,且有一个键约束和完全参与约束。 前面讨论的映射关系方法2(外键法)是一种较理想的转换方法。但要考虑弱实体中只含有部分键这个情况。,映射EER扩展结构多值/复合结构属性,关系模式不支持多值属性,必须为关系模式中的每个多值属性,分别创建一个独立的关系。 令关系模式为R,MA是R的一个多值属性,为MA创建的关系表为M。 M的属性应包含R的主键属性k ,以便关联到R。 原关系模式R中可去掉多值属性MA. 令关系模式为

12、R,CA是R的一个复合属性。对于CA,有两种建模方法: 方法1:将复合属性的每个结构成份,分别作为一个属性,加到所属的关系表中。 方法2:为复合属性CA单独建立一个关系表。,映射EER扩展结构类层次结构,映射处理EER图中的ISA层次结构。 假设超类C被特化为m个子类S1 , , Sm Attr(C) = k, a1 , , an,PK(C) = k。 方法1:映射超类和每个子类到一个不同的表。,映射EER扩展结构类层次结构,方法1:映射超类和每个子类到一个不同的表。 方法2:仅创建子类关系表。 为每个子类Si(1im)创建一个关系Li,且有属性Attr(Li)= k, a1, , an Si

13、的其它专有属性, PK(Li)=k。 该方法只适用于超类完全参与的特化类型。 方法3:仅创建含1个类标志属性的单个关系。 方法4:仅创建含m个类标志属性的单个关系。 该方法能适应子类有重叠特化的情况,但会产生大量的null值。,映射EER : union子类 (1),1)对超类实体集有各自不同键的情况 在创建与union子类对应的关系表时,通常需要指定一个新的键属性-代理键(surrogate key)。2)对超类实体集有有相同键的情况 这时,无需使用代理键。,ER模型至关系模型映射小结,步骤1:映射常规实体集。 步骤2:映射弱实体集。 步骤3:映射ER模式中的关系集。 步骤4:映射ER模式中

14、的聚集关系集。 步骤5:映射与EER模型相关的扩展结构。,3.4 关系模型求精与规范化,3.4.1 模式求精问题,3.4.2 函数依赖,3.4.3 基本规范范式,3.4.4 无损分解与依赖保持分解,3.4.5 分解与规范化关系模式,3.4.6 多值依赖与第四规范,3.4.1 模式求精问题(综述),模式求精的基本任务是基于分解技术,来处理初始关系模式中存在的问题。信息的冗余存储是引发这些问题的根源。虽然分解能删除冗余,但它也可能导致一些额外的问题,如信息损失或导致某些强制性约束丢失,必须慎重使用。 (一)冗余可能引发问题 浪费空间。 更新异常。 同样的信息被存储多份,如某份数据被更新,而其它份信

15、息未做相应更新,就会造成DB数据的不一致。 插入异常。 如果不附带冗余存储一些相关的信息,新的信息可能无法存储到DB中。 删除异常。 删除某信息时,可能会附带删掉一些不希望删除的信息。,冗余可能引发问题举例,考虑Hourly_Emps(ssn, name, lot, rating, hourly_wages, ours_worked) 缩写为Hourly_Emps (SNLRWH) 假定小时工资主要取决于员工等级,即给定R值,就可唯一确定W值。这是一个典型的函数依赖约束关系,它会导致存储冗余,其副作用有多个方面: 同等级员工对应的元组中,R/W信息完全相同。同样的信息被存储多次,浪费存储空间。

16、 如果删除了给定R值的所有元组,将丢失这组R/W所隐含的IC约束信息,这是一种删除异常。 无法单独记录员工等级与小时工资的R/W关系。这是一种插入异常。,(二)利用分解技术消除冗余,函数依赖约束(FDs)或其它相近的ICs可被用来识别冗余点,并给出处理冗余的指导性建议。 分解技术的核心思想 通过将原关系替换(分解)为一组更小关系,来解决冗余问题。 例如,通过将Hourly_Emps分解为如下的两个小关系,就可以很好消除原有冗余引起的相关问题。 Hourly_Emps2(ssn, name, lot, rating, hours_worked) Wages( rating , hourly_wa

17、ge),(三)分解可能引发的相关问题,分解能很好解决冗余问题,但必须慎重使用,否则可能会带来其它问题。在使用分解时,须反复提问以下两个重要问题: 我们的确需要分解一个关系吗? 对该问题,已有若干规范来帮助回答这个问题。 一个给定的分解会引起那些其它问题? 对该问题,可借助分解的两个重要特性来帮助回答 用无损连接(lossless-join) ; 依赖保持(dependency- preservasion),3.4.2 函数依赖(functional dependency,FD),函数依赖,是DB中两组属性间存在的一种约束,是一类更广义的键概念约束。其形式定义如下: 令R代表一个关系模式,r是R

18、的一个任意合法实例。X和Y是R的两个非空属性子集。 如果对 r中每个元组对t1和t2有t1.X=t2.X,则必有t1.Y=t2.Y。这时,我们就称Y函数依赖于X,记为:XY。 两类特殊的函数依赖 完全函数依赖与部分函数依赖 通常,模式设计者会显式指定一组函数依赖。 常用F表示在关系R上显式指定的一组FDs。,函数依赖推理(1),在满足F:FDs的所有合法关系实例中,通常还会隐含一些其它可从F推理获得的函数依赖。 例如,对Workers(ssn, name, lot, did, since) 显式FDsFD1: ssndid,FD2: didlot 保持 隐含FDs 通过传递推理,不难发现:在W

19、orkers中,FD3: ssnlot也能保持的结论。,定义(隐含函数依赖 f) 给定FDs集F,如果FD: f 也能在满足F的每个关系实例中保持,则称FD: f 是隐含在F中的函数依赖。 定义(函数依赖集闭包F+) 将包括给定的FDs集F,加上F所隐含的所有f , 合称为F闭包,简记为F + 。,函数依赖推理 (2),由给定FDs集F,推导或计算出F +的规则 自反规则IR1:如 XY,则 X Y。 增广规则IR2:如 XY,则 XZ YZ,Z是任意属性组。 传递规则IR3:如果 XY,YZ,则 X Z。两增补规则: 合并或加法规则IR4:如果 XY,XZ,则 X YZ。 分解或投影规则IR

20、5:如果 XYZ,则 X Y,XZ。 定义(平凡函数依赖) 如果X Y且XY,则称X Y是平凡的(trivial)。 显然,利用自反规则IR1,我们不难由已知的FDs推出所有的平凡依赖关系。,函数依赖推理(3),定义(函数依赖集覆盖) 对于函数依赖集F,如果另一个函数依赖集E中的每个函数依赖同时也在F+中,则称F覆盖了E。 定义(函数依赖集等价) 对于两个函数依赖集E和F,如果E+=F+,则称E和F是等价的。 定义(函数依赖集最小覆盖)一个FDs集F的最小覆盖是满足以下三个条件的一组FDs集G: G中的每个依赖关系都是规范的XA形式,这里,A是一个单属性; 闭包F+等价于闭包G+。 如果通过删

21、除G中的一个或多个依赖关系,或删除G中依赖关系的属性,得到另一个依赖集H,则必有H+G+。,计算所有隐含FDs的一个系统方法,寻找函数依赖集F的一个最小覆盖G,3.4.3 基本规范范式(1),第一范式 对于一个关系R,如果它的每个字段只包含不可分割的原子值(即没有复合值或值集字段),则R满足第一范式,记为R1NF。 1NF独立于键和函数依赖;关系模型能自然满足1NF约束。 第二范式 对于一个关系R,如果它的每个非键属性A都完全依赖于R的某个键,则R满足第二范式,记为R2NF。,3.4.3 基本规范范式(2),Boyce-Codd 范式 令R是一关系模式,X和A分别是R的属性子集。如果对R中保持

22、的每个FD:XA,能至少满足以下两条件之一,就称R满足Boyce-Codd范式,简记为RBCNF。1) AX,即XA是一个平凡的FD;2) X是一个超键。 可证明:判断R BCNF,只需检查F+中每个非平凡FD左边是否为超键。 直观分析“满足BCNF”的关系表 BCNF能确保关系表在FD信息视角下无冗余。 每个元组是“一个实体或一个关系” 。 每个字段都存储着无法从其它字段(利用FD)推导出的信息值。,基本规范范式(3),第三规范 令R是一关系模式,X与A分别是R的属性子集。如果对R中保持的每个FD:XA,能至少满足以下三条件之一, 就称R满足第三范式,简记为R3NF。 AX,即XA是一个平凡

23、的FD; X是一个超键; A是R的部分键。 3NF比BCNF多了第三个条件,也允许A是键的一部分。显然,每个BCNF关系肯定是3NF关系,依赖关系XA违反3NF的两种主要情形,1)X是某键K的一个属性子集。这时,依赖关系XA是部分依赖。这种情形下,存储(X,A)对是一种冗余情况, R2NF 。 2)X不是任何键K的完全属性子集。这时,存在依赖链KXA,依赖关系XA是传递依赖。,3.4.4 无损分解与依赖保持分解,1. 无损分解 无损分解定义 令R为一关系模式,F是R上的FDs集 将R分解为两个属性组X和Y,如果对R的每个满足F的实例r,满足x(r)y(r) = r,就称该分解是无损连接的。 无

24、损分解应用 将R分解为属性组R1和R2是无损连接的,当且仅当R1R2 R1或R1R2 R2保持。 举例:Hourly_Emps(SNLRWH); FD:RW,一个不满足无损连接的分解示例(图3.14 ),3.4.4 无损分解与依赖保持分解,2. 依赖保持分解 定义(依赖集投影) 令关系R被分解为两个属性组X和Y,F是R上保持的FDs F在X上的投影(FX):是F+中那些仅包含X中属性的FDs 依赖UV在Fx中,当且仅当U和V中的所有属性都在X中。 定义(依赖保持分解) 带有FDs集F的关系模式R,分解为X和Y两个属性组是依赖保持的,当且仅当(FX FY)+=F+。 依赖保持为什么考虑F闭包F+而不是F ?,3.4.5 分解与规范化关系模式,1. 分解关系到BCNF,3.4.5 分解与规范化关系模式,2. 分解关系到3NF,分解到BCNF与分解到3NF的实质差别,对一个非BCNF的关系模式,通过无损连接分解,获得一组满足BCNF的关系模式总是可能的。 但有可能不存在获得一组BCNF关系的任何依赖保持分解。 而将一个非BCNF关系分解为一组3NF关系的无损连接且依赖保持分解,则通常总是存在的。 ?,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报