1.2 数据库系统结构
1.2.1 数据库系统模式的概念
模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,它仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例(Instance)。同一个模式可以有很多实例。模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新的。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
1.2.2 数据库系统的三级模式结构
数据库系统结构分为三层,即内模式、概念模式(模式)和外模式,如图1-1所示。这个三级结构有时称为“三级模式结构”,最早是在1971年的DBTG报告中提出的,后来收入到1975年的美国ANSI/SPARC报告中。虽然现在DBMS的产品多种多样,并在不同操作系统支持下工作,但是大多数系统在总的体系结构上都具有三级模式的机构特征。
图1-1 数据库系统的三级模式结构
从某个角度看到的数据特性称为“数据视图”(Data View)。
- 外部级最接近用户,是单个用户所能看到的数据特性,单个用户使用的数据视图的描述称为“外模式”。
- 模式涉及所有用户的数据定义,是全局的数据视图。全局数据视图的描述也称为“概念模式”。
- 内模式最接近于物理存储设备,涉及实际数据存储的结构。物理存储数据视图的描述称为“内模式”。
1.概念模式(所有用户的公共视图)
一个数据库只有一个概念模式,它以某一种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。
概念模式由许多记录类型的值组成。例如,它可能包括部门记录值的集合、职工记录值的集合、供应商记录值的集合、零件记录值的集合等。模式根本不涉及物理表示和访问的技术,它只定义信息的内容,在模式中不能涉及存储字段表示、存储记录队列、索引、哈希算法、指针或其他存储和访问的细节。这样,模式即可真正实现物理数据的独立性。
定义模式时,不仅定义数据的逻辑结构,还要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
在数据库管理系统(DBMS)中,描述概念模式的数据定义语言称为“模式DDL”(Schema Data Definition Language)。
2.外模式(用户可见的视图)
外模式也称子模式(Subschema)或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某个应用有关的数据的逻辑表示,是用户和数据库系统的接口,是用户用到的那部分数据的描述。一个系统一般有多个外模式。
外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。用户使用数据操纵语言(Data Manipulation Language,DML)语句对数据库进行操作,实际上是对外模式的外部记录进行操作。
描述外模式的数据定义语言称为外模式DDL。有了外模式后,程序员或数据库管理员不必关心概念模式,只与外模式发生联系,按照外模式的结构存储和操纵数据。
外模式又称为“用户模式”或“子模式”,通常是概念模式的逻辑子集。
3.内模式(存储模式)
一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方法。它定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。
注意,内模式和物理层仍然不同。内部记录并不涉及物理记录,也不涉及设备的约束。比内模式更接近物理存储和访问的那些软件机制是操作系统的一部分,即文件系统。
描述内模式的数据定义语言称为内模式DDL。
1.2.3 数据库的二级映像功能与数据独立性
数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给数据库管理系统(DBMS)去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储。三级结构之间一般差别很大,为了实现这三个抽象级别的内部联系和转换,DBMS在三级结构之间提供了两个层次的映像:外模式/概念模式映像、概念模式/内模式映像,见图1-1。
这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
1.模式/概念模式映像
用于定义外模式和概念模式之间的对应性,即外部记录和内部记录间的关系。
当模式发生改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变,应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
2.模式/内模式映像
用于定义概念模式和内模式间的对应性,实现两级的数据结构、数据组成等的映像对应关系。
模式/内模式映像定义了数据库全局逻辑结构与存储结构之间的对应关系,当数据库的存储结构改变时,由数据库管理员对模式/内模式映像做相应的改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。
1.2.4 数据库系统用户结构
从最终用户角度来看,数据库系统分为单用户结构、主从式结构、客户-服务器结构和分布式结构。
1.单用户数据库系统
单用户数据库系统是一种早期最简单的数据库系统,如图1-2所示。在这种系统中,整个数据库系统(包括应用程序、DBMS、数据)都装在一台计算机上,由一个用户独占,不同计算机之间不能共享数据。
2.主从式结构数据库系统
主从式结构是指一个主机带多个终端的多用户结构,如图1-3所示。在这种结构中,数据库系统(包括应用程序、DBMS、数据)都集中存放在主机上,所有处理任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源。
图1-2 单用户数据库系统
图1-3 主从式结构数据库系统
3.客户-服务器结构数据库系统
主从式数据库系统中的主机是一个通用计算机,既执行DBMS功能,又执行应用程序。随着工作站功能的增强和广泛使用,人们开始把DBMS功能和应用分开,网络中某个(些)结点上的计算机专门用于执行DBMS功能,称为数据库服务器,简称服务器。其他结点上的计算机安装DBMS的外围应用开发工具,支持用户的应用,称为客户机,这就是客户-服务器结构的数据库系统,如图1-4所示。
在客户-服务器结构中,客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后,只将结果返回给用户(而不是整个数据),从而显著减少了网络上的数据传输量,提高了系统的性能、吞吐量和负载能力。另一方面,客户-服务器结构的数据库往往更加开放。客户与服务器一般都能在多种不同的硬件和软件平台上运行,可以使用不同厂商的数据库应用开发工具,应用程序具有更强的可移植性,同时也可以减少软件维护开销。
4.分布式结构数据库系统
分布式结构是指数据库中的数据在逻辑上是一个整体,但分布在计算机网络的不同结点上。网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用,也可以同时存取和处理多个异地数据库中的数据,执行全局应用,如图1-5所示。它的优点是适应了地理上分散的公司、团体和组织对于数据库应用的需求;不足是数据的分布存放给数据的处理、管理与维护带来困难,当用户需要经常访问远程数据时,系统效率会明显地受到网络交通的制约。
图1-4 客户-服务器结构数据库系统
图1-5 分布式结构数据库系统