SQL:1999[7]是ISO制定的一个国际标准。可以说SQL3是为面向对象SQL而定义的,计划作为对象-关系数据库管理系统的基础。与SQL-92相比,新的语言增加了面向对象的特征。JTC 1中的分委员会SC32负责数据库的标准问题,其中,WG3负责SQL标准,而WG4关注SQL/MM。......
2025-09-30
在关系数据模型上构建对象数据库称为关系-对象模式。前面的VML样例就是基于关系-对象模式的,只是那里的讨论聚焦于模式映射。本节以Oracle为例说明关系-对象模式的实现。
就像Oracle公司自己宣称的那样,面向对象的DBMS(OODBMS)直接继承自面向对象程序设计语言(如Actor和Smalltalk)。
喜欢面向对象数据库系统的人认为,相比关系数据模型的派生物(如实体联系图的变体),面向对象系统提供更有力的语义模型,具有更高的层次。然而,反对面向对象数据库系统的人认为,由于关注的是3GL/基于文件的信息系统,所以其实现和语言要素偶尔会下降到非常低的层次(如按C/C++指针方式访问)。从本质上讲,它们采取导航的或过程化的查询,这也与非关系型系统(如基于COBOL的层次型和网状型DBMS)十分相似,而在基于SQL的RDBMS中的查询大多是描述性的和声明性的。
关系数据库系统已有40多年的历史,在这期间,技术已发展到比较复杂的程度。最终,具有了足够的参照完整性、存储程序和触发器等功能。面向对象编程技术几乎和关系数据库同时起步,也有了30多年的历史。对象结构要求用一种完全不同的方法考虑编程。面向对象技术将另外一种复杂性增加到环境中。结果很有意思,一部分编程厂家在向面向对象的转换过程中遇到了很大困难,一部分编程厂家则报告说他们的编程效率有了极大提高。
面向对象数据库将对象的存在作为一种不易变的结构来考虑。它是通过参照指针,而不是通过参照完整性来连接对象。面向对象数据库完全支持继承性,访问对象严格受限于通过使用相关的方法和操作来进行。
如前所述,对象-关系模式系统试图结合两者的优点,即将对象标识符和主键归一。对象将通过对象引用和参照完整性关联起来。此时,表(关系)既可独立构造,又可从父结构(称为类)继承属性和方法。
上节介绍的VODAK是一个很好的探索。下面以Oracle 8i(下面简称Oracle)为例进行讨论。Oracle 8i里虽有了对象标识符和方法,但只有有限的继承性。
由于Oracle是典型的关系型数据库管理系统,因此继承自己的优势是其首要考虑的因素。这样,它采用在关系系统上构建面向对象系统的策略。
为了扩展面向对象的能力,必须考虑以下几件事情。
●信任面向对象的概念和结构。
●从面向对象到关系映射的概念和结构。
●仿真、完全或混合实现。
●性能的下降或提升。
●使用现有关系数据库管理子系统的能力。
希望RDBMS有面向对象接口的主要原因是,面向对象应用程序就可以与RDBMS中的面向对象部分直接进行通信,这与借助复杂的编程,在程序代码中动态地处理对象-关系型映射(分解和重组)相反。作为例子,可以考虑嵌入式SQL。这里,SQL是基于集合的语言,必须与基于记录主机上的程序设计语言3GL(如C)交互。但这是不希望出现的情况,因为对程序员的要求太高。为此,可以借助游标的结构和诸如预编译的软件(例如ProC)来进行补救。
为了支持面向对象功能,Oracle的方法提供了内建的面向对象功能,其特点为:关系作为数据类型;继承性;集合作为数据类型,包括嵌套(即容器);用户定义(可扩展的)数据类型;改进大对象(LOB)。
面向对象模型是比关系模型更高层次的抽象。将抽象出的模型作为一个整体来反映“真实的”世界。例如,在OODBMS中,可以有一个称为CAR的复杂对象,在关系型系统里它很可能用RDBMS中的几个表来描述,如MAKE(制造)、MODEL(型号)、EGINE(发动机)、PARTS(零部件),等等。
面向对象技术,特别是与关系型技术有关的优点主要包含以下几个方面。
●建模:面向业务级抽象。
●可重用性:生命周期里的代码重用可以在很大程度上节约成本。
●复杂性:没有数据类型限制,面向多媒体数据,有嵌套功能。
●可扩展性:反映建模的用户定义数据类型。
●性能优势。
Oracle 8通过提供特定的功能,如继承、集合、容器和用户定义数据模型等来满足这些需求中的大部分。
1.Oracle的面向对象技术
面向对象技术的一个主要问题是缺少标准定义。Oracle 8将对象定义为对象类型的实例,对象类型作为基本面向对象模型的组成块,通常直接指向真实世界的业务项目。因此,类似于表(关系)中的行(元组),对象是数据,而对象类型是结构,与其他数据结构(例如记录)类似。在许多其他面向对象语言和系统中,Oracle对象类型等于对象类。
Oracle 8对象类型包含以下两部分。
●属性:可以是基本的数据类型或其他对象类型,有时称为对象类型的结构化部分。
●方法:组成在对象类型上允许的集合操作的PL/SQL(或C)子程序,有时称为对象类型的行为部分。
在面向对象技术中,其他重要概念有继承和多态性。继承是指一个对象包含来自另一个对象类型的属性或方法的能力。方向是从一般到特殊,正如关系模型中的子类型。有另一种类型的继承称为多继承。单继承是指包含一个子类最多包含一个父类的形式;多继承允许的模型为网络(或格)模型,也就是子类能够有多个父类,像在真实世界中的情况一样。与从职工到经理的单继承相比,也包含官员的多继承方案:职工→经理←官员。箭头特指继承方向,从一般(父)到特殊(子)。与继承一样,多态性可以是结构的或行为的。
另外一个重要概念是对象标识(OID),它表示在对象创建以后唯一代表该对象的统一标识符。这意味着它在所有的,甚至在Oracle之外的面向对象系统和语言中是唯一的。OID在其自身系统之外也是唯一的概念,与关系模型中的主键不同。然而,在某种程度上,它又像一个分布式数据库中的主键,必须在多个系统中是唯一的。(https://www.chuimin.cn)
2.Oracle 8对象选项
通过面向对象技术,Oracle可在以下几方面扩展其已有的DBMS。
●对象类型:本质上是记录或类。
●对象视图:把许多规范化的表放在一起形成一个项目。
●对象语言:对Oracle SQL和PL/SQL语言的扩展。
●对象API:通过Oracle预编译器(例如ProC)支持的对象。
●对象可移植性:通过对象类型翻译器(OTT),可以建立从Oracle 8对象类型到C++类的接口。
但是,Oracle 8不支持多继承、多态性或对象属性(如引用一致性)上的约束。
Oracle 8的开放式类型系统(OTS)是一个所有Oracle 8对象类型的知识库,也是其他语言或系统中外部对象类型的知识库。在开放式类型系统中有一个数据类型层次,它的底层是内建的Oracle 8数据类型。Oracle 8还增加了大对象,形式如BLOB、CLOB、NCLOB[15]和BFILE[16],还增加了VARRAY(变量数组)和嵌套表形式的集合类型与REF(引用)形式的对象ID。在Oracle 8中创建用户定义的对象类型后,可以将它用于以下多种用途。
●作为关系型表中的一列。
●作为另一个对象类型的一个属性。
●作为关系型表的对象视图的一部分。
●作为对象表的基础。
●作为PL/SQL变量的基础。
还可用于管理对象类型并扩展Oracle SQL,包括CREATE TYPE、ALTER TYPE、DROP TYPE、GRANT/REVOKE TYPE。
任何给定的对象类型可以是简单的、复合的或者自我引用的。简单对象类型只是它自身,复合对象类型至少包含一个其他对象类型,自我引用对象类型至少包含一个引用对象类型自身的属性。
1)REF属性
Oracle 8仅支持一对一的单向关系,对象引用REF代表一个对象的关系。REF本质上是一个指针,或一个对象的“句柄”。
Oracle 8中的对象引用(REF)是由系统产生的值,且在所有对象中(任何地方)是唯一的,指向一些永久不变的对象。REF实际上是引用对象-对象表中的一行(实例),而不是真正的对象类型。
2)方法
对象类型可以有零个或多个成员方法。成员方法是一个能够操作任何对象类型(不仅仅是定义它的那个类型)的数据(也就是属性)的子程序。当然,简单来说,方法就是PL/SQL过程或函数。
正像使用任何PL/SQL封装的子程序一样,应为每个方法创建一个接口(声明)和一个实现(体)。当访问一个方法时,使用点表示法(即对象.方法)。
3)集合
集合(变量数组和嵌套表)是排序的或未排序的一组事物,其中变量数组是排序的,而嵌套表是未排序的。若某种顺序列出的主表项目能够使用变量数组(VARRAY),则每个主表行的每行的项目细节可以在变量数组中使用嵌套表。
与大多数数组一样,Oracle 8的变量数组包含隐式的顺序。每个元素在数组中有一个从数组起始位置开始的偏移量,能够通过偏移量直接进行访问(也就是所谓的下标或索引)。变量数组是按行存储的(在表的行中),直到存储单元超过4 KB为止。与大多数数组一样,每个变量数组包含数量和限制。数量是指当前有多少元素存储在变量数组中,而限制是指能够存储在变量数组中的最大元素数。可以通过在PL/SQL和3GL中使用下标访问单个元素,但是不能在简单的SQL中访问它们。
嵌套表能很好地适合主从(一对多)关系。嵌套表在Oracle 8中实际上是用户定义类型或表类型,能够在表中作为一列使用,在对象类型中作为属性或作为PL/SQL变量。嵌套表使用STORE AS语句存储在主表之外的存储表中。嵌套表的优点:能够对其进行索引(与对象表相反)和不需要连接(与簇类似)。其缺点是,尽管有级联删除形式(主行删除时,所有从属行也将删除),但是引用完整性约束是不可能的。
3.对象视图
关系型表的对象视图给用户和开发者提供了许多好处。对于用户,整个系统表面上似乎是基于面向对象的,但实际上数据是关系型的。因为对象视图是视图的特例,所以具有与一般视图相同的优点:为不同用户提供相同数据的不同视图。正确创建对象视图的一般顺序为:创建表、创建对象类型、创建对象视图、创建INSTEAD OF触发器[17]。
INSTEAD OF触发器可让用户插入、更新或删除对象视图所基于的关系型表,而不是直接试图修改对象视图。
相关文章
SQL:1999[7]是ISO制定的一个国际标准。可以说SQL3是为面向对象SQL而定义的,计划作为对象-关系数据库管理系统的基础。与SQL-92相比,新的语言增加了面向对象的特征。JTC 1中的分委员会SC32负责数据库的标准问题,其中,WG3负责SQL标准,而WG4关注SQL/MM。......
2025-09-30
AutoCAD提供了多种选择对象的模式,如单击对象逐个拾取、窗口选择、交叉窗口选择等。按
2025-09-30
“幼儿园”“公众”“传播”是构成幼儿园公关关系的三要素,其中,“幼儿园”和“公众”是公共关系的承担者,“幼儿园”是主体,“公众”是对象,而“传播”是联系他们的纽带。因此,幼儿园与家长的关系是幼儿园公共关系管理的核心,幼儿园不仅要把家长当作服务对象和教育合作者,更要把家长当作幼儿园公共关系的首要对象。幼儿园应当与这些机构搞好关系,争取政府对幼儿园的了解、信任与支持。......
2025-09-29
对象的分布设计比前面介绍的关系分布要复杂。对此,分割类是不容易的,原因是对象模型本身的难度。考虑到类和型的问题,对象世界里的分布设计由于对象状态和方法封装在一起而产生了新的问题。,Cn是不相交的。路径分片是将组合对象分组形成一个分片的概念。这样,索引包含一个指向组合对象的所有成分的指针,避免浏览类......
2025-09-30
在多数轨道交通线上,常称之为BAS。BAS在轨道交通中基本关系如图9.37所示。图9.37BAS系统BAS系统在正常情况下运行正常模式,在非正常情况下运行非正常模式。在BAS建立的过程中,根据站场的实际情况,建立完善了所有的探测设备和控制设备,并且设立了站场的BAS运行模式。在正常模式下,BAS根据探测设备检测到温度、湿度和二氧化碳的含量后,经过分析,决定新风机组的送风量和空调器的运行大小参数。......
2025-09-30
下面推荐两种主要的Client/Server体系结构:对象服务器体系结构和页面服务器体系结构。对象服务器体系结构里不要求服务器逐个将对象发送给客户端,可以成组发送。图15.7所示的是页面服务器体系结构,早期在页面服务器体系上的性能研究要多于对象服务器体系结构的。......
2025-09-30
当选中该复选框时,选择编组中的一个对象,即选择了该编组中的所有对象。当用户选中该复选框时,选择填充图案后,边界即包含在选择集中。用户选中该复选框后,当单击空白区域时,将自动启动或选择。仅当某个命令处于活动状态并显示时,才会显示选择预览。单击该按钮,会弹出对话框。图3-4 设置对话框②复选框。此选项对标准对象无效。若选中该复选框,则在对多功能夹点操作时,可按〈Ctrl〉键循环改变对象编辑方式行为。......
2025-09-30
大众车系的电能管理系统采取以下3种模式对用电设备进行管理:工作模式一:15号线接通,发电机处于运转状态。③如果用电设备由于电能管理系统的原因被关闭,在中央电器控制单元中有故障信息存储。④上述电能管理不仅发生在用电负荷增大时,当蓄电池与车身接地点虚接、接地螺钉松动时,造成系统电压不稳定,也会触发中央电器控制单元启用不同的管理模式,并引发空调系统不制冷之类的故障。......
2025-09-30
相关推荐