开篇:润墨网以专业的文秘视角,为您筛选了一篇面向对象数据库系统设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:讨论了一个面向对象数据库系统的设计,本设计实现了基本的面向对象数据库的设计思想和功能。
关键词:面向对象;数据库;系统设计
一、数据查询(OQL)
作为数据库,最重要的估计是数据查询了,面向对象数据同样如此。在这里,我设计了以下查询语法:get(…)if(…),其中get里面是要查询的类,类的属性等,相当于SQL里面的select … where …。比如有类A,A中有一个属性a(数字型,关于类型后面会说)。则获取所有A类实例中所有a的值小于0的实例集合的查询语句是:get(A)if(A.a
执行该语句应该要返回所有类A实例中所有a小于0的实例集合。具体使用方法如下:
(一)单类查询
即在一个类中进行查询。如:get(A)if(A.a
(二)多类查询
如:get(A,B);将返回类A和类B的所有实例的数据。
(三)方法查询(暂不实现)
(四)表达式计算
如:get(3+3);返回的将是6。
(五)复杂查询
如:get(A.a+B.b,C,C.a/A.a)if(A.a5);这个查询语句将返回的是类A的a字段和类B的b字段的相加之和,类C的实例以及C类字段a与A类字段a的商,并且尽在类A的a字段小于类B的b字段并且(##是并号)类C的字段a的值小于5。此类操作可能比较耗时,并且可能返回重复的数据。如在A类实例和B类实例确定的情况下C类实例变化时将返回多个相同结果的A.a+B.b的值。记住返回的都是集合。
二、数据操作(OML)
(1)插入数据:new 类名(构造函数参数列表);这样即生成了一个实例(即插入一个实例)。举例如下:
Test t = new Test(1,2,3);//假如类Test的构造参数是三个数字类型的参数。
(2)更新数据:直接调用该类实例的引用的属性复制即可实现更新。举例如下:
t.a = 3;//假如类Test有个公有成员a且是数字型的。
可以有更复杂的、有逻辑的更新,如:if(Test.a>3){Test.a = 1;//将所有符合条件的Test类的实例的a字段复制为1,是集合操作。}
又如:while(t.a>0){Test.a――;//只要实例t的字段a的值还大于0,则所有Test的实例的值继续减一。}
(3)删除数据:free(类名)if(删除条件表达式)。如果没有if,则删除此类的所有实例。free(Test)if(Test.a>0);这将删除类Test的实例t。
(4)数据定义(ODL)
定义语言包括类的定义和对象的定义。语法模仿的Java的语法。具体如下:
定义类:
class :定义类,语法如下:class 类名{
属性定义:其中包括变量权限声明,值定义,类型声明,目前仅支持三种类型,字符串型,数字型和 比特型。
方法定义:方法定义,跟Java类似,但目前仅留接口,不做实现。}
下面是一个实例:
class Test{private num a;//数字型;public str b;//字符串型;protected byte c;//比特型,变长比特型,用来存储大容量数据;public void testMethod(num a){//方法定义,目前暂不实现a++;this.a = a;}“;//”一定要加 “;”号,否则不能结束。
alter:更新类。语法如下:alter 类名.字段名或者方法名 =
{//字段或者方法的新式描述,如果没有任何信息,则表示删除该字段或者方法};举例如下:
alter Test.a {public num a;//如果不是命名为a,而是b,则将删除a字段,新建b字段。
该语句将把字段a的访问权限从私有变为公有。下面是更新方法:alter Test. testMethod {public void testMethod(num a){//方法更新,目前暂不实现a++;this.a = a――};
drop:删除类。此关键字只有一个语法,即:
drop 类名;如:
drop Test;//即表示删除Test类。
(5)数据控制使用try{//行为}catch(){}的语法形式,用来控制事务。在try块中的行为必须全部执行成功数据库才会更改,相当于事务提交。如果发生异常(即不能全部执行成功),则事务回滚。同时还要执行catch块中的信息。一般说来,catch块中留空则只回滚事务。
参考文献:
[1]邢斌、高荣芳、刘予东,《基于JSP的学生就业管理系统》,福建电脑。2006-9
作者简介:
刘海蓉,女,(1977年~),湖北黄冈人, 黄冈职业技术学院高校讲师。研究方向:高职教育、计算机。