第7章-关系数据库标准语言SQL_第1页
第7章-关系数据库标准语言SQL_第2页
第7章-关系数据库标准语言SQL_第3页
第7章-关系数据库标准语言SQL_第4页
第7章-关系数据库标准语言SQL_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

7.1面向对象的数据模型7.2面向对象的建模方法第7章对象关系数据库7.3对象关系数据库7.1面向对象的数据模型一、概述1、引入:

要求新模型:能构造复杂类型可多种操作能扩充模型2、OO模型的核心概念:对象、对象标识类、封装、消息继承(单继承和多继承)类层次对象嵌套:

复合对象、复杂对象在OODB中:对象的某一属性可以是一个对象,形成嵌套结构。对象的某一属性可以是值的集合,允许复杂类型值。面向对象的概念对象:信息处理的实体,即数据和操作统一体。属性方法数据变量操作函数类:描述一类对象所具有的共同数据结构和操作例:学生类、课程类类与对象(实例)是抽象与具体的关系同类对象具有相同操作,

有不同的对象名、值。对象类:消息:对象间联系的手段消息接口属性集合(变量)方法集合(函数)对象结构:收,发

对象标识(OID):OODB中每个对象都有唯一不变的标识常用的几种标识:

(1)值标识:用值来表示标识。(2)名标识:用一个标识符或名字来表示。(3)内标识:系统建立的独立于值的、系统全局唯一。

对象标识(OID)的特点

:系统全局唯一自动生成:当创建一个对象时,系统自动分配。用户不能修改,但可引用。对象的属性/值、方法变化,但对象标识不变。独立于值:两对象值相同,但OID不同则是不同对象。注:对象标识与键不同。面向对象的概念面向对象的概念继承:反映对象类间的关系,使得某类对象可继承另一类对象的属性和方法。XYZ分类:单继承、多继承多边形三角形不等边等腰等边四边形

菱形类层次

继承的特性:类间共享性差异性层次性二、面向对象数据模型3)完整性约束唯一性约束:对象标识唯一;类名唯一;类中属性和方法名惟一

存在性约束:

被引用的类、方法必须已定义子类型约束:

子/超类联系不能有环和冲突OO模型的三要素:1)数据结构类层次(含嵌套)结构2)数据操纵使用对象DB查询语言定义类(属性、方法、继承性、约束)创建对象及操纵(生成、存取、修改、删除等)二、面向对象的数据模型数据结构示例:EMP类EMP_NOVARCHARENAMEVARCHARSEXLOGICALADDR_INFADDRESSPHONENUMBEREmp_PhotoIMAGEGetName()GetAddr()属性方法ADDRESS类PROVlCEVARCHARCITYVARCHARSTREETVARCHARZlPNUMBERGetZip()…复杂对象类Teacher

类…

7.2面向对象的建模方法一.UML简介统一建模语言(UnifiedModelingLanguage,UML)是进行系统分析和设计的重要工具,数据库系统设计中,常应用UML表示中的类图来建立信息模型。用来对软件进行可视化建模。是用于对面向对象的产品进行说明、可视化和编制文档一种标准语言。适于数据/对象/业务建模。使开发者专注于建立产品的模型和结构,模型可被UML工具转化成指定的程序代码。是DBS设计的一种新方法。UML概括了软件工程、建模和管理、数据库设计等许多方法学,在众多设计领域获得流行。二、UML的特点(1)面向对象、表示能力强(2)独立于过程、独立于语言(3)易于使用、方便集成三、UML的表示法是标准的一组符号的图形表示法。标准建模语言UML的主要表示可由下列五类图组成:第一类是用例图。用例图从用户角度描述系统功能,并指出各功能的操作者。第二类是静态图。静态图包括类图、对象图和包图。其中类图描述系统中类的静态结构。第三类是行为图。行为图描述系统的动态模型和组成对象间的交互关系。第四类是交互图。交互图描述对象间的交互关系。第五类是实现图。实现图中的配置图定义系统中软硬件的物理体系结构。四、UML的E-R建模UML是进行系统分析和设计的重要工具,DBS设计中,常用UML中的类图来进行E-R建模(概念建模)。仅描述UML如何处理E-R建模的核心元素。1.UML中的实体类型PERSON<<PK>>IDName:Address:Hobbies[0..*]:INTCHAR(20)CHAR(50)CHAR(10)ChangeAddr(NewAddr:CHAR(50))AddHobby(Hobby:CHAR(10))STUDENT<<PK>>IDNameAddress:GPA:StartDate:INTCHAR(20)CHAR(50)DEC(3,1)DATEChangeAddr(NewAddr:CHAR(50))SetStartDate(Date:DATE)……<<Invariant>>self.GPA>80.0四、UML的E-R建模2.在UML中表示联系在UML中,类之间的联系被称为关联,而联系类型被称为关联类型。UML图为关联类型附加了比在E-R图中更丰富的语义。(1)不带属性的关联EMPLOYEE‥‥‥SubordinateREPORTSTOSupervisorPROFESSOR‥‥‥DEPARTMENT‥‥‥WORKSINPROJECT‥‥‥PART‥‥‥SUPPLIER‥‥‥SOLDCustomerProduct(b)(c)

UML类的关联示例(a)关联四、UML的E-R建模(2)带属性的关联关联类关联类也用矩形表示,且含该联系上的属性,但用一条虚线将它连到相关的联系上。关联类和联系的名称必须相关。EMPLOYEE‥‥‥SubordinateREPORTSTOSupervisorPROFESSOR‥‥‥DEPARTMENT‥‥‥WORKSIN(b)WORKSINSince:DATE(c)PROJECT‥‥‥PART‥‥‥SUPPLIER‥‥‥SOLDCustomerProductSOLDDate:DATEPrice:DEC(7,2)(a)关联类

关联类

四、UML的E-R建模3.UML中的简单约束(1)关联中的码约束主码约束、外码约束允许:用{<解释文字>},帮助理解UML中约束。(2)重复度约束(multiplicityconstraint)UML中类之间的联系双方线上的数字指定了参与该联系的可能实体(对象)的数量,称为“重复度约束”。关联到类A和类B的角色R上的一个重复度约束,是附加到R上的形如n..m的范围定义,它给出了类A可关联到类B实体数目的下限和上限。简写范围*的意思是:0..*,范围1的意思是:1..1。注意:UML图中重复度约束与E-R图中基数表示形式相似,但位置相反。3.UML中的简单约束:主码约束、外码约束WORKSIN0..*1SOLDCustomerProductPROFESSOR<<PK>>ProfId:INT‥‥‥DEPARTMENT<<PK>>DeptId:INT‥‥‥WORKSIN<<FK>>ProfId:INTSince:DATEPROJECT<<PK>>ProjId:INT‥‥‥PART<<PK>>PartId:INT‥‥‥SOLD<<FK>>ProjId:INT<<FK>>PartId:INTDate:DATEPrice:DEC(7,2)SUPPLIER<<PK>>SuppId:INT‥‥‥(a)(b){Key:Customer,product;Date}重复度约束注释:说明约束PERSON<<PK>>ID:INTName:CHAR(20)Address:CHAR(50)STUDENTGPA:DEC(3,1)StartDate:DATESTUDENTGPA:DEC(3,1)StartDate:DATEfreshman‥‥SophomoreMajor:CHAR(3)JUNIORMajor:CHAR(3)SENIORMajor:CHAR(3)Advisor:CHAR(20){complete,disjoint}(a)(b)五、UML的高级建模1.类层次在UML中,父类与子类联系(IsA联系)被称为一般联系,用一个子类指向一个父类的空心三角箭头表示。覆盖,不相交约束2.依赖关系--Part-of联系Part-of联系是需要依赖的两个实体类型之间的一种依赖关系。UML分为两种形式的实体类型间的依赖关系。在UML中,非独占part-of联系(其部分可以独立存在)被称为聚合。如:教室与座椅。UML聚合用特殊的符号

一条带有中空菱形的线表示,UML中聚合是在聚合方用中空菱形表示。与UML中的聚合相伴随的常是重复度约束。例:独占part-of联系在UML中被称为复合。如:会议与参会者复合可以被看作一种特殊的聚合,用一端带有实菱形的线表示。例:

3.E-R模型与UML表示1)E-R模型设计E-R模型的基本组件和UML的非常相似,UML类图向关系模型的转换与E-R图方法相同,主要问题是正确转换图中的约束。E-R模型的UML表示例:【例】有价证证券公司是一个经纪公司,它为客户买卖股票。主要参与者是经纪人和客户。该公司在不同的城市地点设有营业厅,每个营业厅有一个主管、多个经纪人;每个经纪人在营业厅之一工作,一个经纪人可以是其所在的一个营业厅的主管。一个客户可以有多个帐户,且任何帐户可有多个拥有者。每个帐户只能有一个经纪人管理,一个经纪人可以管理多个帐户,但在一个给定营业厅中,一个客户不能有多个帐户。客户/经纪人信息的E-R图ClientWorkPhone#HASACCOUNTAccount#DateOpenedStatusACCOUNTIsHANDLEDBYPhone#OfficeAddressWORKSINSinceBrokerMANAGEDDatePhoneExtension#nn11111mnKey:{Client,office}2)UML表示HASACCOUNTClientAccountCLIENTWorkPhone#Account<<PK>>Account#DateOpenedStatusoffice<<PK>>Phone#<<UNIQUE>>AddressBROKERPhoneExtensions[1..*]ManagedDateWORKSINSinceMANAGEDBYWORKSIN1*Office11ISHANDLEDBY{Key:Client,office}***0..10..13)其他UML表示UML表示的其他部分对于数据库应用系统的建模也是有用的。如:用UML用例图来描述该应用系统的用户交互与系统功能;用UML顺序图来构建用例的动态方面;用UML状态图来描述该系统中不同对象的行为;UML活动图可用于说明行为是如何协同的;协作图可用于描述组成一个复杂系统的不同对象之间的交互,即消息交换;还需要有构件图、部署图等更多的内容来描述整个系统的构建。7.3对象关系数据库1.ORDBS特点:以关系DBS为基础,扩充面向对象的功能扩充的主要方面:复杂类型;继承;引用2.对象关系数据库管理系统(ORDBMS):

以综合方式支持关系及对象特征。对象关系数据库产品Oracle对象关系DBMS在应用中常被称之为对象关系数据库产品。一个有代表性的产品是Oracle。Oracle公司发布于1997年的Oracle8是引入面向对象技术的第一个版本,它不仅允许用户以处理关系数据的同样方式来处理对象数据,而且为处理对象数据专门设计了新功能,并在后来的版本中又进一步地扩展与完善。特点:对象关系数据库是一个能存贮对象数据与关系数据、数据间联系以及数据行为的数据库。Oracle被设计成能够象处理关系型数据那样存储和查询对象数据,同时提供了一致性事务控制、安全备份和恢复、管理自动化等功能。将对象和关系型模型合二为一,可以同时拥有关系型数据库的强大功能和可靠性以及对象的灵活性和可扩展性。对象关系数据库产品Oracle面向对象的特点是:(1)定义对象类型。(2)引入类型继承。(3)实现对象引用。(4)支持对象视图。3、对象关系数据模型模型的三要素为:数据结构:类层次的对象与表结构(允许包含嵌套表)。数据操作:用扩展的关系数据库语言进行对象与表的操作。完整性约束:类、父子约束,对象与表约束、引用约束等。扩展关系数据模型的方式是:提供丰富的类型,包含复杂数据类型和面向对象的类型。扩展关系查询语言以处理这些丰富的类型。在扩展建模能力的同时保留关系的基础。

对象数据模型:是一种层次嵌套的关系模型是关系模型的扩展,它允许关系继承、允许关系的属性值是另一个关系的元组,从而使复杂对象可用嵌套表示。3、对象关系数据模型对象关系数据结构示例PERSON

类nameVARCHAR(20)sexLOGICbirthDATEGetName()//获取姓名EMP表emp_infPERSONaddr_infADDRESSphoneNUMBER

ADDRESS

类provinceVARCHAR(20)cityVARCHAR(20)streetVARCHAR(20)zipNUMBERGetZip()//获取邮编TEACHER表salaryNUMBER继承3、对象关系数据模型嵌套表结构示例:EMP表EMP_INFPERSONADDR_INFADDRESSPHONENUMBERPERSON表NAMEVARCHARSEXLOGICBIRTHDATEADDRESS表PROVICEVARCHARCITYVARCHARSTREETVARCHARZIPNUMBER4.Oracle的复杂数据类型1.对象类型对象类型是用户自定义的类型,包括属性和相关方法。可创建一个只包含属性定义的对象类型;也可在对象类型中既定义属性又定义方法。【例7.2】①创建自定义对象类型:CREATETYPEaddrASOBJECT(provinceVARCHAR2(10),cityVARCHAR2(20),streetVARCHAR2(30));这样,就可以使用对象类型addr去说明某一属性列。②创建表并使用对象类型:CREATETABLEobjtable(nameVARCHAR2(20),locaddr);③向表中插入数据。INSERTINTOobjtableVALUES(‘天亿公司’,addr(‘湖北省’,‘襄阳市’,‘洪山街’);④查询对象表中数据的分量时,要使用对象的“别名”进行查询:SELECTvinces.loc.citys.loc.streetFROMobjtables;--s为表对象的别名(代表某对象)2.类型继承Oracle中面向对象的重要特性是继承。【例7.4】对于图所示类型继承,给出其类型继承的定义。①创建父类型:CREATETYPEpersonASOBJECT(noINT,nameVARCHAR2(20))NOTFINAL;②子类型继承父类型:CREATETYPEstudsUNDERperson(degreeVARCHAR2(20),departmentVARCHAR2(20));CREATETYPEstaffUNDERperson(salaryVARCHAR2(20),departmentVARCHAR2(20));studs和staff都继承了person的属性(即id_no和name),它们被称为person的子类型,person是studs的父类,同时也是staff的父类。人员类型学生类型教工类型…3.【例7.7】复杂表类型示例标题(title)编号(sno)作者(authors)日期(year,month,day,)

关键词(keywords)销售报告S20090710(Jackie,Smith)(2012,7,29)(盈利,销售报告)进货报告B20090711(Jones,Andrew)(2013,7,30)(缺货,进货报告)……………CREATETYPEmydateASOBJECT--定义日期对象类型

(dayINT,monthVARCHAR2(20),yearINT);--属性包含日,月份和年份CREATETYPEname_listASVARRAY(5)OFVARCHAR2(20);--作者数组类型CREATETYPEkey_listASVARRAY(6)OFVARCHAR2(10);--关键词数组类型CREATETYPEdocumentASOBJECT--定义文档对象类型

(titleVARCHAR2(20),snoVARCHAR2(10),authorsname_list,datemydate,keywordskey_list);CREATETABLEdocOFdocument;--创建一个文档类型的表doc。4.对象引用对象引用常需用到对象表。对象表是用对象类型定义的数据库表;对象表的每行都有系统分配的唯一的对象标识符(OID);OID是全局唯一的,具有OID的对象可以被引用(REF),对象引用实现不同对象之间的联系。一个属性可以是对一个指定类型的对象的引用。一般格式如下:<属性>REF(<类型名>)SCOPEIS<表>其中REF是指向行对象的引用指针,实现表和表之间的联系,故对象之间连接不再需要关系表的连接操作。引用只能用于具有OID的对象(将对象表的别名作为REF的参数,可以取得对应OID的引用值)。SCOPE子句用于限定引用的对象在一个指定的表中,这样可以提高查询性能。在对象引用中,由于使用了对象标识,故不必使用主键。【例7.8】对象表与引用①创建对象类型:CREATETYPEofficetypeASOBJECT(idVARCHAR2(4),typenameVARCHAR2(10));②创建该对象类型的对象表,并插入若干对象:CREATETABLEofficeOFofficetype;INSERTINTOofficeVALUES(‘0001’,‘总务科’);INSERTINTOofficeVALUES(‘0002’,‘教务处’);③创建关联对象表(使用REF,指示OID进行对象表关联)。CREATETABLEworker(widVARCHAR2(6)PRIMARYKEY,wnameVARCHAR2(8),wofficeREFofficetypeSCOPEISoffice,phoneVARCHAR2(15));【例7.8】对象表与引用插入数据:INSERTINTOworkerSELECT‘w001’,‘李斌’,REF(o),FROMofficeo WHEREid=‘0001’;

④使用VALUE(别名)查询对象内容:SELECTVALUE(o1)FROMworkero1;⑤DEREF函数返回指针指向的对象。形式为:DEREF(<REF指针>)。使用DEREF取得关联对象表相关内容:SELECTwid,wname,DEREF(w.woffice),phoneFROMworkerwWHEREwid=‘w001’;结果形式为:w001李斌OFFICETYPE(‘0001’,‘总务科’)027-687766665.对象视图对象视图允许用存储在关系表或对象表中的数据合成新对象。对象视图分为基于关系表的对象视图和基于对象表的对象视图两类。CREATE[ORREPLACE]VIEW<对象视图名>OF<对象类型>WITHOBJECTOID(<列名>)--列名须提供对象视图中用来标识对象的键ASSELEC<目标列表>FROM<关系表名|对象表名>;对象视图--基于关系表【例7.10】为建立视图准备,定义相关表和对象类型:CREATETABLEworker_r(nonumber(5),name VARCHAR2(8),cityVARCHAR2(10),zip number(6));…

--插入若干数据略。CREATETYPEaddr_typeASOBJECT(cityVARCHAR2(10),zip NUMBER(6));①创建的视图的结构:CREATETYPEworker_typeASOBJEC(noNUMBER(5),nameVARCHAR2(8),addressaddr_type);②建对象视图:CREATEVIEWworker_vOFworker_typeWITHOBJECTOID(no)ASSELECTno,name,addr_type(city,zip)fromworker_r--数据来源

温馨提示

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

评论

0/150

提交评论