第3章-数据库设计课件_第1页
第3章-数据库设计课件_第2页
第3章-数据库设计课件_第3页
第3章-数据库设计课件_第4页
第3章-数据库设计课件_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章数据库设计第3章数据库设计1第3章数据库设计ER数据模型3.1EER数据模型3.2逻辑数据库设计:映射ER/EER模式到关系模式3.3关系模式求精与规范化3.42第3章数据库设计ER数据模型3.1EER数据模型3.2逻辑DB应用DB应用定义:一个特定的数据库,加上实现此数据库查询/更新的相关程序。概念设计是成功设计DB应用的一个环节。实体-关系模型(Entity-Relationmodel),简称ER模型,是一种非常流行的概念数据模型。EER是基于ER的扩展模型(EnhancedERmodel)ER/EER已被广泛应用于DB概念设计。它们均以图形化方式描述和捕获用户需求。基于ER/EER进行概念设计的输出为一组ER/EER图。基于概念模型的设计,最终都必须变换/转换到可在DB中实现的逻辑数据模型。借助RDB设计有关规范理论,不仅可对转换后的逻辑数据模式进行规范,而且可对ER/EER图进行求精。3DB应用DB应用定义:一个特定的数据库,加上实现此数据库查询DB设计的主要阶段与过程4DB设计的主要阶段与过程4DB设计的基本步骤(1)1.需求分析2.概念DB设计利用需求分析获得的信息,建立DB数据的一个抽象描述。这一步通常利用ER/EER模型,或其它高级数据概念模型(如UML类图),来实现。3.逻辑DB设计转换DB概念设计模式到指定DBMS逻辑模式。由于需求信息本身带有很大主观性,故基于需求信息构造的ER/EER图只能提供数据的一个近似描述。4.模式细化5.物理DB设计6.安全设计5DB设计的基本步骤(1)1.需求分析5DB设计的基本步骤(2)1.需求分析2.概念DB设计3.逻辑DB设计4.模式细化分析关系数据库模式的关系集,检查潜在问题并进行优化。与需求分析和概念设计的主观性特点不同,细化可得到强有力的规范理论支持。5.物理DB设计考虑应用必须支持的一些典型预期负荷,并以此为基础进一步求精DB设计,确保它能满足预期的性能要求。这个步骤可能包括为一些表建立索引,或指定聚集存储方式等。6.安全设计6DB设计的基本步骤(2)1.需求分析63.1ER数据模型3.1.1实体类型、实体集、属性和键3.1.2关系、关系类型和关系集3.1.3ER模型的其他特性73.1ER数据模型3.1.1实体类型、实体集、属性和键ER模型简介1.构成ER模型的基本概念实体与属性实体类型、实体集与键实体类型:定义了具有相同属性的实体模式结构,由名和属性来描述。实体集:具有相同实体类型的所有实体集合。实体类型描述了相同结构实体集的模式或内涵;实体集则描述了实体类型的外延。ER图中不区分实体类型和实体集(被视为同义词)。关系、关系类型和关系集ER模型的其它概念☆ER图表示规定实体集:用加矩形外框的名字来表示。属性名:则用椭圆框起,并用直线与实体集相连。多值属性:用双线椭圆框起;复合属性:用名字后加注结构成份表示;键属性:通过属性名加下划线来标识。

☆ER图表示规定关系集:用名字外加菱形框表示,并用直线将其与参与实体集的矩形框相连。8ER模型简介1.构成ER模型的基本概念☆ER图表示规定ER图设计举例(1)9ER图设计举例(1)9ER图设计举例(2)10ER图设计举例(2)10ER模型的其它概念关系属性关系集也可以有自己的描述属性,用来刻画关系集本身的性质,而不是某个参与实体集的性质。关系约束指与关系集相关的约束,通过约束表达可限制参与关系各实体的可能组合。主要类型:基数词约束、键约束和参与约束。弱实体集指只能附属其它实体集而存在的实体集。11ER模型的其它概念关系属性11在ER图中表达关系基数词和参与约束12在ER图中表达关系基数词和参与约束12弱实体集的几种ER建模方法(图3.5)13弱实体集的几种ER建模方法(图3.5)133.2EER数据模型3.2.1EER模型核心概念的形式定义3.2.2子类、超类与类层次结构3.2.3特化与泛化3.2.4利用union子类建模3.2.5值集属性与复合结构属性的建模表示3.2.6EER与UML类图比较3.2.7EER作为知识表示模型3.2.8为大型企业/组织进行DB概念设计143.2EER数据模型3.2.1EER模型核心概念的形式定EER核心概念(1)类指实体的集合或实体集,这包括可对DB应用域实体分组的任何EER模式构造,如实体类(型)、子类、超类和类别。EER中,任何类都允许参与一个关系。子类、超类子类S是一个类,子类中的实体必然是其超类C中实体的一个子集,即有关系:S⊆C成立超类/子类关系也称为ISA关系,记做C/S。子类实体除了可以从超类实体中继承所有的属性外,还可以有自己专有的属性和关系。15EER核心概念(1)类15EER核心概念(2)特化特化Z={S1,S2,…,Sn}是具有相同超类G的一个子类集合,每个G/Si是一个超类/子类关系。G被称为泛化实体类型。用“特化”指代由特化过程所获得的--特化子集。特化的种类(约束)完全特化与部分特化;不相交特化与重叠特化。两类约束相互独立,可以组合出四种约束。泛化是特化的逆过程,允许我们忽略多个实体集之间的性质差异,找出它们的共同点--抽象出超类。特化是概念上的求精,而泛化则是概念上的综合。显然,由泛化获得超类方法,易得到完全特化的子集。16EER核心概念(2)特化特化是概念上的求精,而泛化则是概念上特化及其约束的EER表示17特化及其约束的EER表示17EER核心概念(3)类别(category)类别有时也被称为union子类。类别T是一个类,它是n个判定超类D1,D2,…,Dn(n>1)并集的一个子集。其形式表示为:T⊆(D1⋃D2⋃…⋃Dn)union子类的约束完全约束:子类包含了其所有超类并集中的所有成员;部分约束:子类只包含并集的一个子集。18EER核心概念(3)类别(category)18UNION子类及其约束的EER表示(图3.8)用粗/细区分完全和部分约束19UNION子类及其约束的EER表示(图3.8)用粗/细区分基本ER模型与UML类图的特性对比20基本ER模型与UML类图的特性对比20CompanyDB模式的EER表示21CompanyDB模式的EER表示21CompanyDB模式的UML表示22CompanyDB模式的UML表示223.3逻辑数据库设计:映射ER/EER模式到关系模式3.3.1映射常规实体集到关系表3.3.2映射关系集到关系表3.3.3映射弱实体集3.3.4映射带有聚集关系的ER图3.3.5映射EER扩展结构3.3.6ER模型至关系模型映射小结233.3逻辑数据库设计:映射ER/EER模式到关系模式3.33.3映射ER/EER模式到关系模式ER/EER模型适合于初始阶段、抽象层次较高的DB概念设计。给定一个概念设计模式(ER/EER图),现已有一套标准方法可将它们映射到关系DB模式,但这种转换还只是近似的。DB模式:{一组表}+{约束集}基于SQL-92,我们尚无法捕获隐含在ER/EER设计中的所有约束。本节我们将介绍从ER/EER模式创建关系模式的方法和过程。243.3映射ER/EER模式到关系模式ER/EER模型适合映射常规实体集到关系表一个常规实体集可直接地映射到一个关系表:将实体集的每个属性,作为关系表的一个属性。用SQL-92DDL建表语句基本上可以完全捕获这些信息,包括域约束和主键约束。25映射常规实体集到关系表一个常规实体集可直接地映射到一个关系映射关系集到关系表(一)映射含键约束的关系集方法1:独立关系表法映射关系集R到独立的关系表R’。26映射关系集到关系表(一)映射含键约束的关系集26映射关系集到关系表(一)映射含键约束的关系集方法1:独立关系表法方法2:外键方法将关系集的相关信息合并到具有键约束的参与实体集中(一对多关系的‘一’端)。27映射关系集到关系表(一)映射含键约束的关系集27映射关系集到关系表(一)映射含键约束的关系集方法1:独立关系表法方法2:外键方法方法3:合并关系法若关系集的所有参与实体集都有键约束且都是完全参与。这时,也可合并所有参与实体集到一个关系。(二)在映射关系集时考虑参与约束图3.9(a)中的Manages,除了键约束(每部门至多有一经理)外,还含有一完全参与约束(每部门至少需要有一经理)。考虑到这一点,Dept_Mgr:ssn应设置NOTNULL。(三)无键约束和参与约束的关系集映射对这类关系集,一般只能用独立关系表法(方法1)进行映射。28映射关系集到关系表(一)映射含键约束的关系集28映射弱实体集弱实体集总是参与一对多的二元关系,且有一个键约束和完全参与约束。前面讨论的映射关系方法2(外键法)是一种较理想的转换方法。但要考虑弱实体中只含有部分键这个情况。29映射弱实体集弱实体集总是参与一对多的二元关系,且有一个键约映射EER扩展结构--多值/复合结构属性关系模式不支持多值属性,必须为关系模式中的每个多值属性,分别创建一个独立的关系。令关系模式为R,MA是R的一个多值属性,为MA创建的关系表为M。M的属性应包含R的主键属性k,以便关联到R。原关系模式R中可去掉多值属性MA.令关系模式为R,CA是R的一个复合属性。对于CA,有两种建模方法:方法1:将复合属性的每个结构成份,分别作为一个属性,加到所属的关系表中。方法2:为复合属性CA单独建立一个关系表。30映射EER扩展结构--多值/复合结构属性关系模式不支持多值映射EER扩展结构--类层次结构映射处理EER图中的ISA层次结构。假设超类C被特化为m个子类{S1,…,Sm}Attr(C)={k,a1,…,an},PK(C)=k。方法1:映射超类和每个子类到一个不同的表。31映射EER扩展结构--类层次结构映射处理EER图中的ISA映射EER扩展结构--类层次结构方法1:映射超类和每个子类到一个不同的表。方法2:仅创建子类关系表。为每个子类Si(1≤i≤m)创建一个关系Li,且有属性Attr(Li)={k,a1,…,an}⋃{Si的其它专有属性},PK(Li)=k。该方法只适用于超类完全参与的特化类型。方法3:仅创建含1个类标志属性的单个关系。方法4:仅创建含m个类标志属性的单个关系。该方法能适应子类有重叠特化的情况,但会产生大量的null值。32映射EER扩展结构--类层次结构方法1:映射超类和每个子类映射EER:union子类(1)1)对超类实体集有各自不同键的情况在创建与union子类对应的关系表时,通常需要指定一个新的键属性--代理键(surrogatekey)。2)对超类实体集有有相同键的情况这时,无需使用代理键。33映射EER:union子类(1)1)对超类实体集有各自ER模型至关系模型映射小结步骤1:映射常规实体集。步骤2:映射弱实体集。步骤3:映射ER模式中的关系集。步骤4:映射ER模式中的聚集关系集。步骤5:映射与EER模型相关的扩展结构。34ER模型至关系模型映射小结步骤1:映射常规实体集。343.4关系模型求精与规范化3.4.1模式求精问题3.4.2函数依赖3.4.3基本规范范式3.4.4无损分解与依赖保持分解3.4.5分解与规范化关系模式3.4.6多值依赖与第四规范353.4关系模型求精与规范化3.4.1模式求精问题3.4.1模式求精问题(综述)模式求精的基本任务是基于分解技术,来处理初始关系模式中存在的问题。信息的冗余存储是引发这些问题的根源。虽然分解能删除冗余,但它也可能导致一些额外的问题,如信息损失或导致某些强制性约束丢失,必须慎重使用。(一)冗余可能引发问题浪费空间。更新异常。同样的信息被存储多份,如某份数据被更新,而其它份信息未做相应更新,就会造成DB数据的不一致。插入异常。如果不附带冗余存储一些相关的信息,新的信息可能无法存储到DB中。删除异常。删除某信息时,可能会附带删掉一些不希望删除的信息。363.4.1模式求精问题(综述)模式求精的基本任务是基于分冗余可能引发问题举例考虑Hourly_Emps(ssn,name,lot,rating,hourly_wages,ours_worked)缩写为Hourly_Emps(SNLRWH)假定小时工资主要取决于员工等级,即给定R值,就可唯一确定W值。这是一个典型的函数依赖约束关系,它会导致存储冗余,其副作用有多个方面:同等级员工对应的元组中,R/W信息完全相同。同样的信息被存储多次,浪费存储空间。如果删除了给定R值的所有元组,将丢失这组R/W所隐含的IC约束信息,这是一种删除异常。无法单独记录员工等级与小时工资的R/W关系。这是一种插入异常。

37冗余可能引发问题举例考虑Hourly_Emps37(二)利用分解技术消除冗余函数依赖约束(FDs)或其它相近的ICs可被用来识别冗余点,并给出处理冗余的指导性建议。分解技术的核心思想通过将原关系替换(分解)为一组更小关系,来解决冗余问题。

例如,通过将Hourly_Emps分解为如下的两个小关系,就可以很好消除原有冗余引起的相关问题。Hourly_Emps2(ssn,name,lot,rating,hours_worked)Wages(rating,hourly_wage)38(二)利用分解技术消除冗余函数依赖约束(FDs)或其它相近的(三)分解可能引发的相关问题分解能很好解决冗余问题,但必须慎重使用,否则可能会带来其它问题。在使用分解时,须反复提问以下两个重要问题:我们的确需要分解一个关系吗?对该问题,已有若干规范来帮助回答这个问题。一个给定的分解会引起那些其它问题?对该问题,可借助分解的两个重要特性来帮助回答用无损连接(lossless-join);依赖保持(dependency-preservasion)39(三)分解可能引发的相关问题分解能很好解决冗余问题,但必须慎3.4.2函数依赖(functionaldependency,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}。403.4.2函数依赖(functionaldependen函数依赖推理(1)在满足F:{FDs}的所有合法关系实例中,通常还会隐含一些其它可从F推理获得的函数依赖。例如,对Workers(ssn,name,lot,did,since)显式FDsFD1:ssndid,FD2:didlot保持隐含FDs通过传递推理,不难发现:在Workers中,FD3:ssnlot也能保持的结论。定义(隐含函数依赖f)给定FDs集F,如果FD:f也能在满足F的每个关系实例中保持,则称FD:f是隐含在F中的函数依赖。定义(函数依赖集闭包F+)将包括给定的FDs集F,加上F所隐含的所有f,合称为F闭包,简记为F+。41函数依赖推理(1)在满足F:{FDs}的所有合法关系实例中,函数依赖推理(2)由给定FDs集F,推导或计算出F+的规则自反规则IR1:如X⊇Y,则XY。增广规则IR2:如XY,则XZYZ,Z是任意属性组。传递规则IR3:如果XY,YZ,则XZ。两增补规则:合并或加法规则IR4:如果XY,XZ,则XYZ。分解或投影规则IR5:如果XYZ,则XY,XZ。定义(平凡函数依赖)如果XY且X⊇Y,则称XY是平凡的(trivial)。显然,利用自反规则IR1,我们不难由已知的FDs推出所有的平凡依赖关系。42函数依赖推理(2)由给定FDs集F,推导或计算出F+的规函数依赖推理(3)定义(函数依赖集覆盖)对于函数依赖集F,如果另一个函数依赖集E中的每个函数依赖同时也在F+中,则称F覆盖了E。定义(函数依赖集等价)对于两个函数依赖集E和F,如果E+=F+,则称E和F是等价的。定义(函数依赖集最小覆盖)一个FDs集F的最小覆盖是满足以下三个条件的一组FDs集G:G中的每个依赖关系都是规范的XA形式,这里,A是一个单属性;闭包F+等价于闭包G+。如果通过删除G中的一个或多个依赖关系,或删除G中依赖关系的属性,得到另一个依赖集H,则必有H+≠G+。43函数依赖推理(3)定义(函数依赖集覆盖)43计算所有隐含FDs的一个系统方法44计算所有隐含FDs的一个系统方法44寻找函数依赖集F的一个最小覆盖G45寻找函数依赖集F的一个最小覆盖G453.4.3基本规范范式(1)第一范式对于一个关系R,如果它的每个字段只包含不可分割的原子值(即没有复合值或值集字段),则R满足第一范式,记为R∊1NF。1NF独立于键和函数依赖;关系模型能自然满足1NF约束。第二范式对于一个关系R,如果它的每个非键属性A都完全依赖于R的某个键,则R满足第二范式,记为R∊2NF。463.4.3基本规范范式(1)第一范式463.4.3基本规范范式(2)Boyce-Codd范式令R是一关系模式,X和A分别是R的属性子集。如果对R中保持的每个FD:XA,能至少满足以下两条件之一,就称R满足Boyce-Codd范式,简记为R∊BCNF。1)A∊X,即XA是一个平凡的FD;2)X是一个超键。可证明:判断R∊BCNF,只需检查F+中每个非平凡FD左边是否为超键。直观分析“满足BCNF”的关系表BCNF能确保关系表在FD信息视角下无冗余。每个元组是“一个实体或一个关系”。每个字段都存储着无法从其它字段(利用FD)推导出的信息值。BCNF关系中的非平凡FD结构模式473.4.3基本规范范式(2)Boyce-Codd范式基本规范范式(3)第三规范令R是一关系模式,X与A分别是R的属性子集。如果对R中保持的每个FD:XA,能至少满足以下三条件之一,就称R满足第三范式,简记为R∊3NF。A∊X,即XA是一个平凡的FD;X是一个超键;A是R的部分键。3NF比BCNF多了第三个条件,也允许A是键的一部分。显然,每个BCNF关系肯定是3NF关系48基本规范范式(3)第三规范48依赖关系XA违反3NF的两种主要情形1)X是某键K的一个属性子集。这时,依赖关系XA是部分依赖。这种情形下,存储‘(X,A)对’是一种冗余情况,R2NF。2)X不是任何键K的完全属性子集。这时,存在依赖链KXA,依赖关系XA是传递依赖。49依赖关系XA违反3NF的两种主要情形1)X是某键K的一个属3.4.4无损分解与依赖保持分解1.无损分解无损分解定义令R为一关系模式,F是R上的FDs集将R分解为两个属性组X和Y,如果对R的每个满足F的实例r,满足πx(r)⋈πy(r)=r,就称该分解是无损连接的。无损分解应用将R分解为属性组R1和R2是无损连接的,当且仅当R1∩R2R1或R1∩R2R2保持。举例:Hourly_Emps(SNLRWH);FD:RW503.4.4无损分解与依赖保持分解1.无损分解50一个不满足无损连接的分解示例(图3.14)51一个不满足无损连接的分解示例(图3.14)513.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?523.4.4无损分解与依赖保持分解2.依赖保持分解523.4.5分解与规范化关系模式1.分解关系到BCNF533.4.5分解与规范化关系模式1.分解关系到BCNF533.4.5分解与规范化关系模式2.分解关系到3NF543.4.5分解与规范化关系模式2.分解关系到3NF54分解到BCNF与分解到3NF的实质差别对一个非BCNF的关系模式,通过无损连接分解,获得一组满足BCNF的关系模式总是可能的。但有可能不存在获得一组BCNF关系的任何依赖保持分解。而将一个非BCNF关系分解为一组3NF关系的无损连接且依赖保持分解,则通常总是存在的。?55分解到BCNF与分解到3NF的实质差别对一个非BCNF的关系 谢谢大家! 谢谢大家!56第3章数据库设计第3章数据库设计57第3章数据库设计ER数据模型3.1EER数据模型3.2逻辑数据库设计:映射ER/EER模式到关系模式3.3关系模式求精与规范化3.458第3章数据库设计ER数据模型3.1EER数据模型3.2逻辑DB应用DB应用定义:一个特定的数据库,加上实现此数据库查询/更新的相关程序。概念设计是成功设计DB应用的一个环节。实体-关系模型(Entity-Relationmodel),简称ER模型,是一种非常流行的概念数据模型。EER是基于ER的扩展模型(EnhancedERmodel)ER/EER已被广泛应用于DB概念设计。它们均以图形化方式描述和捕获用户需求。基于ER/EER进行概念设计的输出为一组ER/EER图。基于概念模型的设计,最终都必须变换/转换到可在DB中实现的逻辑数据模型。借助RDB设计有关规范理论,不仅可对转换后的逻辑数据模式进行规范,而且可对ER/EER图进行求精。59DB应用DB应用定义:一个特定的数据库,加上实现此数据库查询DB设计的主要阶段与过程60DB设计的主要阶段与过程4DB设计的基本步骤(1)1.需求分析2.概念DB设计利用需求分析获得的信息,建立DB数据的一个抽象描述。这一步通常利用ER/EER模型,或其它高级数据概念模型(如UML类图),来实现。3.逻辑DB设计转换DB概念设计模式到指定DBMS逻辑模式。由于需求信息本身带有很大主观性,故基于需求信息构造的ER/EER图只能提供数据的一个近似描述。4.模式细化5.物理DB设计6.安全设计61DB设计的基本步骤(1)1.需求分析5DB设计的基本步骤(2)1.需求分析2.概念DB设计3.逻辑DB设计4.模式细化分析关系数据库模式的关系集,检查潜在问题并进行优化。与需求分析和概念设计的主观性特点不同,细化可得到强有力的规范理论支持。5.物理DB设计考虑应用必须支持的一些典型预期负荷,并以此为基础进一步求精DB设计,确保它能满足预期的性能要求。这个步骤可能包括为一些表建立索引,或指定聚集存储方式等。6.安全设计62DB设计的基本步骤(2)1.需求分析63.1ER数据模型3.1.1实体类型、实体集、属性和键3.1.2关系、关系类型和关系集3.1.3ER模型的其他特性633.1ER数据模型3.1.1实体类型、实体集、属性和键ER模型简介1.构成ER模型的基本概念实体与属性实体类型、实体集与键实体类型:定义了具有相同属性的实体模式结构,由名和属性来描述。实体集:具有相同实体类型的所有实体集合。实体类型描述了相同结构实体集的模式或内涵;实体集则描述了实体类型的外延。ER图中不区分实体类型和实体集(被视为同义词)。关系、关系类型和关系集ER模型的其它概念☆ER图表示规定实体集:用加矩形外框的名字来表示。属性名:则用椭圆框起,并用直线与实体集相连。多值属性:用双线椭圆框起;复合属性:用名字后加注结构成份表示;键属性:通过属性名加下划线来标识。

☆ER图表示规定关系集:用名字外加菱形框表示,并用直线将其与参与实体集的矩形框相连。64ER模型简介1.构成ER模型的基本概念☆ER图表示规定ER图设计举例(1)65ER图设计举例(1)9ER图设计举例(2)66ER图设计举例(2)10ER模型的其它概念关系属性关系集也可以有自己的描述属性,用来刻画关系集本身的性质,而不是某个参与实体集的性质。关系约束指与关系集相关的约束,通过约束表达可限制参与关系各实体的可能组合。主要类型:基数词约束、键约束和参与约束。弱实体集指只能附属其它实体集而存在的实体集。67ER模型的其它概念关系属性11在ER图中表达关系基数词和参与约束68在ER图中表达关系基数词和参与约束12弱实体集的几种ER建模方法(图3.5)69弱实体集的几种ER建模方法(图3.5)133.2EER数据模型3.2.1EER模型核心概念的形式定义3.2.2子类、超类与类层次结构3.2.3特化与泛化3.2.4利用union子类建模3.2.5值集属性与复合结构属性的建模表示3.2.6EER与UML类图比较3.2.7EER作为知识表示模型3.2.8为大型企业/组织进行DB概念设计703.2EER数据模型3.2.1EER模型核心概念的形式定EER核心概念(1)类指实体的集合或实体集,这包括可对DB应用域实体分组的任何EER模式构造,如实体类(型)、子类、超类和类别。EER中,任何类都允许参与一个关系。子类、超类子类S是一个类,子类中的实体必然是其超类C中实体的一个子集,即有关系:S⊆C成立超类/子类关系也称为ISA关系,记做C/S。子类实体除了可以从超类实体中继承所有的属性外,还可以有自己专有的属性和关系。71EER核心概念(1)类15EER核心概念(2)特化特化Z={S1,S2,…,Sn}是具有相同超类G的一个子类集合,每个G/Si是一个超类/子类关系。G被称为泛化实体类型。用“特化”指代由特化过程所获得的--特化子集。特化的种类(约束)完全特化与部分特化;不相交特化与重叠特化。两类约束相互独立,可以组合出四种约束。泛化是特化的逆过程,允许我们忽略多个实体集之间的性质差异,找出它们的共同点--抽象出超类。特化是概念上的求精,而泛化则是概念上的综合。显然,由泛化获得超类方法,易得到完全特化的子集。72EER核心概念(2)特化特化是概念上的求精,而泛化则是概念上特化及其约束的EER表示73特化及其约束的EER表示17EER核心概念(3)类别(category)类别有时也被称为union子类。类别T是一个类,它是n个判定超类D1,D2,…,Dn(n>1)并集的一个子集。其形式表示为:T⊆(D1⋃D2⋃…⋃Dn)union子类的约束完全约束:子类包含了其所有超类并集中的所有成员;部分约束:子类只包含并集的一个子集。74EER核心概念(3)类别(category)18UNION子类及其约束的EER表示(图3.8)用粗/细区分完全和部分约束75UNION子类及其约束的EER表示(图3.8)用粗/细区分基本ER模型与UML类图的特性对比76基本ER模型与UML类图的特性对比20CompanyDB模式的EER表示77CompanyDB模式的EER表示21CompanyDB模式的UML表示78CompanyDB模式的UML表示223.3逻辑数据库设计:映射ER/EER模式到关系模式3.3.1映射常规实体集到关系表3.3.2映射关系集到关系表3.3.3映射弱实体集3.3.4映射带有聚集关系的ER图3.3.5映射EER扩展结构3.3.6ER模型至关系模型映射小结793.3逻辑数据库设计:映射ER/EER模式到关系模式3.33.3映射ER/EER模式到关系模式ER/EER模型适合于初始阶段、抽象层次较高的DB概念设计。给定一个概念设计模式(ER/EER图),现已有一套标准方法可将它们映射到关系DB模式,但这种转换还只是近似的。DB模式:{一组表}+{约束集}基于SQL-92,我们尚无法捕获隐含在ER/EER设计中的所有约束。本节我们将介绍从ER/EER模式创建关系模式的方法和过程。803.3映射ER/EER模式到关系模式ER/EER模型适合映射常规实体集到关系表一个常规实体集可直接地映射到一个关系表:将实体集的每个属性,作为关系表的一个属性。用SQL-92DDL建表语句基本上可以完全捕获这些信息,包括域约束和主键约束。81映射常规实体集到关系表一个常规实体集可直接地映射到一个关系映射关系集到关系表(一)映射含键约束的关系集方法1:独立关系表法映射关系集R到独立的关系表R’。82映射关系集到关系表(一)映射含键约束的关系集26映射关系集到关系表(一)映射含键约束的关系集方法1:独立关系表法方法2:外键方法将关系集的相关信息合并到具有键约束的参与实体集中(一对多关系的‘一’端)。83映射关系集到关系表(一)映射含键约束的关系集27映射关系集到关系表(一)映射含键约束的关系集方法1:独立关系表法方法2:外键方法方法3:合并关系法若关系集的所有参与实体集都有键约束且都是完全参与。这时,也可合并所有参与实体集到一个关系。(二)在映射关系集时考虑参与约束图3.9(a)中的Manages,除了键约束(每部门至多有一经理)外,还含有一完全参与约束(每部门至少需要有一经理)。考虑到这一点,Dept_Mgr:ssn应设置NOTNULL。(三)无键约束和参与约束的关系集映射对这类关系集,一般只能用独立关系表法(方法1)进行映射。84映射关系集到关系表(一)映射含键约束的关系集28映射弱实体集弱实体集总是参与一对多的二元关系,且有一个键约束和完全参与约束。前面讨论的映射关系方法2(外键法)是一种较理想的转换方法。但要考虑弱实体中只含有部分键这个情况。85映射弱实体集弱实体集总是参与一对多的二元关系,且有一个键约映射EER扩展结构--多值/复合结构属性关系模式不支持多值属性,必须为关系模式中的每个多值属性,分别创建一个独立的关系。令关系模式为R,MA是R的一个多值属性,为MA创建的关系表为M。M的属性应包含R的主键属性k,以便关联到R。原关系模式R中可去掉多值属性MA.令关系模式为R,CA是R的一个复合属性。对于CA,有两种建模方法:方法1:将复合属性的每个结构成份,分别作为一个属性,加到所属的关系表中。方法2:为复合属性CA单独建立一个关系表。86映射EER扩展结构--多值/复合结构属性关系模式不支持多值映射EER扩展结构--类层次结构映射处理EER图中的ISA层次结构。假设超类C被特化为m个子类{S1,…,Sm}Attr(C)={k,a1,…,an},PK(C)=k。方法1:映射超类和每个子类到一个不同的表。87映射EER扩展结构--类层次结构映射处理EER图中的ISA映射EER扩展结构--类层次结构方法1:映射超类和每个子类到一个不同的表。方法2:仅创建子类关系表。为每个子类Si(1≤i≤m)创建一个关系Li,且有属性Attr(Li)={k,a1,…,an}⋃{Si的其它专有属性},PK(Li)=k。该方法只适用于超类完全参与的特化类型。方法3:仅创建含1个类标志属性的单个关系。方法4:仅创建含m个类标志属性的单个关系。该方法能适应子类有重叠特化的情况,但会产生大量的null值。88映射EER扩展结构--类层次结构方法1:映射超类和每个子类映射EER:union子类(1)1)对超类实体集有各自不同键的情况在创建与union子类对应的关系表时,通常需要指定一个新的键属性--代理键(surrogatekey)。2)对超类实体集有有相同键的情况这时,无需使用代理键。89映射EER:union子类(1)1)对超类实体集有各自ER模型至关系模型映射小结步骤1:映射常规实体集。步骤2:映射弱实体集。步骤3:映射ER模式中的关系集。步骤4:映射ER模式中的聚集关系集。步骤5:映射与EER模型相关的扩展结构。90ER模型至关系模型映射小结步骤1:映射常规实体集。343.4关系模型求精与规范化3.4.1模式求精问题3.4.2函数依赖3.4.3基本规范范式3.4.4无损分解与依赖保持分解3.4.5分解与规范化关系模式3.4.6多值依赖与第四规范913.4关系模型求精与规范化3.4.1模式求精问题3.4.1模式求精问题(综述)模式求精的基本任务是基于分解技术,来处理初始关系模式中存在的问题。信息的冗余存储是引发这些问题的根源。虽然分解能删除冗余,但它也可能导致一些额外的问题,如信息损失或导致某些强制性约束丢失,必须慎重使用。(一)冗余可能引发问题浪费空间。更新异常。同样的信息被存储多份,如某份数据被更新,而其它份信息未做相应更新,就会造成DB数据的不一致。插入异常。如果不附带冗余存储一些相关的信息,新的信息可能无法存储到DB中。删除异常。删除某信息时,可能会附带删掉一些不希望删除的信息。923.4.1模式求精问题(综述)模式求精的基本任务是基于分冗余可能引发问题举例考虑Hourly_Emps(ssn,name,lot,rating,hourly_wages,ours_worked)缩写为Hourly_Emps(SNLRWH)假定小时工资主要取决于员工等级,即给定R值,就可唯一确定W值。这是一个典型的函数依赖约束关系,它会导致存储冗余,其副作用有多个方面:同等级员工对应的元组中,R/W信息完全相同。同样的信息被存储多次,浪费存储空间。如果删除了给定R值的所有元组,将丢失这组R/W所隐含的IC约束信息,这是一种删除异常。无法单独记录员工等级与小时工资的R/W关系。这是一种插入异常。

93冗余可能引发问题举例考虑Hourly_Emps37(二)利用分解技术消除冗余函数依赖约束(FDs)或其它相近的ICs可被用来识别冗余点,并给出处理冗余的指导性建议。分解技术的核心思想通过将原关系替换(分解)为一组更小关系,来解决冗余问题。

例如,通过将Hourly_Emps分解为如下的两个小关系,就可以很好消除原有冗余引起的相关问题。Hourly_Emps2(ssn,name,lot,rating,hours_worked)Wages(rating,hourly_wage)94(二)利用分解技术消除冗余函数依赖约束(FDs)或其它相近的(三)分解可能引发的相关问题分解能很好解决冗余问题,但必须慎重使用,否则可能会带来其它问题。在使用分解时,须反复提问以下两个重要问题:我们的确需要分解一个关系吗?对该问题,已有若干规范来帮助回答这个问题。一个给定的分解会引起那些其它问题?对该问题,可借助分解的两个重要特性来帮助回答用无损连接(lossless-join);依赖保持(dependency-preservasion)95(三)分解可能引发的相关问题分解能很好解决冗余问题,但必须慎3.4.2函数依赖(functionaldependency,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}。963.4.2函数依赖(functionaldependen函数依赖推理(1)在满足F:{FDs}的所有合法关系实例中,通常还会隐含一些其它可从F推理获得的函数依赖。例如,对Workers(ssn,name,lot,did,since)显式FDsFD1:ssndid,FD2:didlot保持隐含FDs通过传递推理,不难发现:在Workers中,FD3:ssnlot也能保持的结论。定义(隐含函数依赖f)给定FDs集F,如果FD:f也能在满足F的每个关系实例中保持,则称FD:f是隐含在F中的函数依赖。定义(函数依赖集闭包F+)将包括给定的FDs集F,加上F所隐含的所有f,合称为F闭包,简记为F+。97函数依赖推理(1)在满足F:{FDs}的所有合法关系实例中,函数依赖推理(2)由给定FDs集F,推导或计算出F+的规则自反规则IR1:如X⊇Y,则XY。增广规则IR2:如XY,则XZYZ,Z是任意属性组。传递规则IR3:如果XY,YZ,则XZ。两增补规则:合并或加法规则IR4:如果XY,XZ,则XYZ。分解或投影规则IR5:如果XYZ,则XY,XZ。定义(平凡函数依赖)如果XY且X⊇Y,则称XY是平凡的(trivial)。显然,利用自反规则IR1,我们不难由已知的FDs推出所有的平凡依赖关系。98函数依赖推理(2)由给定FDs集F,推导或计算出F+的规函数依赖推理(3)定义(函数依赖集覆盖)对于函数依赖集F,如果另一个函数依赖集E中的每个函数依赖同时也在F+中,则称F覆盖了E。定义(函数依赖集等价)对于两个函数依赖集E和F,如果E+=F+,则称E和F是等价的。定义(函数依赖集最小覆盖)一个FDs集F的最小覆盖是满足以下三个条件的一组FDs集G:G中的每个依赖关系都是规范的XA形式,这里,A是一个单属性;闭包F+等价于闭包G+。如果通过删除G中的一个或多个依赖关系,或删除G中依赖关系的属性,得到另一个依赖集H,则必有H+≠G+。99函数依赖推理(3)定义(函数依赖集覆盖)43计算所有隐含FDs的一个系统方法100计算所有隐含FDs的一个系统方法44寻找函数依赖集F的一个最小覆

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论