在一个组织的数据库系统中,有着各种不同类型的人员(或用户)需要与数据库打交道。他们从不同的角度以各自的观点来看待数据库,从而形成了数据库系统不同的视图结构。因此,考察数据库系统的结构可以有多种不同的层次或不同的视角。
若从数据库管理员(DBA)的视角来看,数据库系统可分为内部系统结构和外部体系结构,其中内部系统结构通常采用三级模式结构,而外部体系结构通常表现为集中式结构、分布式结构和并行结构等;若从数据库应用的用户(如应用程序的编写人员)的角度来看,目前数据库系统通常具有客户/服务器结构和浏览器服务器结构,这也是数据库系统整体的运行与应用结构。
数据库系统的三级模式结构
“从数据库管理员的角度来审视数据库系统,其内部基本上遵循美国 ANSISPARC数据库管理系统研究组提出的三级体系结构,即用户级、概念级和物理级。该结构也是目前各个不同数据库管理系统产品所遵循的体系结构准则。也就是说,尽管不同的数据库管理系统产品,可以使用不同的数据库语言,可以支持不同的数据模型,可以建立在不同的操作系统之上,但是们在体系结构上通常具有相同的特征,即釆用三级模式结构,并提供两层映像功能。
具体而言,数据库系统的三级模式结构是指数据库系统是由模式( Schema)、外模式( External Schema)和内模式( Internal schema)三级构成的。
1.模式
在三级模式结构中,模式也称为概念模式或逻辑模式,它是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
模式实际上是数据库数据在逻辑级上的视图,即概念视图,其形式要比数据的物理存储方式抽象。数据库管理员(DBA)必须考虑整个数据库的这种全局概念视图,它不包含任何数据库的实现细节,例如是何种DBMS、文件组织、存取方法以及设备特征等,而是定义数据的逻辑结构、数据之间的联系,以及与数据相关的安全性、完整性等要求。
数据库按外模式的描述向用户提供数据,按内模式的描述存储数据,而模式是这两者的中间层,它既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及程序设计语言(如PHP、Java、C)无关,同时一个数据库只有一个模式,且相对稳定。
DBMS提供模式描述语言( Schema ddL)来严格地定义模式,不仅要定义数据的逻辑结构,还要定义数据之间的联系,定义与数据相关的安全性、完整性等要求。
2.外模式
在三级模式结构中,外模式也称为子模式( Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。
外模式实际上是用于满足不同数据库用户需求的数据视图,即用户视图,其通常是模式的子集,是对数据库整体数据结构的局部重构。如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等方面存在差异,则其外模式描述就不相同,并且模式中同样的数据,在外模式中的结构、类型、长度、保密级别等都可以不同。
一个数据库可以有多个不同的外模式,允许它们有一定的重叠,且一个外模式可以只为一个应用程序使用,也可以为多个应用程序所共享。例如,在一个学校的管理信息系统中,教务处子系统用户只能看到教师的授课信息、学生的选课及成绩信息,人事处子系统用户只能看到教师的基本资料信息,学工处子系统用户只能看到学生的基本资料信息,而学校管理信息系统的数据库则存储的是这些信息数据的总集合。因此,外模式是保证数据库安全的重要措施,每个用户只能看见和访问所对应的外模式中的数据,而数据库中其余数据是不可见的。同时,外模式简化了数据库系统的用户接口,便于用户使用,并有效支持了数据的独立性和共享性。
相应地,DBMS提供子模式描述语言( Subschema DDL)来严格地定义子模式。
3.内模式
在三级模式结构中,内模式也称为存储模式( Storage Schema),它是对数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示形式。
内模式实际上是整个数据库的最底层表示,它不同于物理层,是数据库管理员(DBA)所见到的,特定的DBMS所处理的数据库的内部结构,即内部视图或存储视图。
一个数据库只有一个内模式,它不是存储设备上的物理记录或物理块,也不涉及任何具体设备限制,例如柱面或磁道的大小等,也就是说,内模式还不是最底层的物理层,因为比内模式更接近于物理存储和访问的那些软件机制是操作系统的一部分,比如从磁盘上对数据进行读、写操作相应地,DBMS提供内模式描述语言(内模式DDL,或者存储模式DDL)来严格地定义内模式,即定义所有内部记录类型、索引和文件的组织方式,以及所有数据控制方面的细节,例如,记录的存储方式是按照顺序结构存储还是按照B树结构存储,数据是否压缩、是否加密等。
4.三级模式结构的两层映像与数据独立性
概括而言,构成数据库系统三级模式结构的三个模式分别是对数据的三级抽象,它们彼此间具有如下一些特点。
- 一个数据库的整体逻辑结构和特征的描述(概念模式)是独立于数据库其他层次结构(内/外模式)的描述,其是数据库的核心,也是数据库设计的关键。
- 一个数据库的内部存储模式依赖于概念模式,但存储模式独立于外部模式,也独立于具体的存储设备。
- 用户逻辑结构(外模式)是在全局逻辑结构描述的基础上定义的,它面向具体的应用程序,独立于内部模式和存储设备。
- 特定的应用程序是在外模式的逻辑结构上编写的,它依赖于特定的外模式,与数据库的模式和存储结构独立。
因此,用户可以不必考虑数据的物理存储细节,而把数据的具体组织留给DBMS负责管理,同时为了有效支撑数据的三级抽象以及它们相互间的联系和转换,DBMS通过在内部提供三级模式之间的两层映像来实现,即外模式模式映像与模式/內模式映像。
所谓映像,就是一种对应规则,它指出映像双方是如何进行转换的。外模式/模式映像
(1)外模式/模式映像
定义了各个外模式与概念模式之间的映像关系,这些映像定义通常在各自的外模式中加以描述。由于同一个模式可以有任意多个外模式,因此对于每一个外模式,数据库系统都会有个外模式/模式映像。
数据库系统的模式如若发生改变,例如增加新的关系、新的属性、改变属性的数据类型等,数据库管理员(DBA)通常会对各个外模式/模式的映像做出相应的改变,以使那些对用户可见的外模式保持不变,从而应用程序的编程人员就不必去修改那些依据数据的外模式所编写的应用程序,如此实现了外模式不受概念模式变化的影响,并保证了数据与程序的逻辑独立性。
(2)模式内模式映像
模式/内模式映像定义了数据库全局逻辑结构与物理存储之间的对应关系,这种映像定义通常是在模式中加以描述的。由于数据库中只有一个模式,且也只有一个内模式,所以模式/内模式映像是唯一的。
数据库系统的物理存储如若发生改变,例如选用另外一种存储结构或更换另外一个存储位置,数据库管理员(DBA)通常也会对模式内模式映像做出相应的调整,以使数据库系统的模式保持不变,从而也不必去修改应用程序,如此实现了概念模式不受内模式变化的影响,并保证了数据与程序的物理独立性。
由此可见,正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性,使得数据的定义和描述可以从应用程序中分离出去,从而简化了数据库应用程序的开发,也减少了维护应用程序的工作量。
数据库系统的运行与应用结构
从数据库系统应用的用户角度来看,目前数据库系统常见的运行与应用结构有:客户服务器结构、浏览器/服务器结构。
1.客户/服务器结构
在数据库系统中,数据库的使用者(如DBA、程序编写者)可以使用命令行客户端、图形化界面管理工具、应用程序等来连接数据库管理系统,并可以通过数据库管理系统查询和处理存储在底层数据库中的各种数据。数据库系统的这种工作模式采用的就是客户/服务器结构。其中,数据库的使用者是与命令行客户端、图形化界面管理工具、应用程序等直接交互,而不与数据库管理系统直接联系。因而,在这种结构中,命令行客户端、图形化界面管理工具、应用程序等称为“客户端”“前台”或“表示层”主要完成与数据库使用者的交互任务;而数据库管理系统则称为“服务器”、“后台”或“数据层”其主要负责数据管理。这种操作数据库的模式称为客户/服务器( Client/server,Cs)模式。
在客户/服务器模式中,客户端和服务器可以同时工作在同一台计算机上,这种工作方式称为“单机方式”;也可以“网络方式”进行运行,即服务器被安装和部署在网络中某一台机器上,而客户端被安装和部署在网络中不同的一台或多台主机上。
2.浏览器服务器结构
浏览器服务器结构是一种基于Web应用的客户/服务器结构,也称为三层客户/服务器结构。在数据库系统中,它将与数据库管理系统交互的客户端进一步细分为“表示层”和“处理层”。其中,“表示层”是数据库使用者的操作和展示界面,通常由用于上网的各种浏览器构成,由此减轻数据库系统中客户端的工作负担;而“处理层”也称为“中间层”,则主要负责处理数据库使用者的具体应用逻辑,它与后台的数据库管理系统共同组成功能更加丰富的“胖服务器”。数据库系统的这种工作模式就称为浏览器服务器( Browser/server,B/S)模式。