您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 数据库系统基础教程(第2章)
1第2章实体-联系数据模型第2章实体-联系数据模型数据库建模与实现过程当构建一个数据库应用时,就是要以简单明确的方式描述所要解决问题的重要特征,说明数据库中需要存贮的信息,以及这些信息之间的关系。在数据库系统中,是以数据模型为工具来抽象、表示和处理现实世界的信息的。第2章实体-联系数据模型数据模型类型1.信息模型(概念模型):实体-联系(E/R)模型,对象定义语言(ODL)模型,扩展标记语言(XML)等2.基本数据模型:层次模型,网状模型,关系模型等第2章实体-联系数据模型基本数据模型的三要素数据结构:数据及数据之间的关系。数据操作:对特定数据结构的操作。完整性约束:模型特有的约束及用户定义的约束。第2章实体-联系数据模型实体-联系模型一种传统且流行的方法,叫做“实体-联系”(E/R)模型。这种模型实际上是用矩形和箭头表示基本数据元素及其联系的图形。思想E/R设计关系模式关系DBMS第2章实体-联系数据模型对象定义语言ODL是用面向对象的术语说明描述数据库结构的标准语言。它是IDL(InterfaceDefinitionLanguage,接口定义语言)的扩展,又是COBAR(CommonObjectRequestBrokerArthitecture,公用对象请求代理程序体系结构)的一个组件,COBAR是正在制订的分布式面向对象计算的标准。ODL的主要用途是书写面向对象数据库的设计,进而将其直接转换成面向对象数据库管理系统(OODBMS)的说明。抽象ODLODL嵌入C++基于C++的OODBMSODL嵌入Smalltalk基于Smalltalk的OODBMS第2章实体-联系数据模型扩展标记语言扩展标记语言(XML)是基于标签的用于标记文档的符号,很像我们熟悉的HTML。XML是一个(万维网联盟)制定的标准,它在文档(文本文件)中实现了半结构。节点对应于文本的段,(有些)带标签的弧在XML中使用成对出现的标签来表示。第2章实体-联系数据模型层次模型用树型(层次)结构表示实体类型及实体间联系的数据模型称为层次模型。树的结点是记录类型,每个非根结点有且只有一个父结点。层次模型的特点是记录之间的联系通过指针来实现。层次模型的缺点:①表示关系复杂,用户不易掌握。②程序编写较复杂。PARTPROJECTP_SSUPPLIER第2章实体-联系数据模型网状模型用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。网状模型的特点是记录之间联系通过指针实现。网状模型的缺点:①数据结构复杂。②程序编写复杂。PROJECTPARTSUPPLIERP_PP_S第2章实体-联系数据模型关系模型关系模型的主要特征是用二维表格表示实体集。关系模型数据结构简单,是由若干个关系模式组成的集合。第2章实体-联系数据模型2.1E/R模型的要素第2章实体-联系数据模型E/R模型要素数据库结构抽象表示的最常用模型是E/R模型。在E/R模型中,数据的结构被表示为“实体-联系”图,图中有三个主要的元素类型:⒈实体集⒉属性⒊联系第2章实体-联系数据模型实体集(entityset)实体(entity)是某个抽象事物,相似实体的集合形成实体集(entityset).E/R模型是个静态的概念,它只包括数据的结构而不包括数据的操作。因此,实体集中不会出现如何操纵数据的方法。实体集用来描述名称,用矩形表示。第2章实体-联系数据模型属性(attribute)属性是这个实体集中的实体所具有的性质。在本课程中所涉及的E/R模型,假定都是原子的值,如字符串,整数或实数。属性只描述名称,不描述类型,用椭圆表示。第2章实体-联系数据模型联系(relationship)联系(relationship)是两个或多个实体集间的连接。二元联系是目前为止最一般的联系类型,它联系两个实体集,E/R模型允许联系连接任意数目的实体集。联系通常需要描述名称,用菱形表示。第2章实体-联系数据模型实体-联系图MoviesStarsStudiosStarsinownstitleyearlengthfiletypenameaddressnameaddress第2章实体-联系数据模型E/R联系的多重性所谓多重性是指实体之间存在的一种定量的约束关系。本质上区分两种多重性:1:关联零个或一个实体,“最多一个”多:关联零个到多个实体,“能超过一个”第2章实体-联系数据模型E/R联系的多重性考虑实体集A到B的联系1对1:A的一个实体对应B的零个或一个实体且B的一个实体对应A的零个或一个实体。例如:系—系主任学生—图书证1对多:A的一个实体对应B的零个到多个实体而B的一个实体对应A的零个或一个实体。多对1是1对多的逆联系。例如:学生—系图书—分类人员—设备多对多:A到B是1对多且B到A也是1对多。例如:学生—课程图书—图书证电影—影星第2章实体-联系数据模型多重性之间的关系是什么?1对多是多对多的一种特例;多对多包含1对多的情形。1对1是1对多的一种特例;1对多包含1对1的情形。第2章实体-联系数据模型如何确定多重性?假设从实体集A到B有一个联系,如何确定B方的多重性?方法如下:先确定实体集A的一个实体,再判断所联系的实体集B中关联一个还是多个实体。例如:学生—系学生—课程第2章实体-联系数据模型E/R模型中如何表示多重性?有箭头所指的实体集为1。无箭头所连接的实体集为多。思考题:银行客户与储蓄帐号之间联系的多重性。属于学生系第2章实体-联系数据模型多重性有何意义?最基本的定量关系。决定数据库的基本结构。第2章实体-联系数据模型多元联系一个联系涉及两个以上的实体集,该联系就是多元联系。较常见的是三元联系。ContractsStarsMoviesStudios一个联系可表示为一个三元组:(studio,star,movie)第2章实体-联系数据模型三元联系中的多重性是如何确定的?在实体集A和B中先分别确定一个实体,判断联系的C的实体是一个还是多个。思考题:⑴图书馆中“读者”、“书籍”和“管理员”之间的联系。⑵学校教务管理中“学生”、“教师”和“课程”之间的联系。⑶工程项目管理的供应关系中“供应商”、“工程”和“零件”之间的联系。第2章实体-联系数据模型联系中的角色在一种联系中,一个实体相对于被关联的其它实体的职责。当两个不同实体集之间建立一种联系时,假定双方实体集的名称可表示各自的角色。当一个实体集自身存在某种联系时,就需要确定联系的双方所扮演的不同角色。第2章实体-联系数据模型联系中的角色电影之间的首集与续集联系Sequel-ofMoviesSequelOriginal思考题:⑴公司雇员之间的管理关系(superior—inferior)。⑵零部件之间的装配关系。第2章实体-联系数据模型联系中的角色有时候,在一个联系中,一个实体集可能多次出现。同一实体集中的多个实体在一个联系中表示不同的语义。ContractsStarsMoviesStudiosStudioofstarProducingstudio第2章实体-联系数据模型两个实体集之间是否会有多种联系?思考题:设备—工人之间的维修关系与使用关系。AsheaderDepartmentSalesmanWorksfornamedeptidempididnonamegenderphonebirthday第2章实体-联系数据模型联系中的属性为何联系也有属性?除了实体集可定义属性之外,联系也可定义属性来扩展语义。ContractsMoviesStarsStudiostitlelengthyearfilmTypenameaddressnameaddresssalary第2章实体-联系数据模型把多元联系转换为二元联系为何要转换?简化模型,方便设计和实现。如何把多元联系转换到二元联系,而不丢失信息?以三元联系为例,①把三元联系表示为一个实体集,称为连接实体集;②确定连接实体集的属性;③分别建立该实体集到三个原实体集的多对1的二元联系。连接实体集是什么?一种特殊的实体集,可等价表示一个联系。通常有属性。第2章实体-联系数据模型把多元联系转换为二元联系Star-ofStarsMoviesMovie-ofContractsStudioStudioofstarProducingstudioSigndateSalary第2章实体-联系数据模型何时需要转换?①多元联系;②多对多联系;③有属性的联系。思考题:⑴将学生与课程之间的选修联系用连接实体集表示。⑵以下表示是否等价:图书借阅学生教师图书借阅学生教师借阅第2章实体-联系数据模型E/R图中的子类一个实体集中含有一些实体,这些实体拥有集合中其他成员没有的特性。我们通常就会定义一些特殊的实体集,称之谓子类。每个子类有它自己的特殊的属性和/或联系。子类是面向对象的概念在E/R图中的体现。在E/R模型中虽然有表示方法,但不能解决普遍的复杂性问题。我们用isa的联系连接实体集和它的子类。超类子类整体特征继承附加特征第2章实体-联系数据模型E/R图中的子类例:职工—采购员—保管员职工采购员Isa保管员Isa注意:1超类与子类之间是1:1联系2子类具有(继承)超类的一切属性及联系3仅与子类相关的属性及联系标于子类框上第2章实体-联系数据模型E/R图中的子类例电影、卡通片与谋杀片MoviesCartoonsisaMurder-MysteriesisaweaponVoicestoStarslengthtitleyearfilmType第2章实体-联系数据模型2.2设计原则第2章实体-联系数据模型设计原则什么是设计原则?指导我们分析需求,设计解决方案的准则。为何需要设计原则?为了真实全面反应客观需求,以得到良好的设计,且避免常见问题。第2章实体-联系数据模型真实性真实性原则是什么?⑴忠实反映需求规范。实体集、联系和属性应反映客观的实际情况。⑵这是最基本的原则。在设计中应注意保持一致性,不自相矛盾。⑶若违背此原则,将会得到无效甚至有害的设计。第2章实体-联系数据模型避免冗余避免冗余原则是什么?⑴对任何事物的任何性质的描述,都仅描述一次。⑵注意避免:重复的表示,二次数据,冗余的联系。可能的问题:空间浪费;维护一致性的代价。思考题:人事档案中每个人有身份证号、性别、出生日期、年龄等属性。有多余属性吗?第2章实体-联系数据模型简单性简单性原则是什么?避免引入多余的元素。MoviesRepresentsHoldingsStudioOwnsHoldings表示一部电影的所有权。如果没有属性的话,则是多余的实体集。可能引起的问题:多余实体集必然导致多余的联系,空间浪费;计算复杂;易出错。要点:对1对1的联系要仔细研究是否多余。第2章实体-联系数据模型选择正确的联系为什么选择正确的联系?如不正确选择联系,由于将可能的联系都加到设计中,则⑴导致冗余。⑵使得数据库可能需要更多的空间来存储冗余元素。⑶修改数据库会更复杂。第2章实体-联系数据模型选择正确的联系Works-forStarsMoviesStars-inStudioOwns第2章实体-联系数据模型选择合适的元素类型“合适”是什么原则?相对的合理;更自然;更简单;更贴近需求。1.是选择属性,还是实体集?例:考虑Studios。如果设计中只要求Studios的名称,不要求其它属性,如地址、总裁等,是否可作为Movies的一个属性,而无需一个实体集。第2章实体-联系数据模型选择合适的元素类型建议:若某事物具有除名称之外的更多信息,则应建模为一个实体集;否则应为属性。属性比实体集或联系实现起来更简单。此外,在E/R模型中,每个实体所具有的属性值应该是单值的,因此,若某个属性是多值的,通常需要将之建模为实体集。思考题:⑴人事档案中每个人除有姓名、身份证号之外,若需多个住址和多个宅电号码,应如何建模?⑵住址和宅电号码之间是否可能有联系?第2章实体-联系数据模型选择合适的元素类型2.是选择一个多元
本文标题:数据库系统基础教程(第2章)
链接地址:https://www.777doc.com/doc-4056487 .html