1.4 数据库系统的三级模式结构
从数据库管理系统角度看,数据库系统通常采用三级模式结构。从数据库最终用户角度看,数据库系统的结构分为集中式结构、分布式结构、客户/服务器结构和并行结构。
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成的,如图1-10所示。用户级对应外模式,概念级对应模式(概念模式和逻辑模式),物理级对应内模式。在一个数据库系统中,只有唯一的数据库,因而作为定义、描述数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是唯一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是唯一的,也不可能是唯一的。
图1-10 数据库系统的三级模式结构
(1)模式
模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(Data Description Language,DDL)来描述、定义的,反映了数据库系统的整体观。
(2)外模式
外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(Data Manipulation Language,DML)对这些数据记录进行操纵。外模式反映了数据库的用户观。
(3)内模式
内模式又称存储模式,对应于物理级,是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,反映了数据库的存储观。
(4)三级模式间的映射
数据库的三级模式是数据库在3个级别(层次)上的抽象,使用户能够逻辑地、抽象地处理数据而不必关心数据在计算机中的物理表示和存储。实际上,对于一个数据库系统而言,已有的物理级数据库是客观存在的,它是进行数据库操作的基础(内模式),概念级数据库中不过是物理数据库的一种逻辑的、抽象的描述(即模式),用户级数据库则是用户与数据库的接口,它是概念级数据库的一个子集(外模式)。
不同级别的用户对数据库形成不同的视图。所谓视图,就是指观察、认识和理解数据的范围、角度和方法,是数据库在用户“眼中”的反映。很显然,不同层次(级别)的用户“看到”的数据库是不同的,图1-11所示为一个三级模式映射的例子。用户应用程序“教务管理系统”根据外模式“学生视图”和“教师视图”进行数据操作,通过“外模式/模式映射”定义和建立某个外模式与模式间的对应关系,将外模式“学生视图”“教师视图”与模式“学生表”“教师表”联系起来,当模式发生改变时,只要改变其映射,就可以使外模式保持不变,对应的应用程序也可以保持不变。另一方面,可通过“模式/内模式映射”定义建立数据的逻辑结构(模式)“学生表”“成绩表”与存储结构(内模式)“学生表”“成绩表”间的对应关系。当数据的存储结构发生变化时,只需改变“模式/内模式映射”,就能保持模式不变,因此应用程序也可以保持不变。
图1-11 教务系统的三级模式结构
例如,图1-12所示的教务系统的三级模式实例是图1-11的一个例子。其中,图1-12(c)“学生文件”、“课程文件”、“选课文件”是显示内模式表示数据的底层结构,即物理结构;图1-12(b)中显示的模式“学生关系”、“选课关系”、“课程关系”只与逻辑结构有关,与物理结构无关。通过模式与内模式的映射,可以保证逻辑结构与底层物理存储具有相对独立性,也就是说,当物理存储改变时(例如存储位置发生改变),不需要修改逻辑结构,只要修改映射,就可以保证数据库能够运行。图1-12(a)外模式“成绩单”显示与用户交互的部分,也就是说,可以通过外模式隐藏不希望用户看到的信息,同时代码通过外模式访问数据,可以使得代码具有可移植性。也就是说,代码可以脱离数据库的逻辑结构,当数据库逻辑结构发生改变时,只要修改模式与内模式的映射,不需要修改代码即可运行。
图1-12 教务系统的三级模式实例
扩展阅读
穿孔卡是早期计算机的信息输入设备,通常可以存储80列数据。它是一种很薄的纸片,面积为190×84mm2,见图1-13。首次使用穿孔卡技术的数据处理机器,是美国统计专家赫曼·霍列瑞斯(H.Hollerith)博士的伟大发明。
公元1880年,美利坚合众国举行了一次全国性人口普查,为当时5000余万的美国人口登记造册。当时美国经济正处于迅速发展的阶段,人口流动十分频繁,再加上普查的项目繁多,统计手段落后,从当年元月开始的这次普查,花了7年半的时间才把数据处理完毕。也就是说,直到快进行第二次人口普查时,美国政府才能得知第一次人口普查期间全国人口的状况。
图1-13 穿孔卡
人口普查需要处理大量数据,如用调查表采集的项目年龄、性别等,并且还要统计出每个社区有多少儿童和老人,有多少男性公民和女性公民等。这些数据是否也可以由机器自动进行统计?采矿工程师霍列瑞斯想到了纺织工程师杰卡德80年前发明的穿孔纸带。杰卡德提花机用穿孔纸带上的小孔控制提花操作的步骤,即编写程序。霍列瑞斯则进一步设想要用它来存储和统计数据,于是他想发明一种自动制表的机器。两年后,霍列瑞斯博士离开了人口局,到专利事务所工作了一段时间,也曾任教于麻省理工学院,他一边工作,一边致力于自动制表机的研制。
霍列瑞斯首先把穿孔纸带改造成穿孔卡片,以适应人口数据采集的需要。由于每个人的调查数据有若干不同的项目,如性别、籍贯、年龄等。霍列瑞斯把每个人所有的调查项目依次排列于一张卡片上,然后根据调查结果在相应项目的位置上打孔。例如,穿孔卡片“性别”栏目下有“男”和“女”两个选项,“年龄”栏目下有从“0岁”到“70岁以上”等系列选项,等等。统计员可以根据每个调查对象的具体情况,分别在穿孔卡片各栏目的相应位置打出小孔。每张卡片都代表着一位公民的个人档案。
霍列瑞斯博士巧妙的设计在于自动统计。他在机器上安装了一组盛满水银的小杯,穿好孔的卡片就放置在这些水银杯上。卡片上方有几排精心调好的探针,探针连接在电路的一端,水银杯则连接于电路的另一端。与杰卡德提花机穿孔纸带的原理类似:只要某根探针撞到卡片上有孔的位置,便会自动跌落下去,与水银接触从而接通电流,启动计数装置前进一个刻度。由此可见,霍列瑞斯穿孔卡表示的也是二进制信息:有孔处能接通电路计数,代表该调查项目为“有”(“1”),无孔处不能接通电路计数,表示该调查项目为“无”(“0”)。
直到1888年,霍列瑞斯博士才完成了自动制表机的设计并申报了专利。他发明的这种机电式计数装置,比传统纯机械装置更加灵敏,因而被1890年后的历次美国人口普查选用,获得了巨大的成功。例如,1900年进行的人口普查全部采用霍列瑞斯制表机,平均每台机器可代替500人工作,全国的数据统计仅用了1年多时间。虽然霍列瑞斯发明的并不是通用计算机,除了能统计数据表格外,它几乎没有别的什么用途,然而制表机穿孔卡第一次把数据转变成二进制信息。在以后的计算机系统里,利用穿孔卡片输入数据的方法一直沿用到20世纪70年代,数据处理也发展成为计算机的主要功能之一。
依托自己发明的制表机,霍列瑞斯博士创办了一家专业制表机公司,但不久就因资金周转不灵陷入困境,被另一家CTR公司兼并。1924年,CTR公司更名为“国际商业机器公司”,英文缩写为IBM,专门生产打孔机、制表机一类的产品。到了1950年,IBM的卡片已被业界与政府机构广泛使用,为了让卡片可作为证明文件重复使用,卡片上都印有“请勿折叠、卷曲或毁损”的警示词,这行警示词后来还成为后二次大战时期的流行标语。
FORTRAN程序穿孔卡的使用直到20世纪70年代为止,不少计算机设备仍以卡片作为处理媒介,世界各地都有科学系或工程系的大学生拿着大叠卡片到当地的计算机中心交作业程序,一张卡片代表一行程序,然后耐心排队等着自己的程序被计算机中心的大型计算机处理、编译并执行。一旦执行完毕,就会打印出附有身份识别的报表,放在计算机中心外的文件盘里。如果最后打印出一大串程序语法错误的信息,学生就得修改后重新再一次执行程序。穿孔卡直到今日仍未绝迹,其特殊的尺寸(80行的长度)在世界各地仍使用在各式表格、记录和程序中。
杰卡德和霍列瑞斯分别开创了程序设计和数据处理之先河。以历史的目光审视他们的发明,正是这种程序设计和数据处理,构成了计算机软件的雏形。
习题
1.数据库系统的发展过程分成哪几个阶段?
2.数据管理技术发展过程中,文件系统与数据库系统的重要区别是什么?
3.数据库系统的功能有那些?
4.数据库系统的模式结构是怎样的?有什么样的用途?
5.通常所说的数据库系统(DBS)、数据库管理系统(DBMS)和数据库(DB)三者之间的关系是什么?