关闭

关闭

封号提示

内容

首页 第2章 数据模型1.ppt

第2章 数据模型1.ppt

第2章 数据模型1.ppt

上传者: 芒克 2014-02-17 评分 3 0 6 1 28 暂无简介 简介 举报

简介:本文档为《第2章 数据模型1ppt》,可适用于IT/计算机领域,主题内容包含第章数据模型第章数据模型概述经典数据模型回顾面向对象数据模型可扩展对象关系数据模型半结构化数据模型数据语义数据语义的统一框架:本体论概述概述数据库中符等。

第章数据模型第章数据模型概述经典数据模型回顾面向对象数据模型可扩展对象关系数据模型半结构化数据模型数据语义数据语义的统一框架:本体论概述概述数据库中的数据是有组织的即不只有数据还包括描述数据的部分通常称为数据模式(schema)早期的数据库系统一般都是在应用中直接描述模式但是用这种方式描述企业的数据需求层次太低不便用户理解因此需要一种更高层次的描述模式的方法即数据模型现有的数据库系统均是基于某种数据模型数据抽象数据抽象数据模型是数据库技术的核心数据模型既提供了考虑面向数据处理应用的概念基础也提供了使用数据库系统的技术和工具的形式基础数据模型涉及数据的语法(syntactic)和语义(semantics)两个方面而数据抽象则是数据模型的基础数据抽象数据抽象信息世界信息世界数据库系统是面向计算机的而应用是面向现实世界的两个世界存在着很大差异要直接将现实世界中的语义映射到计算机世界是十分困难的因此需要引入一个信息世界作为现实世界通向计算机实现的“桥梁”信息世界信息世界一方面信息世界是对现实世界的抽象从纷繁的现实世界中抽取出能反映现实本质的概念和基本关系另一方面信息世界中的概念和关系要以一定的方式映射到计算机世界中去在计算机系统上最终实现信息世界起到承上启下的作用数据模型的定义()数据模型的定义()数据模型是数据库系统中用于提供信息表示和操作手段的形式构架数据模型的定义()数据模型的定义()Adatamodelisanintegratedcollectionofconceptsfordescribingandmanipulatingdata,relationshipbetweendata,andconstraintsonthedatainanorganization数据模型的定义()数据模型的定义()Adatamodelrepresentationof“realworld”objectsandevents,andtheirassociationsIt’sabstractionthatconcentratesonessential,inherentaspectsofanorganizationandignorestheaccidentalproperties数据模型的定义()数据模型的定义()Adatamodelisacollectionofconceptsfordescribingdatapropertiesanddomainknowledge:DatarelationshipsDatasemanticsDataconstraints数据模型的定义()数据模型的定义()Adatamodelisanabstractmodelthatdescribeshowdataisrepresentedandaccessed数据模型的定义()数据模型的定义()Thetermdatamodelhastwogenerallyacceptedmeanings:Adatamodeltheory,ieaformaldescriptionofhowdatamaybestructuredandaccessedAdatamodelinstance,ieapplyingadatamodeltheorytocreateapracticaldatamodelinstanceforsomeparticularapplication(datamodeling)对数据模型的要求()对数据模型的要求()数据模型是对现实世界的表示,如何把现实世界的对象抽象为计算机可识别、可操作、并且是正确的数据集合是数据模型的根本所在不同的数据模型提供了模型化数据和信息的不同工具对数据模型的要求()对数据模型的要求()能比较真实地模拟现实世界容易为人所理解便于在计算机上实现注意:前条与第条之间往往是矛盾的!数据模型的组成要素数据模型的组成要素结构(Structure)部分:数据结构集合用于创建数据库表示由数据库模拟的实体或对象。操作(manipulation)部分:运算子(operators)集合这些运算子可以被施用数据结构,更新和查询数据库内的数据内容。完整性(integrity)约束部分:规则的集合用于控制放置在这些数据结构上的约束以便保证结构的完整性。数据结构数据结构数据结构定义了数据的组织规则数据库基于这些规则而构建如关系模型中数据按域、属性、关系等组织构建数据结构是刻画一个数据模型性质最重要的方面数据结构数据结构在数据库系统中人们通常按照其数据结构的类型来命名数据模型例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型数据结构是对系统静态特性的描述数据操作数据操作数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合包括操作及有关的操作规则数据库主要有检索和更新(包括插入、删除、修改)两大类操作数据操作是对系统动态特性的描述完整性约束完整性约束数据的完整性约束是一组条件规则的集合完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则用以限定符合数据模型的数据库状态以及状态的变化以保证数据的正确、有效、相容例如在学校的数据库中规定大学生入学年龄不得超过岁硕士研究生入学年龄不得超过岁学生累计成绩不得有三门以上不及格等等数据模型的分类数据模型的分类根据模型描述的内容和应用的层次不同可划分为:概念模型也称信息模型它是按用户的观点来对数据和信息建模主要用于数据库设计数据模型也称逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等它是按计算机系统的观点对数据建模主要用于DBMS的实现物理模型也称存储模型用于在最低层次上描述数据与具体实现有关数据模型的分类数据模型的分类根据描述方法不同可划分为:基于记录的逻辑模型:用记录描述数据每个记录由若干字段组成与基于对象的逻辑模型不同它不但描述了数据库的全局逻辑结构还提供关于实现的高层描述层次模型网状模型关系模型基于对象的逻辑模型:用实体、属性、联系描述数据用于逻辑层和视图层包括实体联系模型(ER)面向对象模型(objectorientedmodel语义数据模型(Semanticmodel)数据模型的分类数据模型的分类根据数据模型的表达方式可划分为:面向语法的vs面向语义的LogicbasedvsGraphbased根据数据模型的应用范围可划分为:通用的vs面向领域的……数据模型的分类数据模型的分类根据数据模型的发展历史可划分为:第一代:文件系统第二代:层次和网状第三代:关系第四代:面向对象和可扩展…:半(非)结构化、XML、RDF、Ontologe数据模型的分类数据模型的分类根据数据对象结构化程度可划分为:StructureddatamodelsSemistructureddatamodelsUnstructureddatamodels经典数据模型回顾经典数据模型回顾层次(Hierarchical)模型(略讲)网状(Network)模型(略讲)关系(Relational)模型(复习)实体联系(ER)模型(复习)层次模型(略讲)层次模型(略讲)按照层次结构(即树型结构)来组织数据树中的每一个结点表示一个记录类型箭头表示双亲-子女关系性质有且仅有一个结点无双亲该结点称为根结点其它结点有且仅有一个双亲这些结点称为从属结点由“双亲子女关系”确定记录间的联系上一层记录类型和下一层记录类型的联系是一对多联系特点反映现实世界中数据的层次关系比较简单、直观。通过指针来实现记录之间的联系查询效率较高。只能描述:M联系且复杂的层次使得数据的查询和更新操作比较复杂。网状模型(略讲)网状模型(略讲)使用有向图(网络)结构表示实体类型和实体间类型的数据模型又称为网络模型。结点具有的性质:至少有一个结点有多于一个双亲结点可以有一个以上的结点无双亲结点特点:能够描述M:N联系。通过指针来实现记录之间的联系查询效率较高编写应用程序比较复杂关系模型(回顾)关系模型(回顾)数据结构关系模型的完整性关系运算关系代数关系演算关系数据库语言SQL关系数据库理论关系模型扩展关系模型数据结构关系模型数据结构直观描述用二维表来表示实体及其相互联系关系模型数据结构关系模型数据结构数学定义域:原子值的集合元组:(d,…,dn)笛卡尔积:D…Dn关系:元组集合关系模式:R(A,…,An)键:超键、候选键、主键、外键关系模型的完整性关系模型的完整性域完整性实体完整性参照完整性用户定义完整性关系运算关系运算关系代数以集合代数为基础以“关系”为运算对象和结果的代数演算系统代数演算系统的组成运算对象运算符封闭性运算规则关系演算以谓词演算为基础以元组(域)变量为谓词变元的逻辑演算系统课后复习Chapter:RelationalModel(第版)课后复习Chapter:RelationalModel(第版)关系数据库的结构StructureofRelationalDatabases关系代数RelationalAlgebra元组关系演算TupleRelationalCalculus域关系演算DomainRelationalCalculus扩展关系代数操作ExtendedRelationalAlgebraOperations数据库更新ModificationoftheDatabase视图Views关系数据库语言SQL关系数据库语言SQL数据定义语言(DDL)数据查询语言(QL)基本查询块集合运算嵌套(子)查询数据操纵语言(DML)数据控制语言(DCL)嵌入式SQLSQLAPICLIODBCJDBC课后复习Chapter:SQL(第版)课后复习Chapter:SQL(第版)基本结构BasicStructure集合操作SetOperations聚集函数AggregateFunctions空值Values嵌套子查询NestedSubqueries派生关系DerivedRelations视图Views数据库更新ModificationoftheDatabase连接关系JoinedRelations数据定义语言DataDefinitionLanguage嵌入式SQLODBC和JDBC。EmbeddedSQL,ODBCandJDBC关系数据库理论(复习)关系数据库理论(复习)关系数据库设计的理论基础数据依赖函数依赖(FD)、多值依赖(MVD)、连接依赖(JD)逻辑蕴含(|=)、逻辑导出(=>)、Armstrong公理、FD集合闭包属性集合闭包、FD集合的等价覆盖、最小FD集合关系数据库理论关系数据库理论关系模式分解无损连接分解、保持FD分解、判别算法关系模式规范化NFNFNFBCNFNFNF规范化算法(分解法、合成法)课后复习Chapter:RelationalDatabaseDesign(第版)课后复习Chapter:RelationalDatabaseDesign(第版)FirstNormalFormPitfalls(陷阱)inRelationalDatabaseDesignFunctionalDependenciesDecompositionBoyceCoddNormalFormThirdNormalFormMultivaluedDependenciesandFourthNormalFormOverallDatabaseDesignProcess关系模型扩展关系模型扩展嵌套(非NF)关系模型可扩展的对象关系模型时态关系模型概率关系模型模糊关系模型ER模型(回顾)ER模型(回顾)ER模型是实体联系(EntityRelationship)模型的缩写是一种概念数据模型。基本思想:首先设计一个概念模型它是现实世界中实体及其联系的一种信息结构不依赖于具体的计算机系统与存储组织、存取方法、效率等无关。然后将概念模型转换为数据库管理系统所支持的逻辑数据模型。在ER模型中包括:实体、联系和属性三种基本成分。ER模型ER模型实体(Entity):即实在之体是可区别且可被识别的客观存在的事、物或概念。具有共性的实体可划分为实体集。实体的内涵用实体类型表示。属性(Attribute):是实体所具有的特性或特征。一个实体可以有多个属性。不能再细分的属性称为原子属性还可以细分的属性称为可分属性。属性的可能取值范围称为属性的值域简称为属性域。属性将实体集中每个实体和该属性的值域中的一个值联系起来。一个实体诸属性的一组特定的属性值确定一个特定的实体。ER模型ER模型属性(Attribute)定义:实体及联系所具有的特性或特征一个实体可以有多个属性。原子属性与可分属性:不能再细分的属性称为原子属性可以细分的属性称为可分属性。单值属性与多值属性:只能取单个值的属性称为单值属性可以取多个值的属性称为多值属性。值域:属性的取值范围称为属性的值域简称为属性域。值标识:属性将实体集中每个实体和该属性的值域中的一个值联系起来一个实体诸属性的一组特定的属性值可唯一标识一个特定的实体。ER模型ER模型联系(relationship)定义:发生在实体之间具有特定含义的对应关系联系值与联系集:二元联系与多元联系:角色(role):基数比约束(cardinalityratioconstraint):二元联系::,:M,M:N三元联系:::,::P,:N:P,M:N:P实体的参与度:(min,max),<=min<=max>=部分参与(min=)和全参与(min>):联系的属性:强实体与弱实体:ER图ER图ER图基本符号矩形框:表示实体类型菱形框:表示联系类型椭圆形框:表示实体类型和类型类型的属性直线:联系类型与其相关的实体类型之间用直线相连接并在其旁边标记联系的种类(:、:N或M:N)表示实体与联系之间的关系ER图设计步骤ER图设计步骤确定实体类型确定联系类型确定实体类型和联系类型的属性画出ER图ER模型符号汇总ER模型符号汇总ER模型符号汇总ER模型符号汇总课后复习Chapter:EntityRelationshipModel(第版)课后复习Chapter:EntityRelationshipModel(第版)EntitySets实体集RelationshipSets联系集DesignIssues模型设计MappingConstraints映射约束Keys码ERDiagramER图ExtendedERFeatures扩展ER功能DesignofanERDatabaseSchemaER数据库模式的设计ReductionofanERSchematoTablesER模式转换成表经典数据模型的不足()经典数据模型的不足()经典数据模型都是基于记录面向机器的经典数据模型缺乏对以下特征的支持DataabstractionComplexConstraintsUnstructuredobjectsDynamicpropertiesofanapplication子类关系(hassubtype)属性关系(hasattribute)实例关系(hasinstance)面向对象的基本概念(复习)面向对象的基本概念(复习)面向对象(ObjectOrientationOO)的概念具有广泛的背景和长久的历史最早可追溯到世纪年代末和年代初。面向对象的概念最先起源于程序设计领域世纪年代后引起了人们的普遍关注并很快被引入计算机科学与技术的其他领域如数据库、操作系统、软件方法与软件工程乃至系统结构。面向对象方法的基本特征面向对象方法的基本特征面向对象实质上是一种软件设计的方法学它将所考虑的现实世界或系统看成是一个对象的集合每一对象都具有特性和行为即包含了一组数据和该数据集上的一组操作。面向对象技术通过对现实世界中对象的抽象以及对各个对象之间的相互关系、相互作用的描述实现由现实世界到目标系统的映射。面向对象方法学所引入的对象、方法、消息、类、实例、继承性、封装性等一系列重要概念和良好机制为人们认识和模拟客观世界分析、设计和实现大型复杂系统奠定了良好的科学基础。对象(Object):定义对象(Object):定义对象是数据及可对这些数据施加的操作结合在一起所构成的独立单位的总称是具有一定知识和处理能力的独立个体。对象可以是具体的物理实体如一个文件也可是是抽象概念如多任务操作系统中的调度策略。从信息模拟的角度看:对象是对问题域中某个事物的抽象这种抽象反映了系统需要保存有关这个事物的信息和与它交互的能力即对象是对属性值和操作的封装。对象(Object):特点对象(Object):特点唯一标识性:指对象是可相互区分的并且由对象的内在本质来区分而不是通过描述(值)来区分。分类性:指可以将具有相同数据结构(属性)和行为(操作)的对象抽象成类。多态性:指同一个操作可以是不同对象的行为。对象(Object):特点对象(Object):特点封闭性:从外面看只能看到对象的外部特性即能够受理哪些信息具有哪些处理能力对象的内部即处理能力的实行和内部状态对外是不可见的。从外面不能直接使用对象的处理能力也不能直接修改其内部状态对象的内部状态只能由其自身改变动态产生性:对象是在系统执行过程中根据需要而动态产生的。一定的“智力”性:对象具有一定的“智力”表现在能够解释传来的信息理解由消息带来的要求并独立对象(Object):表现形式对象(Object):表现形式外部实体(如一个系统、设备、人等):产生或消耗一个基于计算机的系统所用的信息物(如报告、显示、信件、信号等):问题信息域的一部分事件(如一次信号传输或一系列机器人动作的完成):发生于系统操作的有关时刻角色(如管理者、工程师等):由与系统交互作用的人来扮演组织单位(如部门、小组等):与应用相关的机构场所(如制作平台、办公室等):使问题和系统的整个运作有固定的位置。结构(如传感器、计算机等):定义一类对象或定义对象的相关类对象结构对象结构对象是由一组数据结构和在这组数据结构上的方法(程序代码)封装起来的基本单位。一个对象由属性集合、方法集合和消息集合三部分加上对象标识组成即一个对象可以表示为一个元组:<IDDSMSRS>其中:DS为属性集合即对象的状态MS为方法集合即对象的行为RS为关于对象之间关系的规则集即关于对象的复杂构造、外部请求或对象间交互作用的规则ID为对象的标识(OID)。属性(Attribute)属性(Attribute)对象通常具有若干特征每个特征称为对象的一个属性。属性反映对象的状态与特性描述对象静态性质。一个对象往往可以有多个属性从而构成属性集合对象所有属性整体构成了对象的数据结构。对象的某一属性值可以是单个的值也可以是单个值的一个集合还可以又是另外一个对象即对象属性可以嵌套。这种嵌套可以多层次地继续下去从而组成各种复杂对象。方法(Method)方法(Method)方法是对象行为特性的描述它定义了允许作用于该对象之上的某种操作方法也称为操作或行为。方法反映对象动态性质它可以审视并且改变对象的内部状态。每个对象往往有多个方法组成方法集合。方法的定义包括两部分:方法的接口:用于说明方法的名称、参数和返回值的类型也称为调用说明方法的实现:是用程序设计语言编写的一段程序代码用以实现方法的具体功能即对象操作的具体算法对象标识(OID)对象标识(OID)在面向对象系统中每一个单独存在的持久对象都有一个唯一的对象标识符(ObjectIdentifierOID)它对于对象的值具有存在独立性。这样就引人了至少两种不同的关于对象相等的概念:等同(标识符相等)等值(值相等)。两个对象是等同的或标识相等的如果它们具有同一OID两个对象是等价的或值相等的如果它们所有为值的属性相等且所有为对象的属性递归地是值相等的。显然等同蕴含等价反之不然。消息(Message)消息(Message)消息是实现对象与对象之间相互通信的手段。由于对象的封装性和隐蔽性对象的消息仅仅作用于对象接口再通过接口进一步作用于对象内部。消息的作用包括:请求对象为其服务向对象传递消息并对对象操作反馈服务结果消息(Message)消息(Message)通常一个消息由三部分组成:接收消息的对象消息标识符(即消息名)零个或多个变元例:MyCircleShow(Green)MyCircle是接收消息的对象的名字Show是消息名Green是消息的变元类(class)类(class)具有同样结构和行为的对象组合成“类”。类是将具有相同属性和方法的对象组合在一起的“模板”(template)。类中的成员称为“实例对象”或“实例”即类实现了数据建模中的“isinstanceof”联系类(Class)类(Class)类是关于对象性质的描述包括外部特性和内部实现两个方面。类是是对象的抽象是一种对象模型它描述了属于该对象类型的所有对象的性质。类是支持继承性和多态的抽象数据类型(ADT)。类通过描述消息模式及其相应的处理能力定义类的外部属性通过描述内部状态的表现形式及固有处理能力的实现定义类的内部实现。类的实现图示类的实现图示消息模式:处理能力……消息模式n:处理能力n消息模式处理能力的实现……消息模式n处理能力n的实现内部状态的表现形式外部特性内部实现类(Class)继承(Inheritance)继承(Inheritance)广义地说继承是指能够直接获得已有的性质和特征而不必重复定义它们。在面向对象方法中继承是子类自动地共享基类中已定义的数据和方法的机制。父类、子类、超类父类:一个类的上层是父类子类:一个类的下层是子类超类:如果C是C的子类C是C的子类则C是C的超类继承(Inheritance)继承(Inheritance)类AA的实例a类B:A的子类B的实例b实现继承机制的原理继承(Inheritance)继承(Inheritance)结构继承又称状态继承或值继承即子类的实例继承其超类的实例变量。行为继承又称为方法继承即在类的继承层次结构中为一个类定义的方法可由其子类继承因而这些被继承的方法也成为操纵子类实例的接口的一部分。单继承与多继承多态(Polymorphism)多态(Polymorphism)对象根据所接受的消息而做出动作同样的消息为不同的对象接受时可导致完全不同的行动该现象称为多态性。利用多态用户能够发送一般形式的消息而将所有的实现细节都留给接受消息的对象。动态联编(dynamicbinding)动态联编(dynamicbinding)“联编”(binding)是将程序中的过程调用转换成运行该程序的机器可直接解释的形式完成这种转换的时刻称为“联编时间”。联编时间可以早到编译时也可推迟到联接装配时最晚可到运行时此时的联编就称为动态联编。面向对象系统的动态联编指在运行时将消息(方法名)根据具体的接受对象的类联编到实现它的特定方法(即转换成特定过程的地址)。对象组合(Composition)对象组合(Composition)对象组合关系是客观事物间“部分整体”关系的抽象。组合是对象之间不同于继承的另一种重要关系。如果一个类的属性域中的属性可以是另一个类或属性值是另一个类中的实例以及其子类则称这两个类之间存在组合关系。对象组合(Composition)对象组合(Composition)例如一架飞机由机身、引擎、机翼和尾翼部分组成:对象组合(Composition)对象组合(Composition)组合关系是一种“一部分”(isapartof)联系也称为包含关系组合的部分组成整体:也就是说此时属性值是另一个类组合的嵌套性:类由属性集合组成这些属性的部分或全部的值域又可以是一些带有自己属性集的类如此等等构成嵌套面向对象的数据模型面向对象的数据模型面向对象数据模型(ObjectOrientedDataModelOODM)即是依据面向对象方法所建立的数据模型面向对象数据模型的基本特征包括数据模式(数据结构)数据操作和数据约束三个方面数据模式数据模式用对象结构以及类间继承和组合关系建立数据间的复杂结构关系这种模式结构的语义表示能力比ER方法与EER方法要强。数据操作数据操作用对象与类中方法构造模式上的操作这种操作语义范围比传统数据模型要强。例如可以构造一个圆形类它的操作可以除查询、修改外还可以有图形的放大/缩小图形的移动、图形的拼接等。因此,OODM具有比传统数据模型更强的功能。数据约束数据约束数据约束也是一种方法一般是一种逻辑型的方法即是一种逻辑表达式可以用类中的方法表示模式约束。面向对象的数据模型面向对象的数据模型按照所支持的数据库语言面向对象数据模型可进一步分为持久语言式和查询语言式两类。面向对象的数据类型系统面向对象的数据类型系统在面向对象的系统中数据类型系统由三部分组成:基本类型复合类型引用类型基本类型基本类型基本数据类型是指整型、浮点型、字符、字符串、布尔型和枚举型枚举类型是一个标识符的列表例:sex定义为枚举类型{malefemale}复合类型复合类型行类型(RowType):不同类型元素的有序集,也称为元组类型、结构类型或对象类型例如:日期可以由日、月、年三部分组成(October)数组类型(ArrayType):相同类型元素的有序集合一般数组的大小是预先设置的例如:人名数组:BAOANNINGWENGAODINGSHIZHOU复合类型复合类型列表类型(ListType):相同类型元素的有序集合并且允许有重复的元素作为一种特例字符串(String)类型是列表(List)类型的简化形式列表的大小预先未设置在使用时可以有任意个元素例如:<,,,,>包类型(BagType):相同类型元素的无序集合并且允许有重复的元素也称为多集类型(MultisetType)例如成绩集:{}复合类型复合类型集合类型(Settype):相同类型元素的无序集合并且所有的元素必须是不同的。有时也称为关系类型例如,课程集:{MATHSPHYSICSPLOSDB}复合类型复合类型复合类型可以嵌套例如课程成绩集:{(MATHS)(PHYSICS)(PL)(OS)(DB)}其中外层是集合类型内层是行类型复合类型复合类型复合类型中的数组、列表、包、集合统称为汇集(Collection)类型或批量(Bulk)类型其区别如图所示引用类型引用类型复合类型的定义只能嵌套若要允许递归需要采用引用类型引用类型涉及类型值域中的实际映射这种引用实现方式避免了无穷嵌套问题对象联系图对象联系图传统的ER模型和关系模型不允许数据结构中出现嵌套和递归为此对ER图进行扩充提出了对象联系图的概念对象联系图允许数据结构中出现嵌套和递归可以更加真实的反映现实世界数据之间的各种复杂联系对象联系图的成分对象联系图的成分对象类型单值属性值对象间嵌套或引用的关系基本数据类型多值属性值两个属性之间值的联系为逆联系对象间超类和子类的联系对象联系图表达要点对象联系图表达要点椭圆代表对象类型(实体型)椭圆之间的有向边代表对象之间的函数(联系)单箭头代表函数值是单值双箭头代表函数值是多值小圆圈代表属性是基本数据类型对象联系图:例对象联系图:例图对象联系图数据的泛化/特化数据的泛化/特化泛化/特化(Generalization/Specialization)是对概念之间联系进行抽象的一种方法当在较低层上抽象表达了与之联系的较高层上抽象的特殊情况时就称较高层上抽象是较低层上抽象的“泛化”而较低层上抽象是较高层上抽象的“特化”特化联系是一种“是一个”(isa)的联系数据的概化/特化数据的概化/特化在有泛化/特化联系的对象类型之间较高层的对象类型称为“超类型”(Supertype)较低层的对象类型称为“子类型”(Subtype)子类型具有继承性即可以继承超类型的特征而且子类型本身还可以有其他特征数据的概化/特化:例数据的概化/特化:例FacultyPersonStudentfnosalarysnoagename图带概化边的对象联系图持久化程序设计语言持久化程序设计语言持久数据:即使创建数据的程序已经终止也仍然继续存在的数据持久化程序设计语言:扩充了处理持久数据能力的程序设计语言世纪年代初不少程序设计语言(如PASCAL)都有了相应的持久化版本面向对象的持久化程序设计语言面向对象的持久化程序设计语言对现有的面向对象程序设计语言(OOPL)进行扩充使之能处理持久数据这样的OOPL称为面向对象持久化程序设计语言(OOPesistentProgrammingLanguage)对象的持久性对象的持久性将临时对象转变为持久对象的方法:按类(Class)持久:声明一个类中所有对象都是持久的简单但缺乏灵活性有时一个类中可以同时有临时对象和持久对象按创建(Creation)持久:扩展创建临时对象的语句来创建持久对象按标志(Marking)持久:所有对象被创建为临时的需要持久的对象在程序结束前显式地标识为持久的按引用(Reference)持久:一个或多个(根)对象被显式地声明为持久的其它被根对象直接地或间接地引用的对象被看作是持久的对象标识与指针对象标识与指针对象标识(OID)类似于程序设计语言中的”指针”在持久化OOPL中持久对象的对象标识以“持久化指针”实现与内存指针不同持久化指针在程序执行后及数据重组后仍保持有效程序员可以像使用内存指针一样使用持久指针持久对象的访问持久对象的访问查找数据库中对象的方法对象名字扩展性差不适于大数目对象情况对象标识符或对象的持久化指针不易理解记忆存储对象的集合体程序通过迭代访问目标对象对象的集合体本身可以看成是一个集合体类型(collectiontype)的对象如集合、多重集合、列表等类区间(classextent):属于一个类的所有对象的集合体类区间使得类可以象关系一样对待对象的访问也与元组的访问一样ODMGODMG年代后期计算机厂商纷纷推出OODB产品为了增加与传统数据库竞争中的对抗能力成立了ODMG(ObjectDataManagementGroup)组织年形成工业化的OODB标准ODMG(或ODMG)ODMGODMGODMG是一个用于面向对象数据管理系统接口的标准定义ODMG是基于对象的将对象作为基本构造而不像SQL是基于表的不同产品对ODMG的实现可能有很大区别ODMGODMGODMG的要点是扩充C语言使之能处理持久数据而形成OODBS从C扩充而成的OODBS称为持久化C系统本节先介绍ODMG的核心概念然后介绍ODMGC的对象定义语言(CODL)和对象操纵语言(COML)ODMG核心概念ODMG核心概念对象:是ODMG基本的数据结构也是数据存储和操作的基本单位。OID:每个对象有一个永久的对象标识符(OID)对象标识符在对象的整个生命期中都存在即无论对象是存储在外存中还是内存中OID都必须是有效的ODMG核心概念ODMG核心概念对象可以被指定类型(type)和子类型(Subtype)对象被创建为一个给定的类型对象可以定义为其他对象的子类型对象状态由其数据值与联系定义对象行为由对象操作定义ODMG标准对C的扩充ODMG标准对C的扩充ODMG标准对C做了最小扩充即在尽可能小的扩展C的情况下通过类库和模板类提供绝大多数的功能ODMG对C的扩充包括两个方面:C对象定义语言(ODL)C对象操纵语言(OML)ODMGCODL示例ODMGCODL示例classPerson:publicPersistentObject{public:stringnamestringaddress}classCustomer:publicPerson{public:datememberfromintcustomeridRef<Branch>homebranchSet<Ref<Account>>accountsinverseAccount::owner}如果一个Account对象a出现在集合caccounts中c是一个Customer对象那么c必须出现在集合aowners中ODMGCODL示例ODMGCODL示例classBranch:publicPersistentObject{public:stringnamestringaddressintassets}classAccount:publicPersistentObject{private:intbalancepublic:intnumberRef<Customer>ownerinverseCustomer::accountsintfindbalance()intupdatebalance(intdelta)}如果一个Customer对象c出现在集合aowners中a是一个Account对象那么a必须出现在集合caccounts中ODMGCOMLODMGCOML使用C运算符的持久性版本例如:dRef<Account>account=new(bankdb,Account)new指定数据库中分配对象,而不是在内存中第二个参数(“Account”)给出数据库中用的类型名注:当去除引用运算符>作用于dRef<Account>引用时,在继续通常的C去除引用之前需要先加载被引用对象到内存(如果不在内存的话)ODMGCOMLODMGCOML类的构造子:创建对象时用于初始化对象的特殊方法可实现对new自动调用在创建与删除对象时类外延被自动维护仅针对说明了此特性的类通过用户接口说明,而非C注:早期的ODMGC不支持自动维护类外延ODMGCOML数据库与对象函数ODMGCOML数据库与对象函数类dDatabase提供方法打开数据库:open(databasename)命名对象:setobjectname(object,name)用名查找对象:lookupobject(name)重命名对象:renameobject(oldname,newname)关闭数据库:close()类dObject被所有持久性类继承提供方法分配及删除对象更新对象之前必须调用方法markmodified()创建对象时自动调用ODMGCOML示例ODMGCOML示例intcreateaccountowner(Stringname,StringAddress){DatabasebankdbobjDatabase*bankdb=bankdbobjbankdb>open(“BankDB”)Transactiontranstransbegin()Ref<Account>account=new(bankdb,Account)Ref<Customer>cust=new(bankdb,Customer)cust>name=namecust>address=addresscust>accounts>insertelement(account)account>owners>insertelement(cust)Codetoinitializeotherfieldstranscommit()}在数据库中分配对象空间ODMGCOML示例ODMGCOML示例intprintcustomers(){DatabasebankdbobjDatabase*bankdb=bankdbobjbankdb>open(“BankDB”)TransactionTranstransbegin()Extent<Customer>customerExtentIterator<dRef<Customer>>iteriter=customerExtent–>createiterator()Ref<Customer>pwhile(iternext(p))pprintcust()transcommit()}迭代算子ODMGODMGODMG组织在年公布了第二个标准:ODMG(或ODMG)ODMG内容涉及:对象模型对象定义语言(ODL)对象交换格式(OIF)对象查询语言(OOL)与C、Smalltalk和Java之间的绑定ODMGODMG在ODMG中强调从C语言出发引入处理持久数据的机制完全远离传统的数据库技术这给OODBS的推广和普及带来了障碍在ODMG中对于ODMG作了较大修改在ODMG中数据定义语言(DDL)称为对象数据语言(ObjectDatalanguage简记为ODL)数据操纵语言(DML)称为对象查询语言(ObjectQueryLanguage简记为OQL)ODMG对象模型ODMG对象模型ODMG对象模型主要包括:对象和文字对象结构对象类型定义接口和类类外延和关键码对象和文字对象和文字对象(Object)和文字(Literal)是组成ODMG对象模型的基本成分两者的主要区别在于:对象既包含一个对象标识又包含一个状态(State或当前值)而文字只有一个值没有对象标识两者的值都可以有复杂的结构对象状态随着对象值的修改而改变尽管文字也可以有复杂的结构但是它基本上是一个常量对象的特征对象的特征标识(OID):是该对象在系统范围内的惟一标识名称(Name):用来在程序中表示该对象系统可以通过名称定位到该对象。对象的名称在数据库中也应具有惟一性。但并不是所有对象都会有名称一般名称用作数据库的入口点即用于定位作用生存期(Lifetime):确定了该对象是持久对象还是暂留对象结构(Struct):指定该对象是如何使用类型构造器构造出来的它确定了对象是原子对象还是汇集对象原子对象原子对象在对象模型中任何一种不是汇集对象的用户定义的对象都称为“原子对象”注意原子对象并不是指对应于那些值是基本数据类型的对象。所有基本值被认为是文字大部分原子对象都是结构对象(StructuredObject)例如:Faculty对象有一个带有许多属性、联系以及操作的复杂结构但是它不是一个汇集所以仍然被看作是原子对象这样一个用户定义的原子对象类型被定义成为一个类需要指定它的属性、联系和操作因而用户可以为Faculty指定一个对象类型(类)汇集对象汇集对象汇集对象有数组、列表、包、集合和字典五种分别用Array<t>、List<t>、Bag<t>、Set<t>和Dctionary<kv>表示字典类型允许创建一个由关联对<kv>组成的汇集其中所有的k(关键码)值是惟一的字典类型允许进行关联检索即给定键值取回对应的一个特定对(与索引类似)对象类型定义对象类型定义对象类型(类)的定义由三部分组成:属性(Attributes):属性可以是基本数据类型也可以是复合类型复合类型包括:struct、array、list、bag、set联系(Relationships):联系是指对象之间的引用或引用的汇集。ODMG模型中的联系与ER模型中的二元联系相类似例如一个大学有很多教师每个教师属于一个大学这两个联系是互逆的实际上表示了大学与教师的:N联系操作(或方法)(Methods):是能应用到类的对象实例上的函数文字结构文字结构在ODMG对象模型中文字是指一个没有对象标识的值这个值可以有一个简单结构也可以有一个复杂结构文字有三种类型:原子文字、结构文字和汇集文字原子文字原子文字原子文字对应于预定义基本数据类型的值ODMG对象模型的基本数据类型包括:长整型(Long)、短整型(Short)、无符号整型(UnsignedLong与UnsignedShort)、单精度浮点型(Float)、双精度浮点型(Double)、布尔型(Boolean)、字符串型(String)以及枚举类型(Enum)结构文字结构文字结构文字大致对应于基本类型或结构类型在ODMGODL中用户定义的结构用关键字Struct来创建汇集文字汇集文字汇集文字是指这样的值该值是对象或者值的汇集汇集文字本身没有对象标识对象模型中的汇集包括:数组、列表、包、集合和字典等接口和类接口和类接口(Interface)是对一个对象类型的抽象行为的描述注意由于接口是“纯”抽象的因此不能被实例化类(Class)是对一个对象类型的行为和状态的详细描述类外延和关键码类外延和关键码在定义类时可以说明一个extent(类外延)并为该类外延起个名称类外延将包括相应类中所有的持久对象一个带有类外延的类可以拥有一个或多个关键码(Key)关键码由一个或多个特性(属性和联系)组成ODMGODLODMGODLODMG数据库模式定义为一系列类class的汇集对于每个类可以说明一个extent(类外延)表示类中所以对象的集合类和类外延类似于关系模型中的关系模式和关系实例ODMGODL:例ODMGODL:例对于下图所示的对象联系图可以用ODMGODL定义:ODMGODL例ODMGODL例classPerson(extentPersonskeyssn){attributestringssnattributestringnameattributeintegerage}ODMGODL例ODMGODL例classFaculty:Person/*类Faculty是类Person的子类*/(extentFacultieskeyfno){attributeintegerfnoattributeintegersalaryrelationshipUniversityworksforinverseUniversity::staffrelationshipset<Coursetext>teachinverseCoursetext::teacherintegernumteach()*统计教师授课门数的方法*}ODMGODL例ODMGODL例classUniversity(extentUniversitieskeyuno){attributeintegerunoattributestringunameattributestringcityrelationshipFacultypresidentrelationshipSet<Faculty>staffinverseFaculty::worksforrelationshipSet<Coursetext>editinverseCoursetext::editorintegernumstaff()*统计学校人数的方法*}ODMGODL例ODMGODL例classCoursetext(extentCoursetexts){attributestringcnameattributestringtextnamerelationshipFacultyteacherinverseFaculty::teachrelationshipUniversityeditorinverseUniversity::edit

类似资料

该用户的其他资料

Cell_Outage_Compensation_in_LTE_Networks.pdf

第3章 存储与文件结构.ppt

第4章 索引与散列.ppt

第1章 绪论.ppt

第6章 查询优化.ppt

职业精品

精彩专题

上传我的资料

精选资料

热门资料排行换一换

  • 中华大藏经第064卷.pdf

  • [男性健康1000问].张胜杰.…

  • 中华大藏经第096卷.pdf

  • 中华大藏经第077卷.pdf

  • 中华大藏经第080卷.pdf

  • 中华大藏经第078卷.pdf

  • 中华大藏经第072卷.pdf

  • 中华大藏经第073卷.pdf

  • 中华大藏经第076卷.pdf

  • 资料评价:

    / 199
    所需积分:1 立即下载

    意见
    反馈

    返回
    顶部