《数据库设计》PPT课件.ppt

上传人:小飞机 文档编号:5519562 上传时间:2023-07-16 格式:PPT 页数:55 大小:595KB
返回 下载 相关 举报
《数据库设计》PPT课件.ppt_第1页
第1页 / 共55页
《数据库设计》PPT课件.ppt_第2页
第2页 / 共55页
《数据库设计》PPT课件.ppt_第3页
第3页 / 共55页
《数据库设计》PPT课件.ppt_第4页
第4页 / 共55页
《数据库设计》PPT课件.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《《数据库设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库设计》PPT课件.ppt(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概念设计。它们均以图形化方式描述和捕获用户需求。基于ER/EE

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

3、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模型的其他特性,ER模型简介,1.构成ER模型的基本概念 实体与属性实体类型、

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

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

6、 EER作为知识表示模型,3.2.8 为大型企业/组织进行DB概念设计,EER核心概念(1),类指实体的集合或实体集,这包括可对DB应用域实体分组的任何EER模式构造,如实体类(型)、子类、超类和类别。EER中,任何类都允许参与一个关系。子类、超类子类S是一个类,子类中的实体必然是其超类C中实体的一个子集,即有关系:SC 成立超类/子类关系也称为ISA关系,记做C/S。子类实体除了可以从超类实体中继承所有的属性外,还可以有自己专有的属性和关系。,EER核心概念(2),特化特化ZS1,S2,Sn是具有相同超类G的一个子类集合,每个G/Si是一个超类/子类关系。G被称为泛化实体类型。用“特化”指代

7、由特化过程所获得的-特化子集。特化的种类(约束)完全特化与部分特化;不相交特化与重叠特化。两类约束相互独立,可以组合出四种约束。泛化是特化的逆过程,允许我们忽略多个实体集之间的性质差异,找出它们的共同点抽象出超类。,特化是概念上的求精,而泛化则是概念上的综合。显然,由泛化获得超类方法,易得到完全特化的子集。,特化及其约束的EER表示,EER核心概念(3),类别(category)类别有时也被称为union子类。类别T是一个类,它是n个判定超类D1,D2,Dn(n1)并集的一个子集。其形式表示为:T(D1D2Dn)union子类的约束完全约束:子类包含了其所有超类并集中的所有成员;部分约束:子类

8、只包含并集的一个子集。,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模型至关系模型映射小结,3.3 映射ER/EER模式到关系模式,ER/EER模型适合于初始阶段、抽象层次较高的DB概念设计。给定一个概念设计模式(ER/EER图),现已有一套标准方

9、法可将它们映射到关系DB模式,但这种转换还只是近似的。DB模式:一组表+约束集基于SQL-92,我们尚无法捕获隐含在ER/EER设计中的所有约束。本节我们将介绍从ER/EER模式创建关系模式的方法和过程。,映射常规实体集到关系表,一个常规实体集可直接地映射到一个关系表:将实体集的每个属性,作为关系表的一个属性。用SQL-92 DDL建表语句基本上可以完全捕获这些信息,包括域约束和主键约束。,映射关系集到关系表,(一)映射含键约束的关系集方法1:独立关系表法映射关系集R到独立的关系表R。,映射关系集到关系表,(一)映射含键约束的关系集方法1:独立关系表法方法2:外键方法将关系集的相关信息合并到具

10、有键约束的参与实体集中(一对多关系的一端)。,映射关系集到关系表,(一)映射含键约束的关系集方法1:独立关系表法方法2:外键方法方法3:合并关系法 若关系集的所有参与实体集都有键约束且都是完全参与。这时,也可合并所有参与实体集到一个关系。(二)在映射关系集时考虑参与约束图3.9(a)中的Manages,除了键约束(每部门至多有一经理)外,还含有一完全参与约束(每部门至少需要有一经理)。考虑到这一点,Dept_Mgr:ssn应设置NOT NULL。(三)无键约束和参与约束的关系集映射对这类关系集,一般只能用独立关系表法(方法1)进行映射。,映射弱实体集,弱实体集总是参与一对多的二元关系,且有一个

11、键约束和完全参与约束。前面讨论的映射关系方法2(外键法)是一种较理想的转换方法。但要考虑弱实体中只含有部分键这个情况。,映射EER扩展结构多值/复合结构属性,关系模式不支持多值属性,必须为关系模式中的每个多值属性,分别创建一个独立的关系。令关系模式为R,MA是R的一个多值属性,为MA创建的关系表为M。M的属性应包含R的主键属性k,以便关联到R。原关系模式R中可去掉多值属性MA.令关系模式为R,CA是R的一个复合属性。对于CA,有两种建模方法:方法1:将复合属性的每个结构成份,分别作为一个属性,加到所属的关系表中。方法2:为复合属性CA单独建立一个关系表。,映射EER扩展结构类层次结构,映射处理

12、EER图中的ISA层次结构。假设超类C被特化为m个子类S1,SmAttr(C)=k,a1,an,PK(C)=k。方法1:映射超类和每个子类到一个不同的表。,映射EER扩展结构类层次结构,方法1:映射超类和每个子类到一个不同的表。方法2:仅创建子类关系表。为每个子类Si(1im)创建一个关系Li,且有属性Attr(Li)=k,a1,an Si的其它专有属性,PK(Li)=k。该方法只适用于超类完全参与的特化类型。方法3:仅创建含1个类标志属性的单个关系。方法4:仅创建含m个类标志属性的单个关系。该方法能适应子类有重叠特化的情况,但会产生大量的null值。,映射EER:union子类(1),1)对

13、超类实体集有各自不同键的情况在创建与union子类对应的关系表时,通常需要指定一个新的键属性-代理键(surrogate key)。2)对超类实体集有有相同键的情况这时,无需使用代理键。,ER模型至关系模型映射小结,步骤1:映射常规实体集。步骤2:映射弱实体集。步骤3:映射ER模式中的关系集。步骤4:映射ER模式中的聚集关系集。步骤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 模式求精问

14、题(综述),模式求精的基本任务是基于分解技术,来处理初始关系模式中存在的问题。信息的冗余存储是引发这些问题的根源。虽然分解能删除冗余,但它也可能导致一些额外的问题,如信息损失或导致某些强制性约束丢失,必须慎重使用。(一)冗余可能引发问题浪费空间。更新异常。同样的信息被存储多份,如某份数据被更新,而其它份信息未做相应更新,就会造成DB数据的不一致。插入异常。如果不附带冗余存储一些相关的信息,新的信息可能无法存储到DB中。删除异常。删除某信息时,可能会附带删掉一些不希望删除的信息。,冗余可能引发问题举例,考虑Hourly_Emps(ssn,name,lot,rating,hourly_wages,

15、ours_worked)缩写为Hourly_Emps(SNLRWH)假定小时工资主要取决于员工等级,即给定R值,就可唯一确定W值。这是一个典型的函数依赖约束关系,它会导致存储冗余,其副作用有多个方面:同等级员工对应的元组中,R/W信息完全相同。同样的信息被存储多次,浪费存储空间。如果删除了给定R值的所有元组,将丢失这组R/W所隐含的IC约束信息,这是一种删除异常。无法单独记录员工等级与小时工资的R/W关系。这是一种插入异常。,(二)利用分解技术消除冗余,函数依赖约束(FDs)或其它相近的ICs可被用来识别冗余点,并给出处理冗余的指导性建议。分解技术的核心思想通过将原关系替换(分解)为一组更小关

16、系,来解决冗余问题。例如,通过将Hourly_Emps分解为如下的两个小关系,就可以很好消除原有冗余引起的相关问题。Hourly_Emps2(ssn,name,lot,rating,hours_worked)Wages(rating,hourly_wage),(三)分解可能引发的相关问题,分解能很好解决冗余问题,但必须慎重使用,否则可能会带来其它问题。在使用分解时,须反复提问以下两个重要问题:我们的确需要分解一个关系吗?对该问题,已有若干规范来帮助回答这个问题。一个给定的分解会引起那些其它问题?对该问题,可借助分解的两个重要特性来帮助回答用无损连接(lossless-join);依赖保持(de

17、pendency-preservasion),3.4.2 函数依赖(functional dependency,FD),函数依赖,是DB中两组属性间存在的一种约束,是一类更广义的键概念约束。其形式定义如下:令R代表一个关系模式,r是R的一个任意合法实例。X和Y是R的两个非空属性子集。如果对 r中每个元组对t1和t2有t1.X=t2.X,则必有t1.Y=t2.Y。这时,我们就称Y函数依赖于X,记为:XY。两类特殊的函数依赖完全函数依赖与部分函数依赖通常,模式设计者会显式指定一组函数依赖。常用F表示在关系R上显式指定的一组FDs。,函数依赖推理(1),在满足F:FDs的所有合法关系实例中,通常还会

18、隐含一些其它可从F推理获得的函数依赖。例如,对Workers(ssn,name,lot,did,since)显式FDs FD1:ssndid,FD2:didlot 保持隐含FDs通过传递推理,不难发现:在Workers中,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:

19、如 XY,则 XZ YZ,Z是任意属性组。传递规则IR3:如果 XY,YZ,则 X Z。两增补规则:合并或加法规则IR4:如果 XY,XZ,则 X YZ。分解或投影规则IR5:如果 XYZ,则 X Y,XZ。定义(平凡函数依赖)如果X Y且XY,则称X Y是平凡的(trivial)。显然,利用自反规则IR1,我们不难由已知的FDs推出所有的平凡依赖关系。,函数依赖推理(3),定义(函数依赖集覆盖)对于函数依赖集F,如果另一个函数依赖集E中的每个函数依赖同时也在F+中,则称F覆盖了E。定义(函数依赖集等价)对于两个函数依赖集E和F,如果E+=F+,则称E和F是等价的。定义(函数依赖集最小覆盖)一

20、个FDs集F的最小覆盖是满足以下三个条件的一组FDs集G:G中的每个依赖关系都是规范的XA形式,这里,A是一个单属性;闭包F+等价于闭包G+。如果通过删除G中的一个或多个依赖关系,或删除G中依赖关系的属性,得到另一个依赖集H,则必有H+G+。,计算所有隐含FDs的一个系统方法,寻找函数依赖集F的一个最小覆盖G,3.4.3 基本规范范式(1),第一范式对于一个关系R,如果它的每个字段只包含不可分割的原子值(即没有复合值或值集字段),则R满足第一范式,记为R1NF。1NF独立于键和函数依赖;关系模型能自然满足1NF约束。第二范式 对于一个关系R,如果它的每个非键属性A都完全依赖于R的某个键,则R满

21、足第二范式,记为R2NF。,3.4.3 基本规范范式(2),Boyce-Codd 范式 令R是一关系模式,X和A分别是R的属性子集。如果对R中保持的每个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的属

22、性子集。如果对R中保持的每个FD:XA,能至少满足以下三条件之一,就称R满足第三范式,简记为R3NF。AX,即XA是一个平凡的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分解为两

23、个属性组X和Y,如果对R的每个满足F的实例r,满足x(r)y(r)=r,就称该分解是无损连接的。无损分解应用将R分解为属性组R1和R2是无损连接的,当且仅当R1R2 R1或R1R2 R2保持。举例:Hourly_Emps(SNLRWH);FD:RW,一个不满足无损连接的分解示例(图3.14),3.4.4 无损分解与依赖保持分解,2.依赖保持分解定义(依赖集投影)令关系R被分解为两个属性组X和Y,F是R上保持的FDsF在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关系的无损连接且依赖保持分解,则通常总是存在的。?,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号