刘之家
(广西师范学院 计算机与信息工程学院,广西 南宁 530023)
作为计算机软件的一个重要分支,数据库技术一直是备受业界关注的焦点.从20世纪60年代末开始,数据库技术经历了层次数据库、网状数据库和关系数据库等阶段,数据库技术的研究取得了重大的进展.80年代,关系数据库是发展的主流,几乎所有新推出的DBMS产品都是关系型的[1].随着数据库技术应用领域的不断拓展,为满足应用对数据处理不断“苛刻”的要求,人们开始发现关系数据库的许多限制和不足,这又推动了数据库技术的新一轮研究,研究的方向主要有两条:一是改造和扩充关系数据库,以适应新的应用需求;二是改用新的数据模型,例如面向对象的数据模型、基于逻辑的数据模型等.目前,这两方面都取得了很大的进展,人们期待着一个“后关系数据库”(Post--Relational Database)时代的到来.
属性值都是直接量的对象是简单对象,用其他对象作属性值的对象是复合对象,复合对象是一个层次结构,这是对象概念不同于关系模型中元组的重要特征.对象间通过发送消息实现相互通信,属性值查询和修改只有通过向对象发消息调用才能实现;具有相同特征的对象被组织成了类,类间存在继承、聚集的关联.与传统的数据模型相比,面向对象数据模型具有许多优势,它具有表示复杂对象的能力,通过封装和信息隐藏概念提供了模块化机制,通过封装和继承概念提供了软件重用机制,而通过滞后联编等概念得到了系统扩充能力.面向对象数据库(OODB)是指对象的集合、行为、状态和联系是以面向对象数据模型来定义的.面向对象数据库系统(OODBS)是指支持定义和操作OODB的数据库系统[2].
随着网络技术和分布式数据库技术的发展,产生了客户机/服务器(Client/Server)结构和微内核结构的操作系统.客户机/服务器结构的思想如下:将操作系统分成运行在用户态并以C/S方式活动的进程以及运行在核心态的内核两大部分.内核部分除外,操作系统的其余部分将会被分成若干相对独立的进程,并且每一个进程实现一类服务,称作服务器进程,例如,提供文件管理服务、进程管理服务、存储管理服务、网络通信服务,等等(用户进程也在该层并以C/S方式活动,是一种客户进程).服务器进程的任务是检查是否有客户提出服务请求,如果有请求则在满足客户的要求后返回结果,于是,用户进程与服务器进程形成了客户机/服务器关系.运行在核心态的内核把该消息传给服务器;服务器执行相应操作,再通过内核用另一种消息把结果返回给用户[3].由于由用户态进程来实现操作系统的绝大多数功能,内核只实现极少任务,主要起信息验证、交换的作用.
封装是一种信息隐蔽技术,它体现于数据库的说明,是对象的重要特性.封装使数据和操作该数据的方法封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特征(对象能接受哪些信息,具有哪些处理能力),而对象的内特性(保存内部状态的私有数据和功能的算法)对用户是隐蔽的,封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为细节,只需用设计者提供的方法来完成所需要的工作.封装性是一个类的属性和方法放于同一块代码中,并使类的接口与其他实现相独立,接口是程序中暴露给用户的那一部分,而实现则是指只对编写该类代码的程序员可见的部分.封装性使得程序员可以通过它们的属性和方法来访问对象而不必了解内部操作的细节.
SQL Server Management Studio替代了原有SQL Server 2000下的企业管理器的功能,可以充分管理SQL Server.它是一套管理工具,采用简易用户接口提供辅助开发方程式工具和管理服务器的许多功能,用于管理从属于SQL Server的组件.此集成环境使用户可以在一个界面内执行各种任务,例如,实现备份数据、编辑查询和自动执行常见函数等任务,也大大改善了创建表、视图、触发器、用户自定义函数和存储过程的工具.客户端表示层分HTML、Java Applet和Java Application等类型,服务器端表示层用JSP、Servlet、Tag Libraries和JavaBeans实现,业务层用EJB实现.接入网络设备控制功能是系统同接入层网络设备进行交互的窗口,对攻击主机进行隔离等操作需要通过它来完成,所以它需要具备对接入层设备进行控制操作的能力.这种能力是通过TELNET和SNMP协议完成的.总而言之,系统对日志分析功能得出的结果,最后进行隔离操作是通过本功能直接完成的[4].
假如我们进一步把图1的对象数据库框架从软件开发角度进行分离的话,除去安全部分内容,则数据库的框架结构可以简化为如图1所示.
图1 基于对象数据库设计框架示意图
通过将数据加密、表、数据库、Web Form代码及表示层(Web Form)的分离,分别以类、Web服务、ASPX等的形式存在,因此不仅实现了各业务逻辑之间的无缝连接,同时也增加了代码的系统的可维护性和可重用性.打开关闭连接数据库、执行数据的增、删、改、查等功能.CourseAction.java实现了数据管理的请求转发,为了实现对ADD、REMOVE、LIST、VIEW、TRASH、EDIT、SAVE等不同的要求,CourseAction类设计实现了 performAdd()、performRemove()、performList()、performView()、performTrash()、performEdit()和 performSave()方法.由于这七个方法在编写风格上基本一致,所以我们针对performList()方法来说明CourseAction类的构建过程.下面是CourseAction类的部分实现代码.数据库技术在系统中是十分重要的,状态应该随时能查询到[5].
(1)AddStrings(pString)返回一个字符串的基于0的编号,该值用来连接字符串到按钮上,其中的字符串参数pString需要两个结束符来表示结尾,必须将字符串写成如下形式:pString=“Only one string to add ”;CString类不能提供这样的功能,因为不可能在CString中保存超过一个结束符的字符串.所以,将CString中的字符串取出,以char定义的字符串保存,再对该字符串添加一个结束符,做法如下:
CString string;
string.LoadString(nIndex+IDSTR_TFDJ);//装载字符串资源
……
//取得字符串的长度为了添加一个结束符,给长度加1
int nStringLength=string.GetLength()+1;
……
TCHAR*pString=string.GetBufferSetLength(nStringLength);//按增加后的长度返回字符串pString[nStringLength]=0;
函数GetBufferSetLength的过程分配了nStringLength+1长度的内存空间,并在加上结束符' '之后,复制原字符串到这个新的内存空间中,同时将原字符串的结束符也复制到新的位置,于是,该函数结束后,字符串pString已经有两个结束符了,最后一个语句略显多余或不足.但为了保证该字符串确实有两个结束符,不能省略这两个结束符.
图2 面向对象数据库的编译过程
(2)fsState确定按钮的状态,fsStyle确定按钮的风格.若给fsStyle赋值TBSTYLE_SEP,则该按钮表现为一个间隔.dw-Data可以是用户自定义的数据,可以将一个指针或句柄传递给它,可以在某些消息响应函数中使用.iBitmap是表示基于0的图像列表的编号.
(3)idCommand为与按钮连接的命令标识,当这个按钮被按下时,这个值将被放到WM_COMMAND中发送到父窗体.如果fsStyle被设置为TBSTYLE_SEP,该值必须为0.
调用工具栏类.先在类CA1Dlg中实例化CStandardBar的对象.
CStandardBar m_StandardBar;
别忘了在这个文件里包含CStandardBar类声明所在的头文件.
#include“StandardBar.h”
m_StandardBar.AutoSize();//重新计算控件的大小
return 0;
}
传统的关系数据库,数据类型少且固定不变,仅靠具体的字段值和把它们集合在一起的记录来表现信息,缺乏在DB上直接表现数间种种意义上的联系能力.对象和类概念的灵活性,通过编译技术,使之能建立高度结构化的数据模型,这比传统的数据库系统更能体现现实世界的语义.在较低层次的实体有较大的特殊性,而较高层次的实体有较大的概括性.
〔1〕茅健.ASP.NET2.0+SQL Server 2005全程指南 [M].北京:电子工业出版社,2004.
〔2〕启明工作室.精通SQL Server 2005数据库应用系统开发[M].北京:人民邮电出版社,2007.
〔3〕徐国智,汪孝宜,等.SQL Server数据库开发实例精粹[M].北京:电子工业出版社,2006.
〔4〕张从亮.基于UML的面向对象软件分析与建模[J].信息与电脑,2010(4):74-75.
〔5〕Len Silverston.The Data Model Resource Book[J].Revised Edition,Volume 1.John W ileysons,Inc.2002:P33-36.