9-1-2

来源:百度文库 编辑:神马文学网 时间:2024/04/23 19:15:13


概 述
  20世纪90年代,计算机领域中面向对象技术和开放技术得到了推广和使用,并对数据库技术的发展起着巨大的促进作用。
  (1)概念设计作为需求分析到逻辑设计的一个中间阶段,对应用系统的开发起着十分重要的作用。概念模型是对用户数据需求的精确描述,但并不涉及具体的实现细节,易于理解,便于数据库设计人员和非技术用户进行交流。人们不断在探索,用概念模型尽可能完美地表达用户的需求。在20世纪90年代,随着面向对象技术的推广和应用,提出了对象联系图和UML类图的技术。实际上这两种技术都是ER模型中ER图的发展。本章9.1节介绍这种面向对象的概念建模技术。
  (2)随着C/S(客户机/服务器)结构的出现,人们可以最有效地使用计算机资源。廉价的PC机(客户机)位于桌面,并提供图形前端及大量的软件开发工具,如电子数据表、图表程序和报表制作器等。小型机和大型机作为DBMS的宿主,能充分使用其计算能力和中心位置来提供快速、协调的数据访问。但前端和后端数据库怎么连接起来呢?
  对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。
  这就需要开放的数据库连接,即人们需要用一种新的方法来访问不同的数据库。ODBC技术就是这种优秀的中间件技术。ODBC是“开放数据库互连”(Open DataBase Connectivity)的英文缩写。ODBC的出现为数据库应用系统的开发指明了道路,将成为Web数据库技术的主流。本章9.2节介绍开放的数据库互连技术。 9.1.1 面向对象的数据类型系统
  在面向对象技术中,数据类型系统由基本类型、复合类型和引用类型三部分组成。

1.基本类型
(1)基本数据类型是指整型、浮点型、字符、字符串、布尔型和枚举型。
(2)枚举类型是一个标识符的列表,它和整型是同义词。例如把sex定义为枚举类型{male,female},在效果上就是把标识符male和female定义成整数0和1的同义词。
2.复合类型
  复合类型有下列五种。
(1)行类型
   ①不同类型元素的有序集合称为行类型(Row Type)。
   ②也称为元组类型、结构类型或对象类型。
   ③例如日期可以由日、月、年三部分组成(1,October,2006)。
(2)数组类型
   ①相同类型元素的有序集合称为数组类型(Array Type)。
   ②一般,数组的大小是预先设置的。
   ③例如人名数组:[BAO,AN,NING,WEN,GAO,DING,SHI,ZHOU]。
(3)列表类型
   ①相同类型元素的有序集合,并且允许有重复的元素,称为列表类型(List Type)。
   ②作为一种特例,字符串(string)类型是列表(List)类型的简化形式。
   ③列表的大小预先未设置,在使用时,可以有任意个元素。
(4)包类型
   ①相同类型元素的无序集合,并且允许有重复的元素,称为包类型(Bag Type)。
   ②也称为多集类型(Multiset Type)。
   ③例如成绩集:{80,90,70,80,80}。
(5)集合类型
   ①相同类型元素的无序集合,并且所有的元素必须是不同的,称为集合类型(Set Type),有时也称为关系类型。
   ②例如课程集:{MATHS,PHYSICS,PL,OS,DB}。
(6)说明
   ①复合类型中后四种类型——数组、列表、包、集合——统称为汇集(collection)类型,或批量(bulk)类型。
   ②复合类型的差异。

   ③数据类型可以嵌套。例如课程成绩集:{(MATHS,80),(PHYSICS,90),(PL,70),(OS,80),(DB,80)},外层是集合类型,里层是行类型。
3.引用类型(reference type)
(1)引用类型相当于程序设计中指针的概念。
(2)引用类型这个概念可以把类型定义中的实例映射扩充到类型值域中的实例映射,提供有关实现细节的抽象。
(3)引用类型可以避免数据结构的无穷嵌套问题。 9.1.2 对象联系图
1.传统ER模型的不足
(1)在传统的数据库技术中,ER模型里的多值属性都要设法转换成单属性或一个弱实体。
(2)另外,关系模型中的属性值都是原子值(即1NF性质),不允许是元组值或关系值。这就限制了关系模型的适用范围。
(3)也就是传统数据库的数据结构比较简单,不能支持复合数据类型和嵌套、递归等数据结构。
2.对象联系图的提出
(1)为此,在20世纪90年代初,有学者对ER图加以扩充,提出了对象联系图的概念,在数据结构之间允许嵌套和递归。
(2)对象联系图能真实地反映现实世界数据之间的各种联系,为对象数据库的实现创造了良好的条件。
(3)使用类型构造图的思想,我们可以把实体联系图扩充成对象联系图。
(4)对象联系图完整地揭示了数据之间的联系。
3.对象联系图中的七个基本成分
   ①椭圆代表对象类型(相当于实体类型)。
   ②小圆圈表示属性是基本数据类型(整型、实型、字符串型等)。
   ③椭圆之间的边表示对象之间的“引用”。
   ④单箭头(→)表示属性值是单值(属性可以是基本数据类型,也可以是另一个对象类型,即元组类型)。
   ⑤双箭头()表示属性值是多值(属性可以是基本数据类型,也可以是另一个对象类型,即关系类型)。
   ⑥双线箭头()表示对象类型之间的超类与子类联系(从子类指向超类)。
   ⑦双向箭头()表示两个属性之间值的联系为逆联系。
4.实例

   ①一个数据库模式的对象联系图,有大学、教师、课程等信息。
   ②University是有关大学信息的对象类型,有六个属性。其中三个是基本数据类型,学校编号uno、校名uname和学校所在城市city;一个是单值属性president,表示学校中的校长是某一位教师;还有两个是多值属性,属性staff表示学校中有若干教师,属性edit表示学校编写了若干本教材。
   ③Person是一个有关人员信息的对象类型,有四个属性,都是基本数据类型,社会安全号(social_number)、姓名(name)、年龄(age)和性别(sex)。
   ④Faculty是有关教师信息的对象类型,有四个属性。其中两个是基本数据类型,教师编号fno和工资salary;一个是单值属性works_for,表示教师服务的学校;一个是多值属性teach,表示教师开设了若干门课程。
   ⑤从Faculty到Person有双线箭头(),表示Faculty是Person的一个子类型,自动具有social_number、name、age和sex等四个属性,表示“每个教师是一个人”的语义。
   ⑥Coursetext是有关课程与教材信息的对象类型,有五个属性。其中三个是基本数据类型,课程号cno、课程名cname和教材名textname;还有两个是单值属性,属性teacher表示开课的教师,属性editor表示教材的编写学校。
   ⑦类型定义中的成分现在用从类型定义到值域类型的属性表示,例如“teach”是一个从对象类型Faculty到对象集(其成分是Coursetext类型)的属性。属性之间的双向箭头()表示两个属性之间值的联系为逆联系。譬如teach和teacher是一对互逆的属性,此处teach是多值属性,teacher是单值属性,实际上体现了Faculty与Coursetext间对象的1:N联系。
5.对象联系图的说明
   ①对象联系图是描述面向对象数据模型的基本工具。
   ②对象联系图不仅完整地揭示了数据之间的联系,也把查询的层次观点表现得一清二楚。
   ③例如在图中,一个查询可能是从University开始,把Faculty看成它的子对象(通过值为集合的属性staff)。这样,查询形式如同数据库中果真有嵌套关系University(…,staff(…)),这里的属性staff包含了一所大学的所有教师信息。但是另一个查询可能正好相反,那么就要用相反的层次观点解释,例如从Faculty开始查询,把University作为子对象,通过单值属性works_for实现,如同数据库中有嵌套关系Faculty(…,works_for(uname,city,…))。
   ④任何形式的层次联系均被包含在对象联系图中,而且实现时不会有冗余现象。