2.4 外部模型
在应用系统中,常常根据业务的特点划分成若干个业务单位,每一个业务单位都有特定的约束和需求,在实际使用时,可以为不同的业务单位设计不同的外部模型。例如,为图2-11建立“学生管理系统”的外部模型,如图2-22所示。为“教师管理系统”建立外部模型,如图2-23所示。
图2-22 “学生管理系统”的外部模型
图2-23 “教师管理系统”的外部模型
扩展阅读
查尔斯·巴赫曼——“网状数据库之父”
20世纪60年代中期以来,数据库技术的形成、发展和日趋成熟,使计算机数据处理技术跃上了一个新台阶,并从而极大地推动了计算机的普及与应用。因此,1973年的图灵奖首次授予在这方面作出杰出贡献的数据库先驱查尔斯·巴赫曼(Charles W.Bachman)。为了说明巴赫曼的功绩,让我们先简要回顾一下计算机数据处理发展的历史。
计算机在20世纪40年代诞生之初只用于科学与工程计算,不能用于数据处理,因为当时的计算机还只能处理数字,不能处理字母和符号,而字母和符号恰是数据处理中的主要处理对象。此外,当时的计算机也还没有数据处理所需要的大容量存储器。20世纪50年代初,发明了字符发生器(Character Generator),使计算机具有了能显示、存储与处理字母及各种符号的能力;又成功地将高速磁带机用于计算机作存储器,这是对计算机得以进入数据处理领域具有决定意义的两大技术进展。但是磁带只能顺序读写,速度也慢,不是理想的存储设备。1956年,IBM公司和Remington Rand公司先后实验成功磁盘存储器方案,推出了商用磁盘系统。磁盘不但转速快,容量大,还可以随机读写,为数据处理提供了更加理想的大容量、快速存储设备。有了这些硬件的支持,计算机数据处理便日益发展起来。
查尔斯·巴赫曼
但是,初期的数据处理软件只有文件管理(File Management)这种形式,数据文件和应用程序一一对应,造成了数据冗余、数据不一致性和数据依赖(Data Dependence)。所谓数据依赖就是编写程序依赖于具体数据,拿COBOL这种常用的商用语言来说,程序员必须在数据部的文件节(DATADIVISION,FILESECTION)中详细说明文件中各数据项的类型、长度和格式,在设备部的输入-输出节(ENVIRON-MENTDIVISION、INPUT-OUTPUTSECTION)中还要通过SELECT语句和ASSIGN语句把文件和具体设备联系起来,并使用ORGANIZATION语句和SQL SERVERMODE语句严格规定文件的组织方式和存取方式。根据这些具体规定,程序员再在过程部(PROCEDUREDIVISION)中用一系列命令语句导航,才能使系统完成预期的数据处理任务。应用程序与数据的存储、读取方式密切相关,这种状况给程序的编制、维护都造成很大的麻烦。
后来出现了文件管理系统FMS(Pile Management System)作为应用程序和数据文件之间的接口,一个应用程序通过FMS可以与若干文件打交道,在一定程度上增加了数据处理的灵活性。但这种方式仍以分散、互相独立的数据文件为基础,数据冗余、数据不一致性、处理效率低等问题仍不可避免。这些缺点在较大规模的系统中尤为突出。以美国在20世纪60年代初制定的阿波罗登月计划为例,阿波罗飞船由约200万个零部件组成,它们分散在世界各地制造生产。为了掌握计划进度及协调工程进展,阿波罗计划的主要合约者Rock-well公司曾研制、开发了一个基于磁带的零部件生产计算机管理系统,系统共用了18盘磁带,虽然可以工作,但效率极低,18盘磁带中60%的数据是冗余数据,维护十分困难。这个系统的状况曾一度成为实现阿波罗计划的重大障碍之一。
针对上述问题,各国学者、计算机公司、计算机用户及计算机学术团体纷纷开展研究,为改革数据处理系统进行探索与实验,其目标主要就是突破文件系统分散管理的弱点,实现对数据的集中控制,统一管理。结果就是出现了一种全新的高效的管理技术——数据库技术。Rockwell公司与IBM公司合作,在当时新推出的IBM 360系列上研制成功了世界上最早的数据库管理系统之一IMS(1nformation Management System),为保证阿波罗飞船1969年顺利登月作出了贡献。IMS是基于层次模型的。几乎同时,巴赫曼在通用电气公司主持设计与实现了网状的数据库管理系统IDS(Integrated Data System)。
巴赫曼1924年12月11日生于堪萨斯州的曼哈顿,1948年在密歇根州立大学取得工程学士学位,1950年在宾夕法尼亚大学取得硕土学位,20世纪50年代在Dow化工公司工作,1961—1970年在通用电气公司任程序设计部门经理,1970—1981年在Honeywell公司任总工程师,同时兼任Cullinet软件公司的副总裁和产品经理。Cullinet公司对中国人来说知之者不多,但这个公司当时在美国很有名气,它是1978年第一家在纽约股票交易所上市的软件公司,当时微软在新墨西哥州的阿尔伯克基开张不久,鲜为人知的是,它的股票是1986年上市的,比Cullinet晚8年之久,但Cullinet最终被CA公司购并。1983年巴赫曼创办了自己的公司Bachman Information System,Inc.。
图2-24 网状数据库系统结构
巴赫曼在数据库方面的主要贡献有两项,第一就是前面说的,在通用电气公司任程序设计部门经理期间,主持设计与开发了最早的网状数据库管理系统IDS,如图2-24所示。IDS于1964年推出后,成为最受欢迎的数据库产品之一,而且它的设计思想和实现技术被后来的许多数据库产品所仿效。第二就是巴赫曼积极推动与促成了数据库标准的制定,也就是美国数据系统语言委员会CODASYL下属的数据库任务组DBTG提出的网状数据库模型以及数据定义和数据操纵语言即DDL和DML的规范说明,于1971年推出了第一份正式报告——DBTG报告,成为数据库历史上具有里程碑意义的文献。该报告中基于IDS的经验所确定的方法称为DBTG方法或CODASYL方法,所描述的网状模型称为DBTG模型或CODASYL模型。DBTG曾希望美国国家标准委员会ANSI接受DBTG报告为数据库管理系统的国家标准,但是没有成功。1971年报告之后,又出现了一系列新的版本,如1973年、1978年、1981年和1984年的修改版本。DBTG后来改名为DBLTG(Data Base Language Task Group,数据库语言工作小组)。DBTG首次确定了数据库的三层体系结构,明确了数据库管理员DBA(Data Base Administrator)的概念,规定了DBA的作用与地位。DBTG系统虽然是一种方案而非实际的数据库,但它所提出的基本概念却具有普遍意义,不但国际上大多数网状数据库管理系统,如IDMS、PRIME DBMS、DMSl70、DMSⅡ和DMS 1100等都遵循或基本遵循DBTG模型,而且对后来产生和发展的关系数据库技术也有很重要的影响,其体系结构也遵循DBTG的三级模式(虽然名称有所不同)。下面简要介绍DBTG的系统结构。
DBTG的系统结构主要包括模式(Schema)、子模式(Subschema)、物理模式(Physical Schema)、数据操纵和数据库管理系统(DBMS,Data Base Management System)等几个部分。模式是对数据库整体数据逻辑结构的描述,它对应数据库的概念层,由数据库管理员借助模式数据描述语言DDL(Data Description Language)建立。子模式是某一用户对他所关心的那部分数据的数据结构的描述,对应于数据库的外层或用户视图(user view),是由该用户自己或委托数据库管理员借助子模式数据描述语言加以定义的。物理模式或称为存储模式(storage schema)是对数据库的数据的存储组织方式的描述,对应于数据库的物理层,由数据库管理员通过数据存储描述语言DSDL(Data Storage Description Language)加以定义(DSDL是DBTG报告的1978年版本提出的,之前的报告用的名称称为数据介质控制语言DMCL Data Media Control Language)。数据库可由多个用户、多个应用共享,数据库应用程序利用数据操纵语言DML(Data Manupilation Language)实现对数据库数据的操纵,但一个应用程序必须援引某一模式的某一子模式(也就是说它操作的数据限于某一用户视图中的数据)。DML语句可以嵌在宿主语言(如COBOL,Fortran等)中,在数据库管理系统的控制下访问数据库中的数据,并通过一个称为用户工作区UWA(User Work Area)的缓冲区与数据库通信,完成对数据库的操作。数据库管理系统的其他功能包括维护数据库中数据的一致性(Consistency)、完整性(Integrity)、安全性(Security)和一旦出现故障情况下的恢复(Recovery),以及在多个应用程序同时存取同一数据单元时处理并发性(Concurrency),以避免出现“脏数据”(Dirty Data)或“丢失更新”(10seupdate)等不正常现象。由此可见,有关模式的数据描述语言DDL是建立数据库的工具,数据操纵语言DML是操作数据库、存取其中数据的工具,而数据库管理系统DBMS则是执行这种操作并负责维护与管理数据库的工具,它们各司其职,完成数据库整个生命期中的一切活动。
由于巴赫曼在以上两方面的杰出贡献,巴赫曼被理所当然地公认为“网状数据库之父”或“DBTG之父”,在数据库技术的产生、发展与推广应用等各方面都发挥了巨大的作用。
在数据库的文档资料中,有一种描述网状数据库模型的数据结构图,这种图解技术是巴赫曼发明的,通常被称为巴赫曼图(Bachman Diagram)。此外,在担任ISO/TC 97/SC—16主席时,巴赫曼还主持制定了著名的“开放系统互连”标准,即OSI(Open System Interconection)。OSI对计算机、终端设备、人员、进程或网络之间的数据交换提供了一个标准规程,实现OSI对系统之间达到彼此互相开放有重要意义。巴赫曼也是建立在波士顿的计算机博物馆的创始人之一。20世纪70年代以后,由于关系数据库的兴起,网状数据库受到冷落。但随着面向对象技术的发展,有人预言网状数据库将有可能重新受到人们的青睐。但无论这个预言是否实现,巴赫曼作为数据库技术先驱的历史作用和地位是学术界和产业界普遍承认的。
巴赫曼是在1973年8月28日在亚特兰大举行的ACM年会上获得的图灵奖,他发表了题为“作为导航员的程序员”(The Programmer as Navigator)的图灵奖演说,刊载于Communications of ACM,1974年11月,653~658页,也可见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures The First 20Yean:1966—1985,ACM Pr.),269,286页。
数据库系统发展的历史性事件列表如下:
1951:Univac系统使用磁带和穿孔卡片作为数据存储。
1956:IBM公司在其Model 305 RAMAC中第一次引入了磁盘驱动器。
1961:通用电气(GE)公司的Charles Bachman开发了第一个数据库管理系统——IDS。
1969:E.F.Codd发明了关系数据库。
1973:由John J.Cullinane领导Cullinane公司开发了IDMS——一个针对IBM主机的基于网络模型的数据库。
1976:Honeywell公司推出了Multics Relational Data Store——第一个商用关系数据库产品。
1979:Oracle公司引入了第一个商用SQL关系数据库管理系统。
1983:IBM推出了DB2数据库产品。
1985:为Procter & Gamble系统设计的第一个商务智能系统产生。
1991:W.H.Bill Inmon发表了“构建数据仓库”。
习题
1.数据库模型分为哪几个层次?分别有什么样的作用?
2.层次模型是怎样的?试举例说明。
3.网状模型是怎样的?试举例说明。
4.关系模型是怎样的?试举例说明。
5.举一个例子按照层次模型、网状模型以及关系模型的方式进行存储。