第4章 面向对象的设计-3(1)_第1页
第4章 面向对象的设计-3(1)_第2页
第4章 面向对象的设计-3(1)_第3页
第4章 面向对象的设计-3(1)_第4页
第4章 面向对象的设计-3(1)_第5页
已阅读5页,还剩54页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

1、第第4 4章章 面向对象的设计面向对象的设计4.5 4.5 数据管理的设计数据管理的设计重点重点: :如何将如何将UMLUML类图映射为数据库模型类图映射为数据库模型1内容内容 4.5.1 4.5.1 基本概念基本概念4.5.4 4.5.4 关系数据库模型关系数据库模型4.5.2 4.5.2 面向对象的数据库面向对象的数据库4.5.3 4.5.3 对象关系数据库模型对象关系数据库模型24.5.1 4.5.1 基本概念基本概念(1) (1) 暂存对象暂存对象 (transient object)(transient object)( (2) 2) 持久对象持久对象 (persistent obj

2、ect)(persistent object)在一个实例化或方法调用中在一个实例化或方法调用中, ,不需要存储任何属性的不需要存储任何属性的对象。对象。一个在实例化或方法调用中一个在实例化或方法调用中, ,必须存储一个或多个属必须存储一个或多个属性的对象。性的对象。u 持久化对象应存储在文件或数据库中;持久化对象应存储在文件或数据库中;u UMLUML中中, ,持久化对象标识持久化对象标识, ,使用板类使用板类persistent 代表持久对象。代表持久对象。3l在关系术语中,惟一标识符为键。在关系术语中,惟一标识符为键。l在对象术语中,惟一标识符称为对象的标识符在对象术语中,惟一标识符称为对

3、象的标识符OIDOID,在关系模式中实现成大整数或字符串。在关系模式中实现成大整数或字符串。l使用使用OIDOID可以简化关系数据库中键的策略。可以简化关系数据库中键的策略。l使用使用OIDOID可以很容易地维护对象间的关系。可以很容易地维护对象间的关系。l一个一个OIDOID应该在应该在类层次上是惟一的类层次上是惟一的。避免对象类型发。避免对象类型发生变化时重新分配生变化时重新分配OIDOID的问题。的问题。 l除了确定对象外,永远不要使用除了确定对象外,永远不要使用OIDOID或键。或键。 4( (3) 3) 对象标识符对象标识符(object identifier,OID(object

4、identifier,OID ) ) 用于在数据库中惟一地确定对象。用于在数据库中惟一地确定对象。( (4) 4) 数据模型数据模型 (Data Model)(Data Model) 数据模型:比原始的位和字节更易理解的方式描述数数据模型:比原始的位和字节更易理解的方式描述数据结构的抽象。有三种抽象:据结构的抽象。有三种抽象:n概念数据模型概念数据模型:面向用户、面向现实世界的,与:面向用户、面向现实世界的,与DBMSDBMS无关。无关。n逻辑数据模型逻辑数据模型:反应了数据库管理系统:反应了数据库管理系统DBMSDBMS的存储结的存储结构,是用户从数据库所看到的数据模型。构,是用户从数据库所

5、看到的数据模型。n物理数据模型物理数据模型:对应于特定的:对应于特定的DBMSDBMS,定义了实际中数,定义了实际中数据是如何存储于持久存储设备如磁盘等。据是如何存储于持久存储设备如磁盘等。5UMLUML模型与数据库模型相关模型与数据库模型相关: :数据库数据库概念概念模型模型数据库数据库包包: :将应用程序模型将应用程序模型与数据库模型隔与数据库模型隔离,建立了对象离,建立了对象和数据库之间的和数据库之间的映射。映射。边界包边界包控制包控制包实体包实体包数据库数据库包包数据库数据库逻辑模型逻辑模型数据库数据库物理模型物理模型应用程序应用程序UMLUML模型模型持久数据库层持久数据库层图图4-

6、94 UML4-94 UML模型与数据库模型模型与数据库模型6l面向对象数据库模型面向对象数据库模型 (Object-oriented Database Model)(Object-oriented Database Model)l对象关系数据库模型对象关系数据库模型 (Object-relational Database Model)(Object-relational Database Model)l关系数据库模型关系数据库模型 ( Relational Database Model)( Relational Database Model)将持久对象映射到三种数据库模型将持久对象映射到三种

7、数据库模型: :74.5.2 4.5.2 面向对象的数据库面向对象的数据库 (Object-oriented Database Model)(Object-oriented Database Model)v 从概念上,面向对象数据库把对象属性和方法从概念上,面向对象数据库把对象属性和方法 存储在一起;存储在一起; v 在一个实际实现中,复杂对象和方法代码可能在一个实际实现中,复杂对象和方法代码可能 实际上并不存储对象标识,但可能会存储指向实际上并不存储对象标识,但可能会存储指向 物理位置的指针。物理位置的指针。 8面向对象数据库面向对象数据库关系数据库关系数据库访问访问 方式方式导航性,非说明

8、性,查询效率高。导航性,非说明性,查询效率高。非过程访问方式;说明性的。非过程访问方式;说明性的。阻抗阻抗 失配失配存在着一个程序设计和基于对象概存在着一个程序设计和基于对象概念的查询语言间的匹配念的查询语言间的匹配。基本流通单位是表,基本流通单位是表,SQLSQL查询都要查询都要返回一个表;在程序设计语言中流返回一个表;在程序设计语言中流通单位是变量。把单元映射到变量,通单位是变量。把单元映射到变量,反之亦然。这样说明性风格和过程反之亦然。这样说明性风格和过程性风格之间,应用语言类型系统和性风格之间,应用语言类型系统和数据库之间的阻抗失配。数据库之间的阻抗失配。连接连接操作操作不需要连接操作

9、,对象作为一个连不需要连接操作,对象作为一个连贯的整体而存储;结构被直接的存贯的整体而存储;结构被直接的存储,应用依据对象到对象指针,而储,应用依据对象到对象指针,而不用执行连接操作。不用执行连接操作。在关系环境中,一个应用程序在运在关系环境中,一个应用程序在运行期从分离的表中导出数据库的结行期从分离的表中导出数据库的结构,要记录类型之间的连接。构,要记录类型之间的连接。类型类型有用户自定义类型有用户自定义类型有一套有限的原始类型:整型,货有一套有限的原始类型:整型,货币型,日期型币型,日期型, ,文本型文本型, ,二进制型。二进制型。约束约束完整性约束可涉及到实例完整性约束可涉及到实例只能表

10、达实体约束只能表达实体约束( (1) 1) 面向对象数据库与关系数据库的对比面向对象数据库与关系数据库的对比9l检索和更新的性能极大提高。检索和更新的性能极大提高。l表达的语义更丰富。表达的语义更丰富。l支持动态模式演变。支持动态模式演变。l维护与应用的完整性。维护与应用的完整性。l为处理复杂对象和关系,提供了好的性能,占用磁盘为处理复杂对象和关系,提供了好的性能,占用磁盘空间少。空间少。l提供了特定查询,早期类型检查的可能性。提供了特定查询,早期类型检查的可能性。l自动版本控制,已成为新的分布式计算方法的基础。自动版本控制,已成为新的分布式计算方法的基础。l可重用和扩展性。可重用和扩展性。l

11、提供更好的查询导航控制。提供更好的查询导航控制。( (2) 2) 面向对象数据库的好处面向对象数据库的好处10( (3) 3) 面向对象数据库存在问题面向对象数据库存在问题v 不存在一个可以被广泛接受的面向对象的数据类型。不存在一个可以被广泛接受的面向对象的数据类型。v 对象标识在理论上是好的,但在实际中对象并不总是对象标识在理论上是好的,但在实际中对象并不总是具有可访问的唯一标识符。具有可访问的唯一标识符。v 关系类型建模困难,组合操作也困难。关系类型建模困难,组合操作也困难。v 不同的数据库和语言产品支持各种不同的多重继承版不同的数据库和语言产品支持各种不同的多重继承版本。本。11( (4

12、) 4) 已有的面向对象数据库已有的面向对象数据库v GemstoreGemstore (Maier and Stein,1987Maier and Stein,1987,BretlBretl et.al.1989 et.al.1989)v VersantVersant是是Versant object TechnologyVersant object Technology公司产品。公司产品。v ObjectStoreObjectStore 把它看成把它看成C+C+的一种持久化扩展。的一种持久化扩展。 19971997年加入了一种本地年加入了一种本地JavaJava接口。接口。 12例:一个面向

13、对象数据库的设计样式例:一个面向对象数据库的设计样式 数据库根数据库根(database root)(database root)persistentpersistentpersonpersonDB rootDB rootcontainercontainerpersistentpersistentHobbyHobbyDB rootDB rootcontainercontainerpersistentpersistentpersonpersonDB rootDB rootcontainercontainerpersistentpersistentHobbyHobby1 1* *personspe

14、rsons1 1* *hobbieshobbies1 1* *personspersons1 1* *hobbieshobbies1 1* *1 1* *或或图图4-95 4-95 数据库根数据库根13数据库根类数据库根类 DB Root DB Root 的详细设计的详细设计:DB Root /DB Root /数据库根数据库根PersonPerson:personspersons* * constructorconstructor/构造程序构造程序DB Root()DB Root() get & query operationget & query operation/获取和

15、查询操作获取和查询操作getPerson():persongetPerson():person * * getPerson(name:string):persongetPerson(name:string):persongetPersonCount():IntegergetPersonCount():Integercontains(person:person):Booleancontains(person:person):Boolean editingediting/编辑修改编辑修改addPerson(person:person):personaddPerson(person:person):

16、personremovePerson(name:stringremovePerson(name:string) )removePerson(person:personremovePerson(person:person) )removeAllPersonsremoveAllPersons()()14更新持久对象步骤:更新持久对象步骤: initialize() /initialize() /调用起始程序(通过应用程序界面,调用起始程序(通过应用程序界面, 初始化初始化DBMSDBMS) opendatabase(“DBopendatabase(“DB-filename”) /-filename

17、”) /打开数据库打开数据库 beginUpdateTransactionbeginUpdateTransaction() /() /开始一项事项开始一项事项 /提取数据库根,再按人名检索人的对象提取数据库根,再按人名检索人的对象 dbRootdbRoot = =getDBrootgetDBroot(“DB(“DB-root-name”)-root-name”) Person = dbRoot. Person = dbRoot.getPersongetPerson(“name(“name”)”) /调用运算调用运算 Person.changeName(“newPerson.changeName

18、(“new name”) / name”) /改人名字改人名字 commitTransactioncommitTransaction() /() /结束事项结束事项 closeDatabasecloseDatabase() /() /关闭数据库关闭数据库154.5.3 4.5.3 对象关系数据库模型对象关系数据库模型 (Object-relational Database Model)(Object-relational Database Model)u对象关系数据库对象关系数据库(ORDB)(ORDB)合并了老式关系模型和新式合并了老式关系模型和新式对象模型。对象模型。 u对象关系数据库管理

19、系统对象关系数据库管理系统(Object-relational (Object-relational Database Management System, ORDBMS)Database Management System, ORDBMS)既能处理既能处理关系数据结构关系数据结构( (关系表关系表) )又能处理对象数据结构又能处理对象数据结构( (对对象表象表) )。uORDBORDB标准由标准由ANSIANSI和和ISOISO共同制订,称作共同制订,称作SQLSQL:19991999,每隔三年修订一次。每隔三年修订一次。ORDBORDB模型与关系数据库标准模型与关系数据库标准SQL92SQ

20、L92兼容。兼容。 16l过去的二十多年,关系数据库模型己征服了软件市场,过去的二十多年,关系数据库模型己征服了软件市场,取代了分层数据库和网状数据库。取代了分层数据库和网状数据库。l未来不属于未来不属于RDBRDB模型,传统的模型,传统的RDBMSRDBMS厂商如厂商如OracleOracle、IBMIBM、InformixInformix,已经提供了具有影响力的产品。但由于商业,已经提供了具有影响力的产品。但由于商业惯性,使得大型系统过渡到惯性,使得大型系统过渡到ORDBORDB或或ODBODB技术还需要十几技术还需要十几年的时间。年的时间。4.5.4 4.5.4 关系数据库模型关系数据库

21、模型 (Relational Database Model)(Relational Database Model)17lDBMSDBMS是数据库系统软件的核心,它是用户的应用程序是数据库系统软件的核心,它是用户的应用程序和物理数据库之间的桥梁。用户对数据的一切操作都和物理数据库之间的桥梁。用户对数据的一切操作都是在是在DBMSDBMS的指挥、调度、控制下进行的,而且只能借的指挥、调度、控制下进行的,而且只能借于于DBMSDBMS实现。实现。lDBMSDBMS同时要保证数据的安全性、可靠性、完整性和一同时要保证数据的安全性、可靠性、完整性和一致性。其主要功能包括:数据字典管理、数据存储管致性。其

22、主要功能包括:数据字典管理、数据存储管理、数据转换和表示、安全性管理、多用户访问控制、理、数据转换和表示、安全性管理、多用户访问控制、备份和恢复管理、数据完整性管理、数据访问语言和备份和恢复管理、数据完整性管理、数据访问语言和应用程序编程接口、数据库通信接口等。应用程序编程接口、数据库通信接口等。数据库管理系统(数据库管理系统(DBMSDBMS):):18 OraclOracle eOracle Oracle 是以高级结构化查询语言是以高级结构化查询语言(SQL)(SQL)为基础的大型关为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大系数据库,通俗地讲它是用方便逻辑管理的语言操纵

23、大量有规律数据的集合。是目前最流行的客户量有规律数据的集合。是目前最流行的客户/ /服务器体系服务器体系结构的数据库之一,也是目前世界上最流行的大型关系结构的数据库之一,也是目前世界上最流行的大型关系数据库管理系统。具有移植性好,使用方便,性能强大数据库管理系统。具有移植性好,使用方便,性能强大等特点,适合于各类大、中、小、微机和专用服务器环等特点,适合于各类大、中、小、微机和专用服务器环境。境。 商用关系数据库管理系统商用关系数据库管理系统 19l19771977年,年,Larry Ellison Larry Ellison 等人共同创建了一家软件公等人共同创建了一家软件公司,开发关系型数据

24、库。司,开发关系型数据库。l19791979年开发出世界上第一款商业关系型数据库,命名年开发出世界上第一款商业关系型数据库,命名为为OracleOracle。l19801980年,推出了年,推出了Oracle 3Oracle 3(用(用C C语言编写)。语言编写)。 l19821982年公司正式更名为年公司正式更名为OracleOracle。l19921992年,年,Oracle 7 Oracle 7 推出推出( (基于基于Unix)Unix)。商用关系数据库管理系统商用关系数据库管理系统 20l19991999年,推出以年,推出以Oracle 8iOracle 8i为核心的第一个支持为核心的

25、第一个支持InternetInternet的全套解决方案的全套解决方案( (基于基于Java)Java)。l20012001年,推出年,推出Oracle 9iOracle 9i。在集群技术、安全性等方。在集群技术、安全性等方面有了新的突破。面有了新的突破。l20042004年,在网格计算潮流中推出了年,在网格计算潮流中推出了Oracle 10gOracle 10g。l20072007年,推出年,推出Oracle 11gOracle 11g。在支持。在支持XMLXML方面的功能得方面的功能得到了扩展和增强。到了扩展和增强。 商用关系数据库管理系统商用关系数据库管理系统 21 SQL Server

26、SQL Server lSQL ServerSQL Server是是MicrosoftMicrosoft公司推出的适用于大型网络环境公司推出的适用于大型网络环境的数据库产品,一经推出,就得到了广大用户的积极响的数据库产品,一经推出,就得到了广大用户的积极响应并迅速占领了应并迅速占领了NTNT环境下的数据库领域,成为数据库市环境下的数据库领域,成为数据库市场上一个重要产品。场上一个重要产品。lSQL Server 2000SQL Server 2000是一种典型的具有客户是一种典型的具有客户/ /服务器体系结服务器体系结构的关系数据库管理系统,它使用构的关系数据库管理系统,它使用Transact

27、-SQLTransact-SQL语句在语句在服务器和客户机之间传送请求和回应。服务器和客户机之间传送请求和回应。商用关系数据库管理系统商用关系数据库管理系统 22lSOL Server 2000SOL Server 2000支持大规模联机事务处理、数据仓库、支持大规模联机事务处理、数据仓库、数据挖掘和电子商务等应用。数据挖掘和电子商务等应用。SOL Server 2000 SOL Server 2000 的出的出现极大地推动了数据库的应用和普及,无论在功能上,现极大地推动了数据库的应用和普及,无论在功能上,还是在安全性、可维护性和易操作性上都较以前版本还是在安全性、可维护性和易操作性上都较以前

28、版本有了很大提高。有了很大提高。lSQL Server 2008SQL Server 2008简体中文版于简体中文版于20082008年年1010月已在中国正月已在中国正式上市。相较于此前的版本,式上市。相较于此前的版本,SQL Server 2008SQL Server 2008有许多有许多新特性和功能,如支持基于策略的管理、审计、大型新特性和功能,如支持基于策略的管理、审计、大型数据仓库、地理信息数据,以及报表和分析服务,能数据仓库、地理信息数据,以及报表和分析服务,能够为客户的关键业务应用提供可信赖、高效和智能化够为客户的关键业务应用提供可信赖、高效和智能化的数据管理分析平台。的数据管理

29、分析平台。商用关系数据库管理系统商用关系数据库管理系统 23l在现今数据化的世界里,企业需要定位其主要数据趋在现今数据化的世界里,企业需要定位其主要数据趋势的远景,不能因为低估了数据发展需求而导致在以势的远景,不能因为低估了数据发展需求而导致在以后的系统升级中产生麻烦。目前涌现出的众多新的信后的系统升级中产生麻烦。目前涌现出的众多新的信息类型(比如图片和视频数字化等),提出了更大的息类型(比如图片和视频数字化等),提出了更大的信息存储需求(进而产生了数据中心、云计算等概信息存储需求(进而产生了数据中心、云计算等概念),企业需要一套强大的数据产品支撑。念),企业需要一套强大的数据产品支撑。 商用

30、关系数据库管理系统商用关系数据库管理系统 24 DB2DB2lDB2DB2是是IBMIBM公司开发的关系数据库管理系统,它有多种公司开发的关系数据库管理系统,它有多种不同的版本,如:不同的版本,如:DB2DB2工作组版、工作组版、DB2DB2企业版、企业版、DB2DB2个人个人版和版和DB2DB2企业扩展版(企业扩展版(DB2 Enterprise-ExendedDB2 Enterprise-Exended EditionEdition)等。这些产品基本的数据管理功能是一样的,)等。这些产品基本的数据管理功能是一样的,区别在于支持远程客户能力和分布式处理能力。区别在于支持远程客户能力和分布式处

31、理能力。 lDB2DB2可运行在可运行在OS/2OS/2、Windows NTWindows NT、UNIXUNIX操作系统上,将操作系统上,将运行在这些平台上的运行在这些平台上的DB2DB2产品统称为产品统称为DB2DB2通用数据库。通用数据库。商用关系数据库管理系统商用关系数据库管理系统 25 InformixInformixlInformixInformix在在19801980年成立,目的是为年成立,目的是为UnixUnix等开放操作系统等开放操作系统提供专业的关系型数据库产品。公司的名称提供专业的关系型数据库产品。公司的名称InformixInformix便便是取自是取自Informa

32、tionInformation和和UnixUnix的结合。的结合。lInformixInformix第一个真正支持第一个真正支持SQLSQL语言的关系数据库产品是语言的关系数据库产品是Informix SEInformix SE(Standard EngineStandard Engine)。)。Informix SEInformix SE的特点的特点是简单、轻便、适应性强。它的装机量非常之大,尤其是简单、轻便、适应性强。它的装机量非常之大,尤其是在当时的微机是在当时的微机UnixUnix环境下,成为主要的数据库产品。环境下,成为主要的数据库产品。它也是第一个被移植到它也是第一个被移植到Lin

33、uxLinux上的商业数据库产品。上的商业数据库产品。 商用关系数据库管理系统商用关系数据库管理系统 26 SybaseSybaselSybaseSybase是美国是美国SybaseSybase公司在公司在8080年代中期推出的年代中期推出的C/SC/S结构结构的关系数据库系统,也是世界上第一个真正的基于的关系数据库系统,也是世界上第一个真正的基于Client/ServerClient/Server结构的关系数据库管理系统。结构的关系数据库管理系统。lSybaseSybase软件可划分为三个部分:一是进行数据管理与维软件可划分为三个部分:一是进行数据管理与维护的联机关系数据库管理系统护的联机关

34、系数据库管理系统Sybase SQL ServerSybase SQL Server;二;二是支持数据库应用系统的建立和开发的一组前端工具软是支持数据库应用系统的建立和开发的一组前端工具软件件Sybase SQL ToolsSybase SQL Tools;三是可把异构环境下其他厂商的;三是可把异构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口软件应用软件和任何类型的数据连接在一起的接口软件Open Open Client/Open ServerClient/Open Server。商用关系数据库管理系统商用关系数据库管理系统 27l8080年代:年代:FoxBASEFoxBASE开

35、始普及,开始普及,OracleOracle、InformixInformix、SybaseSybase等大型数据库系统开始引进;等大型数据库系统开始引进;l9090年代:年代: OracleOracle、InformixInformix、SybaseSybase、SQL ServerSQL Server、DB2DB2等开始应用;等开始应用;l20002000年之后,开始应用年之后,开始应用KDDKDD(knowledge Discovery in knowledge Discovery in DatabasesDatabases)技术,建立数据中心。)技术,建立数据中心。l国产数据库系统:国产

36、数据库系统:达梦,人大金仓达梦,人大金仓。数据库技术在中国的发展数据库技术在中国的发展28( (1) RDB1) RDB建模原语建模原语l与与ODBODB和和ORDBORDB模型相比,模型相比,RDBRDB不支持的内容:不支持的内容:对象类型和相关概念对象类型和相关概念( (如继承和方法如继承和方法) ); 结构化类型;结构化类型;集;集;引用;引用;表间的用户可见导航连接表间的用户可见导航连接, ,表间关系通过比较列值表间关系通过比较列值来维持来维持, ,无持久性的连接。无持久性的连接。l关系数据库将数据存储在由行和列组成的表中。关系数据库将数据存储在由行和列组成的表中。l列具有原子域列具有

37、原子域( (数据类型数据类型) )。 29( (2) 2) 对象存储到关系数据库的两种方法对象存储到关系数据库的两种方法n对象应用围绕关系数据库来建立,每一个对象要对象应用围绕关系数据库来建立,每一个对象要懂得怎样存放和提取数据。懂得怎样存放和提取数据。 把面向对象应用移到关系数据库中实施把面向对象应用移到关系数据库中实施, ,用关系表格用关系表格来模拟对象。来模拟对象。 n应用程序与数据库存储分开应用程序与数据库存储分开, ,便于管理和演变。便于管理和演变。每一个类额外编程每一个类额外编程, ,对于复杂对象就困难。对于复杂对象就困难。n关系数据库只有有限的数据类型,继承、引址等关系数据库只有

38、有限的数据类型,继承、引址等不能在关系数据库中直接使用不能在关系数据库中直接使用, ,实施起来更困难。实施起来更困难。 把对象映射把对象映射(mapping)(mapping)到关系表到关系表30( (3) 3) 将对象类映射到表将对象类映射到表 personpersonNameNameaddressaddressAttribute NameAttribute NamePerson_IDPerson_IDPerson_namePerson_nameaddressaddressnullsnullsN NN NY YDomainDomainIDIDnamenameaddressaddressObj

39、ectObjectModelModelTableTableModelModelSQLSQLCodeCodeCandidate Key:Candidate Key:(person_ID(person_ID) )Primary Key:(person_IDPrimary Key:(person_ID) )Frequently accessed:(person_ID)(person_nameFrequently accessed:(person_ID)(person_name) )图图4-96 4-96 对象类映射到表对象类映射到表把每一个类映射到一张表或多张表。把每一个类映射到一张表或多张表。31

40、CREATE TABLE PersonCREATE TABLE Person( person_ID ID notnull( person_ID ID notnull person_name char(30) notnull person_name char(30) notnull address char(30) address char(30) PRIMARY KEY Person_ID PRIMARY KEY Person_ID););CREATE SECONDARY INDEX CREATE SECONDARY INDEX Person_index_name Person_index_n

41、ameON Person(person_name);ON Person(person_name); “ “一类一表一类一表”, ,表格的列或字段对应类的属性行或记录表格的列或字段对应类的属性行或记录对应类的实例。对应类的实例。32( (4) 4) 将关联关系映射到表将关联关系映射到表 一对一的关联映射到表一对一的关联映射到表实现方法实现方法两个对象及其关联映射到一张表两个对象及其关联映射到一张表两个对象及关联分别映射到三张表两个对象及关联分别映射到三张表Company1Company1Company1 nameCompany1 nameaddress1address1Company2Compa

42、ny2Company2 nameCompany2 nameaddress2address2如:对象模型如:对象模型33Attribute NameAttribute NameCompany1 nameCompany1 nameaddress1address1Company2 nameCompany2 nameaddress2address2nullsnullsN NN NN NN NDomainDomainCharCharCharCharCharCharcharcharAttribute NameAttribute NameCompany1name Company1name address1a

43、ddress1nullsnullsN NN NDomainDomainCharCharCharCharAttribute NameAttribute NameCompany2 name Company2 name adedress2adedress2nullsnullsN NN NDomainDomainCharCharCharCharAttribute NameAttribute NameCompany1 name Company1 name Company2 nameCompany2 namenullsnullsN NN NDomainDomainCharCharCharChar只映射到一

44、张表只映射到一张表分别映射到三张表分别映射到三张表图图4-97 4-97 一对一的关联映射到表一对一的关联映射到表34 一对多的关联映射到表一对多的关联映射到表实现实现方法方法分别建立一个和多个对象的两个表分别建立一个和多个对象的两个表关联关联为其关联建立一张独立的表为其关联建立一张独立的表在在“多表多表”中插入一个外键,建立关联中插入一个外键,建立关联CompanyCompanyCompany nameCompany nameaddressaddresspersonpersonPerson namePerson nameaddressaddress如:对象模型如:对象模型Works-forW

45、orks-for1 1* *Job titleJob title图图4-98 4-98 对象模型对象模型35Attribute NameAttribute NamePerson_IDPerson_IDPerson_namePerson_name addressaddressnullsnullsN NN NN NDomainDomainCharCharCharCharcharchar多对象类表多对象类表独立的关联表独立的关联表Attribute NameAttribute NameCompany _nameCompany _namePerson_IDPerson_IDJob titleJob t

46、itlenullsnullsN NN NY YDomainDomainCharCharIntegerIntegerstringstringAttribute NameAttribute NameCompany_nameCompany_nameaddressaddressnullsnullsN NN NDomainDomainCharCharCharChar一个对象类表一个对象类表Attribute NameAttribute NamePerson_IDPerson_IDPerson_namePerson_nameAddressAddressCompany_nameCompany_nameJob

47、 titleJob titlenullsnullsN NN NN NN NY YDomainDomainIDIDCharCharCharCharCharCharStringString图图4-99 4-99 一对多的关联映射到表一对多的关联映射到表在在“多表多表”中插入一个外键建立关中插入一个外键建立关联联独立的关联表独立的关联表36 多对多的关联映射到表多对多的关联映射到表实现实现方法方法分别建立两个分别建立两个“多多”的对象表的对象表为关联建立一张表为关联建立一张表Attribute NameAttribute NameCompany_nameCompany_namePerson_IDPe

48、rson_ID Number of sharesNumber of sharesnullsnullsN NN NY YDomainDomainCharCharIntegerIntegerIntegerInteger关联映射到表关联映射到表如:对象模型如:对象模型CompanyCompanyCompany _nameCompany _nameaddressaddresspersonpersonPerson_ IDPerson_ IDaddressaddress* * *NumberNumberOf sharesOf shares图图4-100 4-100 多对多的关联映射到表多对多的关联映射到表

49、37 将聚合关系映射到表将聚合关系映射到表实现实现方法方法建立建立“整体整体”表表建立建立“部分部分”表,其关键字是两个表关键字的组合表,其关键字是两个表关键字的组合Obj1-IDObj1-ID: :X X: :Y Y: :“整体整体”表表obj1Xyobj2ab对象模型对象模型obj1“部分部分”表表Obj1-IDObj1-ID: :X X: :Y Y: :Obj2-IDObj2-ID: :图图4-101 4-101 聚合关系映射到表聚合关系映射到表38例例1 1 实现多对多关联实现多对多关联图图4-102 4-102 在关系数据库中实现多对多关系在关系数据库中实现多对多关系position

50、positionID:char(5)primary key+Title:char(50)+SalaryMinimum:float+SalaryMaximum:float对象模型对象模型BenefitBenefitID:integerprimary key+Description:char(80)+Value:floatEmployeeEmployeeNo:char(5)primary key+Name:char(80)+Salary:float+StartData:Date+PositionID:CHAR(5)foreign keyTaskTaskID:integerprimary key+D

51、escription:char(256)+EmployeeNo:char(15)primary key0.*1.*offers1.*0.*has11Works at10.*Assigned to39图图4-103 4-103 引入关联表引入关联表Benefit, Employee关联表关联表BenefitBenefitID:integerprimary key+Description:char(80)+Value:floatEmployeeEmployeeNo:char(5)primary key+Name:char(80)+Salary:float+StartData:Date+Positi

52、onID:CHAR(5)foreign keyEmployee Benefitassociative tableEmployeeNo:char(5)primary keyBenefitID:Integerprimary key1.*110.*40例例2 2 将关联、聚合关系映射到表将关联、聚合关系映射到表对象模型对象模型顾客顾客1*顾客单据顾客单据单据表项单据表项货币单位类型货币单位类型*1顾客表顾客表Newyok Toronto Sanlose地址地址003 Smith 102002 Green101001 Sirnpson 100帐号帐号 名字名字顾客号顾客号100DM100bill13U

53、S$20billNLG50billUs$100bill 货币单位类型货币单位类型2012502110011外币总外币总额额表项号表项号单据号单据号单据表项表单据表项表图图4-104 4-104 将关联、聚合关系映射到表将关联、聚合关系映射到表: :完成完成102 4: :新建新建101 32004.3.1 369.00新建新建100 2 2004.2.1 540.00处理处理100 1日期日期 总金额总金额状态状态顾客号顾客号 单据号单据号顾客单据表顾客单据表0.711 价价 值值银行银行NLG50billGuilder银行银行Us$100billDollay银行银行Us$100billDol

54、lar1 描描 述述 货币单货币单 位类型位类型货币单货币单位名称位名称货币单位类型表货币单位类型表41以以“单继承单继承”映射到表为例映射到表为例( (5) 5) 将继承关系映射到表将继承关系映射到表v 只建立一个超类表的方法,该表包括超类的属性,子只建立一个超类表的方法,该表包括超类的属性,子类的全部属性。类的全部属性。v 为超类、子类分别建立独立的表,但各表的主键要一为超类、子类分别建立独立的表,但各表的主键要一致。致。v 为每个子类建立表,无超类表,但在每个子类表中都为每个子类建立表,无超类表,但在每个子类表中都要有超类的属性。要有超类的属性。 42例例1 1 单继承对象模型单继承对象

55、模型PersonNameNameStudentstudentNumberstudentNumberProfessorsalarysalary图图4-105 4-105 单继承模型单继承模型43ProfessorprofessorOIDprofessorOIDprimaryprimary key keyPerson namePerson namesalarysalaryStudentstudentOIDstudentOIDprimaryprimary key keyPerson namePerson namestudentNumberstudentNumber只建立子类的表只建立子类的表图图4-

56、106 4-106 单继承关系映射表单继承关系映射表PersonPersonOIDPersonOIDprimaryprimary key keynamenameStudentpersonOIDpersonOIDprimaryprimary key keyforeign keyforeign keystudentNumberstudentNumber建立超类、子类表建立超类、子类表ProfessorpersonOIDpersonOIDprimaryprimary key keyforeign keyforeign keysalarysalaryPersonpersonOIDpersonOIDpr

57、imaryprimary key keyobjectTypeobjectTypeNameNamestudentNumberstudentNumbersalarysalary只建立一个超类表只建立一个超类表44Personnamename例例2 2 多层继承多层继承对象模型对象模型StudentstudentnumberstudentnumberProfessorsalarysalaryTenuredProfessortenureAnniversarytenureAnniversary图图4-107 4-107 多层继承模型多层继承模型45ProfessorprofessorOIDprofess

58、orOIDprimaryprimary key keynamenamesalarysalaryStudentstudentOIDstudentOIDprimaryprimary key keynamenamestudentNumberstudentNumberTenuredProfessortenuredprofessorOIDtenuredprofessorOIDprimaryprimary key keyNameNameTenured Anniversary Tenured Anniversary 任期记念任期记念为每个子类建立表为每个子类建立表PersonpersonOIDpersonO

59、IDprimaryprimary key keyobjectTypeobjectTypeNameNamestudentNumberstudentNumberSalarySalarytenureAnniversarytenureAnniversary只建立一个超类表只建立一个超类表46图图4-108 4-108 多层继承关系映射表多层继承关系映射表为超类、各个子类分别建立表为超类、各个子类分别建立表TenuredProfessorPersonOIDPersonOIDprimaryprimary key keyforeign keyforeign keyTenured Anniversary Te

60、nured Anniversary 任期记念任期记念PersonpersonoIDpersonoIDprimaryprimary key keyNameNameStudentpersonOIDpersonOIDprimaryprimary key keyforeign keyforeign keystudentNumberstudentNumberProfessorpersonOIDpersonOIDprimaryprimary key keyforeign keyforeign keysalaryrsalaryr47例例1 1 将二元关联映射到表将二元关联映射到表 Suppliersupplier_IDsu

温馨提示

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

评论

0/150

提交评论