计算机教育・・・・・. 本栏目责任编辑:王力 用面向对象数据库系统管理高校学生信息的探讨 吴旭.魏德志 (集美大学诚毅学院,厦门361021)
摘要:本文针对当前高校用关系型数据库管理学生信息的不足,提出使用面向对象数据库来管理学生信息的新模式.探讨了利用面 向对象数据库管理学生信息的优势,使得在一个OODBMS里所保存的学生信息得到最大程度的丰富和扩展,并对学校和社会利用在该 模式下保存的学生信息可能采用的方式提出构想 关键词:面向对象数据库:学生信息:数据模型 中图分类号:TP311 文献标识码:A 文章编号:1009—3044(2007)13—3284_02 OODBMS Approach to the Management of Students Jnformation of Higher Education WU Xu.WEI De—zhi (Chengyi Co ̄ege ofJimei University,Xiamen 361021,China) Abstract:In response tO the present 1ack of management of students information by means of Nexus-based Da ̄bank in Hi er Education, a new mode,OODBMS,is brought forward in the paper,which highlights its advan ̄ges in information management,ensuring the stored infor- mation could be enriched tO the maximum, and offering propositions for schools and other social orgnizations tO make possible use of the scu— dents information stored in such mode. Key words:OODBMS;student information;data model
1引言 在高校教学环境中.有关学生的数据信息是复杂多样,变化 万千的 以一名学生为例.除了具备学生的基本属性比如姓名、性 别、民族、籍贯、专业等,还具有考试、入党、参加社团、获得奖学 金、发明创造等许多动态属性信息。且随着在校时间的增加,这些 数据都在不断的变化。而目前大多数高校所使用的关系型数据库 中大多没有保存这部分动态属性信息。学生在学校期间会产生何 种动态信息及动态产生的信息的数据类型是无法提前预知的,这 决定了数据库无法在设计之初就包含完备的与学生信息相关的 表和字段,加上关系型数据库本身的特性决定了其在使用过程中 如果不断修改结构必然要付出无法承受的高昂代价,所以也不可 能在使用中不断修改原有的数据库设计~增加或删除数据库中 的表、字段、主外键联系等。因此,目前大多数高校应对上述动态 信息存储与管理的手段多为将它们以文本的方式存储于Word或 Excel当中。但这种信息管理方式甚至是停留在早期的文件系统 阶段.属于第一代数据库的管理方式。由于文件之间相互独立,缺 乏联系,造成信息的离散,因而无法像在关系型数据库中那样实 现信息的动态实时查询与管理。除了上述的局限,还应当看到在 多媒体时代,伴随学生产生的多媒体信息也越来越丰富,比如为 应对英语和计算机之类的等级考试由学校所采集的学生数码照 片.为门禁、考勤等系统所采集的学生的指纹数据,甚至为某个学 生获奖而录制的一段采访视频等。而关系型数据库并不擅长存储 与管理这些多媒体数据。并且随着时代的发展,伴随着学生必然 还将产生更多复杂的数据类型,由于传统数据库的数据结构比较 简单.不能支持新的数据类型和嵌套、递归的数据结构从而在未 来学生信息的存储与管理上更是显得力不从心。 面向对象数据库系统(OODBMS)的整体结构不同于传统 DBMS 它采用对象层次的存储结构、存取方法和继承性的实现方 法.用户定义数据类型和方法的处理策略,必要的版本控制和友 好的用户界面,是种全新的DBMS。概括的说它就是一个将面向对 象的程序设计语言中所建立的对象自动保存在磁盘上的文件系 统。它既支持传统数据库系统的全部功能,又支持面向对象数据 模型。使用面向对象数据库存储学生信息时,它不再像传统关系 型数据库那样分类存储,而是把每个学生当作一个独立的对象, 按照现实的状态进行信息存储,这样管理员就可以随时为学生添 加属性信息了。 2学生对象数据模型的建立 建立良好的数据模型是实现数据库日后具有较好的管理与 维护性能的极其重要的一个因素,下面将分别介绍面向对象数据 类型和学生对象数据模型的建立 2.I面向对象数据类型 基于ODL(Object Data Language,即对象定义语言)描述的面 向对象数据模型使用的数据类型有: (1)原子类型:包含整形、浮点型、字符型、字符串、布尔型和枚 举型。 (2)结构类型:用Street N{T1 F1,12 F2,……Tn Fn}表示,其中 Street是关键字,N是结构名,Ti是数据类型,一般是原子类型,Fi 表示域名 (3)聚集类型:~般由类型相同的原子类型或结构类型的元素 聚集而成,包含集合,包,列表和数组。 (4)接口类型:即类类型或对象类型。 2.2学生对象数据模型 用ODL语言描述的学生对象模型如下: . interface student (key studentCode1//学号作为主键 { //基本属性信息 attribute string studentName; //学生姓名 attribute string studentSex; //学生性别 …… /,动态属性信息 attribute hash—map properties; //hash—map的可扩展性保证 了属性的动态加入 //它创建的是个属性集合 //基本属性相关的方法 ‘ string get studentNameO; //读取学生姓名 void set studentName0; //写入学生姓名 //动态属性信息相关的方法 void add_pmperity(string name.object value);//添加学生属性 名和属性值 object geLpmperity(string name); //读取学生指定的某 个动态属性 //其它相关 . ……}; 上述中的hash_
map是基于hash table(哈希表)的,其基本原
理是:使用一个下标范围比较大的数组来存储元素。可以设计一 个函数(哈希函数.也叫做散列函数),使得每个元素的关键字都
收稿日期:2007-05—18 作者简介:吴旭.集美大学诚毅学院,助理实验师,厦门大学软件工程专业研究生。
284 电脑知识与技术
维普资讯 http://www.cqvip.com 本栏目责任编辑:王力 ・・・・・・计算机教育 与一个函数值(即数组下标,hash值)相对应,于是用这个数组单 元来存储这个元素;也可以简单的理解为,按照关键字为每一个 元素“分类”.然后将这个元素存储在相应“类”所对应的地方.称 为桶。由它创建的是个属性集合,因此学生的属性可以动态加入 3学生多媒体信息的存储 如上所述,学生的多媒体信息包括数码照片,指纹,录音,视 频等等。在多媒体应用中,多种媒体有着不同的数据结构与操作 要求,也有着不同数据类型要求。它们之间有着复杂的语义联系 并构成一个整体。多媒体应用的这些要求也正是面向对象数据库 所具有的特点。在面向对象方式中多媒体数据按媒体组成类,如 图像类,动画类.声音类,视频类等 多媒体类中一个媒体就是一 个类,它包括该媒体的数据结构及相应操作。每个媒体的类是该 媒体数据与操作的封装体,但在很多情况下,还需要有若干子类 及合成类加以补充。 现举例指纹信息的存贮来说明具体实现。首先使用专用的指 纹采集设备采集指纹,并在系统中对指纹图像进行有效处理并提 取图像特征。在输人数据库中前,该图像以二进制位流的形式保 存在图像文件中.这个文件内容就是图像的原数据。接下来要做 的就是为图像特征信息设计恰当的数据模型,将其抽象为对应的 指纹类。使用指纹类根据不同的指纹就可以创建具有不同属性值 的指纹对象.再由数据库系统完成保存。这样指纹信息就得以存 储了。同理,其它类型的多媒体的信息也按照该原理实现存储。 4面向对象数据库在学生信息管理上的优势 4.1碴询的优势 在关系型数据库中存放学生信息,得先把学生信息按范式标 准拆散.放人各个表,查询的时候再用SQL语句连接各个表取出 信息,而无法直接从上层数据查到对应属性。这就好像开一辆车 到车库,然后把车拆散了在各个位置存放零件,等到要开出去的 时候再组装起来。比如在关系型数据库中要查找名叫“张三”的学 生的班级属性,依据通常的表设计,学生的姓名在student(学生 表)表中.而student表中并不保存班级的具体名字,而是保存一 个叫做班级代码的属性.比如班级代码属性值为2。有另外一张表 class(班级表).由该表负责保存班级名称和班级代码之间的对应 关系,假设班级表中班级代码为2对应的班级名称为计算机0011 班。则需要书写查询代码如下: select /,显示班级名称 class.className from student ,/连接班级表和学生表,学生表中的班级代码与班级表中的 班级代码相同 inner join class on class.classCode=student.classCode where student.studentName=“张三” 因此可见.一旦需要查找某个属性,开发者就不得不写入一 些代码来实现需求,当表联系比较复杂的时候查询代码也将变得 复杂 而在面向对象数据库中,用户定义出对象以后,OODBMS可 以自动描述出该对象的功能,应用及与其他对象的联系。按照该 原理.上述查询例子在面向对象数据库中,只需要查找到叫“张 三”的这名同学的学生对象,那么同时就可以得到该学生对象的 所有功能和属性。 4.2更改数据的优势 在关系型数据库中,如果想增加学生的社团信息,就需要在 数据库中增加社团表,以社团代码为主键.并在原有的学生表中 增加社团代码字段,增加外键一社团代码。这种修改对已经保存了 大量学生数据的数据库来说是很大的。而在OODBMS中,所有数 据都以对象的形式保存。要增加学生的社团信息.只需要用学生 对象模型中的方法add. , )就可以.properity(string name object value