时间:2022-11-02 18:30:01 | 来源:信息时代
时间:2022-11-02 18:30:01 来源:信息时代
面向对象数据库语言 : 用于描述面向对象数据库模式,说明并操作类定义与对象实例的数据库语言。面向对象数据库语言主要包括对象定义语言ODL和对象操纵语言OML。对象操纵语言中,一个重要子集是对象查询语言OQL。面向对象数据库语言应具备下列功能:
(1)类的定义: 面向对象数据库语言可用于类的定义、修改与删除,其中类的定义包括属性、操作、继承与约束等。
(2)方法的实现: 面向对象数据库语言可用于操作方法的实现。在方法的实现中,语言的命令可用于操作对象的内部数据结构。对象模型中的封装性允许操作方法由不同程序设计语言来实现,并且对外透明。
(3)对象的操作: 面向对象数据库语言可用于对象的生成、修改、删除和查询。
ODMG于1997年制定了面向对象数据库语言标准,包括对象描述语言(object specification language,OSL)和对象查询语言(object query language,OQL)。它们是以面向对象程序设计语言(object oriented programming language,OOPL)为基础并实现持久性扩充而形成的面向对象数据库语言,既在形式上类似SQL又具有面向对象的特征与风格,其最大特色是与OOPL一起构成一个面向对象统一开发环境,同时将对象分成临时性对象与持久性对象两种,由OOPL处理临时性对象,OQL处理持久性对象。这两种语言的区别在于OOPL是过程性语言,OQL是非过程的说明性语言。
1.对象描述语言
对象描述语言(OSL)包括对象定义语言(ODL)和对象交互格式(OIF)。
对象定义语言(ODL)是一种面向对象的建模语言,在该语言中基本元素是对象,基本数据单位是类型。类型由属性和方法组成,类型间通过联系与继承建立关联。类型中属性可以是基本类型,也可以是复合类型,在类型中可以定义方法。例如,可以用ODL定义以下类的模式。
class Person {/*定义Person类*/
attribute string name; /*定义属性“姓名”*/
attribute integer age; /*定义属性“年龄”*/
};
class Postgraduate extends Person{
/*定义Postgraduate类为Person类的子类*/
attribute integer number;/*定义属性“学号”*/
attribute string major; /*定义属性“专业”*/
relationship Supervisor taughtBy inverse Supervisor::teaches;
/*定义Postgraduate和Supervisor之间的联系,每个研究生对应一位导师*/
Integer numCourse();/*定义得到研究生选课门数的方法*/
};
class Supervisor extends Person{
attribute string researchField; /*定义属性“研究领域”*/
attribute integer level;/*定义属性“级别”*/
relationship set <Postgraduate> teaches inverse Postgraduate:: taughtBy;/*定义Supervisor和Postgraduate之间的联系,每个导师对应多个研究生*/
integer numTeach();/*定义统计导师授课门数的方法*/
};
对象交互格式(OIF)也是一种描述语言,它主要是利用ODL创建的对象类型,快速地创建对象实例,同时OIF还包括对于实例的初值的赋予,例如Sally Person {name“Sally”,age 11},这里创建了一个拥有两个属性(字符串类型的姓名,整数类型的年龄)Person类的Sally实例并赋予了姓名初始值“Sally”,年龄初始值11。OIF的作用在于它是实现多个数据库间共享对象类型定义及实例的重要途径,即用户可以通过文件形式将当前数据库中定义的对象类型及实例不用修改就可直接重新导入到其他数据库中使用。
2. 对象查询语言
对象查询语言是数据库和用户间的主要接口。ODMG的对象查询语言OQL是和SQL标准组织共同协商定义的,所以它们的语法基本一致。对象查询语言OQL以对象模型为基础,实现对象的查询操作。对象查询语言OQL可以独立使用,也可以嵌入到C++、Smalltalk等面向对象程序设计语言中使用。对象查询语言具有SQL风格。OQL支持SQL中的五种聚集函数(AVG,MAX,MIN,SUN,COUNT),支持GROUP BY子句,支持全称量词FOR ALL和存在量词EXISTS。值得注意的是,OQL没有SQL中的UPDATE、INSERT等语句,这些操作功能主要通过ODMG语言绑定来实现。例如,以上面所定义的模式为基础,可以使用对象查询语言OQL,检索带了专业方向为计算机软件的研究生的导师的姓名以及该导师所有研究生的姓名。检索结果可用带有复合类型变量进行表示。
Select struct(set(S.name,Set(P.name)))
From Supervisor S,S.teaches P
Where P.major=‘computer software’
3.对象语言绑定
对象语言绑定是为了实现ODMG缺乏的OML。这个思想在SQL中就已经有了,但在ODMG中绑定的重要性大大增强并不可缺少了。
由于ODMG在开始制定标准的时候就已经把面向对象语言绑定作为标准实现的一个关键技术,所以在前面的对象模型和ODL中已经与对象的定义和C++等面向对象程序设计语言尽量保持形式上的一致。所以在用这些语言来编写实际的ODMG标准数据库应用时,与编写普通应用程序没有什么大的差别。具有一定编程基础的用户编写应用程序时是十分方便快捷的。ODMG3.0 目前支持C++、SmallTalk和Java三种面向对象程序设计语言的绑定。