【数据库原理及应用教程】【数据库系统概述】【1.1-1.3】
数据库中的数据是按一定的数据模型(结构)组织起来的,而在数据模型中有“型”(Type)和“值”(Value)的概念。“型” 是指对某一数据的结构和属性的说明,而“值” 是 “型” 的一个具体赋值。
模式 (Schema) 是数据库中全体数据的逻辑结构和特征的描述,它仅涉及型的描述,而不涉及具体的值。模式的一个具体值称为模式的一个实例 (Instance) 。同一个模式可以有很多实例。
对于数据库描述的业务,模式相对稳定,由于数据库中数据的不断更新变化,实例频繁改变。模式反映的是数据的结构,而实例反映的是数据库某一时刻的状态。
美国国家标准学会(American NationalStandards Institute,ANSI)所属标准计划和要求委员会在1975年公布的研究报告中,把数据库系统内部的体系结构从逻辑上分为外模式、模式和内模式三级抽象模式结构和二级映像功能,即ANSI/SPARC体系结构。对用户而言,外模式、模式和内模式分别对应一般用户模式、概念模式和物理模式,它们分别反映了看待数据库的三个角度。三级模式结构和二级映像功能如图1-9所示。
模式也称为概念模式,是数据库中全体数据的逻辑结构和特征的描述,处于三级模式结构的中间层,不涉及数据的物理存储细节和硬件环境,与具体的应用程序、所使用的应用开发工具及高级程序设计语言(如C 、FORTRAN等)无关。
一个数据库只有一个模式,因为它是整个数据库数据在逻辑上的视图,即是数据库的整体逻辑。也可以认为,模式是对现实世界的一个抽象,是将现实世界某个应用环境(企业或单位)的所有信息按用户需求而形成的一个逻辑整体。
外模式(External Schema)又称为子模式(Subschema)或用户模式(User Schema),外模式是三级结构的最外层,是数据库用户能看到并允许使用的那部分数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示,也是数据库用户的数据视图,即用户视图。
可见,外模式一般是模式的千,一个数据库口以有多个外模式。由干不同用户的需求可能不同,因此,不同用户对应的外模式的描述也可能不同。另外,同一外模式也可以为多个应用系统所使用。
因此,各个用户可根据系统所给的外模式,用查询语言或应用程序去操作数据库中所需要的那部分数据,这样每个用户只能看到和访问所对应的外模式中的数据,数据库中的其余数据对他们来说是不可见的。所以,外模式是保证数据库安全性的一个有力措施。
内模式(Internal Schema)又称存储模式(Storage Schema)或物理模式(Physical Schema),是三级结构中的最内层,也是靠近物理存储的一层,即与实际存储数据方式有关的一层,它是对数据库存储结构的描述,是数据在数据库内部的表示方式。例如,记录以什么存储方式存储(顺序存储、B+树存储等)、索引按照什么方式组织、数据是否压缩、是否加密等,它不涉及任何存储设备的特定约束,如磁盘磁道容量和物理块大小等。
通讨对数据库三级模式结构的分析以看出,一个数据库系统,实际存在的只是物理级数据库,即内模式,它是数据访问的基础。概念数据库只不讨是物理级数据库的一种抽象描述,用户级数据库是用户与数据库的接口。用户根据外模式进行的操作,通过外模式到模式的映射与概令级数据库联系起来,又通过模式到内模式的映射与物理级数据库联系起来。事实上,DBMS的中心工作之一就是完成三级数据库模式间的转换,把用户对数据库的操作转化到物理级去执行。
在数据库系统中,外模式可有多个,而模式、内模式只能各有一个。内模式是整个数据库实际存储的表示,而 模式 是整个数据库实际存储的抽象表示,外模式 是逻辑模式的某一部分的抽象表示。
数据库系统的三级模式是数据的三个抽象级别,它使用户能逻辑地处理数据,而不必关心数据在计算机内部的存储方式,把数据的具体组织交给DBMS管理。为了能够在内部实现这三个抽象层次的联系和转换,DBMS在三级模式之间提供了二级映像功能。正是这两级映像保证了数据库系统中的较高的数据独立性,即逻辑独立性与物理独立性。
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。数据库中的同一模式可以有任意多个外模式,对于每一个外模式,都存在一个外模式/模式映像。它确定了数据的局部逻辑结构与全局逻辑结构之间的对应关系。例如,在学生的逻辑结构(学号,姓名,性别)中添加新的属性“出生日期”时,学生的逻辑结构变为(学号,姓名,性别,出生日期),由数据库管理员对各个外模式/模式映像作相应改变,这一映像功能保证了数据的局部逻辑结构不变(即外模式保持不变)。由于应用程序是依据数据的局部逻辑结构编写的,所以应用程序不必修改,从而保证了数据与程序间的逻辑独立性。
数据库中的模式和内模式都只有一个,所以模式/内模式映像是唯一的。它确定了数据的全局逻辑结构与存储结构之间的对应关系。存储结构变化时,如采用了更先进的存储结构,由数据库管理员对模式/内模式映像作相应变化,使其模式仍保持不变,即把存储结构的变化影响限制在模式之下,这使数据的存储结构和存储方法较高地独立于应用程序,通过映像功能保证数据存储结构的变化不影响数据的全局逻辑结构的改变,从而不必修改应用程序,即确保了数据的物理独立性。
数据库系统的三级模式与二级映像使数据库系统具有以下优点。
将模式和内模式分开,保证了数据的物理独立性;将外模式和模式分开,保证了数据的逻辑独立性。
按照外模式编写应用程序或输入命令,而不需了解数据库内部的存储结构,方便用户使用系统。
在不同的外模式下可由多个用户共享系统中的数据,减少了数据冗余。
在外模式下根据要求进行操作,只能对限定的数据操作,保证了其他数据的安全。
从最终用户角度来看,数据库系统分为单用户结构、主从式结构、分布式结构以及建立在主从式和分布式结构基础上的客户机/服务器结构和浏览器/服务器结构。这是数据库系统的外部体系结构。
单用户结构的数据库系统又称桌面型数据库系统,其主要特点是将应用程序、DBMS 和 数据库都装在一台计算机上,由一个用户独占使用,不同计算机间不能共享数据。
DBMS提供较弱的数据库管理和较强的应用程序和界面开发工具,开发工具与数据库集成为一体,既是数据库管理工具,同时又是数据库应用程序和界面的前端工具。如:在Visual Foxpro 6.0
里就集成了开发工具,在Access 97
和Access 2000
里集成了支持脚本语言的开发工具等。
主从式结构的数据库系统是一个大型主机带多终端的多用户结构的系统。在这种结构中,将应用程序、DBMS和数据库都集中存放在一个大型主机上,所有处理任务由这个大型主机来完成,而连于主机上的终端,只是作为主机的输入/输出设备,各个用户通过主机的终端并发地存取和共享数据资源。而主机则通过分时的方式轮流为每个终端用户服务。在每个时刻,每个用户都感觉自己独占主机的全部资源。
主从式结构的主要优点是结构简单易干管理与维护。缺点是所有处理任务由主机完成,对主机
的性能要求较高。当终端数量太多时,主机的处理任务和数据吞吐任务过重,易形成瓶颈,使系统性能下降;另外,当主机遭受攻击而出现故障时,整个系统无法使用。因此,对主机的可靠性要求较高。
分布式结构的数据库系统是指数据库中的数据在逻辑上是一个整体,但在物理上却分布在计算机网络的不同结点上。它有以下主要特点。
(1)数据在物理上是分布的:数据库中的数据不集中存放在一台服务器上,而是分布在不同地域的服务器上,每台服务器被称为结点。
(2)所有数据在逻辑上是一个整体:数据库中的数据在物理上是分布的,但在逻辑上却互相关联,是相互联系的整体。
(3)结点上分布存储的数据相对独立:在普通用户看来,整个数据库系统仍然是集中的整体,用户不关心数据的分片存储,也不关心物理数据的具体分布,完全由网络数据库在分布式文件系统的支持下完成。
分布式数据库系统是分布式网络技术与数据库技术相结合的产物,是分布在计算机网络上的多个逻辑相关的数据库的集合。
这种数据库系统的优点是可以利用多台服务器并发地处理数据,从而提高计算型数据处理任务的效率。缺点是数据的分布式存储给数据处理任务的协调与维护带来困难。同时,当用户需要经常访问过程数据时,系统效率明显地受到网络流量的制约。
主从式结构的数据库系统中的主机和分布式结构的数据库系统中的结点机,既执行 DBMS 功能又执行应用程序。随着工作站功能的增强和广泛使用,人们在主从式和分布式结构的基础上,开始把 DBMS 的功能与应用程序分开,网络上某个(些)结点机专门用于执行 DBMS 的功能,完成数据的管理功能,称为数据库服务器,其他结点上的计算机安装 DBMS 的应用开发工具和相关数据库应用程序,称为客户机,这就是客户机/服务器结构 (Client/Server ,C/S) 的数据库系统,如图1-10所示。
在客户机服务器结构中,DBMS 和数据库存放于数据库服务器上,应用程序和相关开发工具存放于客户机上。客户机负责管理用户界面、接收用户数据、处理应用逻辑、生成数据库服务请求,将该请求发送给服务器,数据库服务器进行处理后,将处理结果返回给客户机,并将结果按一定格式显示给用户。因此,这种客户机/服务器模式,又称为富客户机(Rich Client)模式,是一种两层结构。
客户机/服务器结构的数据库系统的主要优点如下:
(1)网络运行效率大大提高,这主要因为服务器只将外理的结果返回到客户机,从而大大降低了网络上的数据传输量。
(2)应用程序的运行和计算处理工作由客户机完成。这样,既减少了与服务器不必要的通信开销,也减轻了服务器的处理工作,从而减轻了服务器的负载。
客户机/服务器结构的主要缺点是维护升级很不方便,需要在每个客户机上安装客户机程序,而且当应用程序修改后,就必须在所有安装应用程序的客户机上升级此应用程序。
浏览器/服务器结构(Browser/Server ,B/S)是针对客户机/服务器结构的不足而提出的。
在浏览器/服务器结构中,客户机端仅安装通用的浏览器软件,实现用户的输入/输出,而应用程序不安装在客户机端,而是安装在介于客户机和数据库服务器之间的另外一个称为应用服务器的服务器端,即将客户端运行的应用程序转移到应用服务器上,这样,应用服务器充当了客户机和数据库服务器的中介架起了用户界面与数据库之间的桥梁。因此,浏览器/服务器模式是瘦客户机(Thin Client)模式,是一种三层结构,如图1-11所示。
可见,浏览器/服务器(B/S)结构有效地克服了客户机/服务器(C/S)结构的不足,客户机只要能运行浏览器即可,其配置与维护也相对很容易。浏览器/服务器结构在 Internet中得到了最广泛的应用。此时,Web服务器即为应用服务器。
数据库管理系统(DBMS)是对数据进行管理的大型系统软件,它是数据库系统的核心组成部分。
用户在数据库系统中的一切操作,包括数据定义、查询、更新(包括插入、删除和修改)及各种控制,都是通过DBMS进行的。DBMS就是把抽象逻辑数据处理转换成计算机中的具体的物理数据的处理软件,这给用户带来很大的方便。
数据库管理系统的主要功能包括数据定义功能、数据操纵功能、数据库运行管理功能、数据库的建立和维护功能、数据通信接口及数据组织、存储和管理功能,如图1-12所示。
DBMS 提供数据定义语言(Data Define Language ,DDL),定义数据的模式、外模式和内模式三级模式结构,定义模式/内模式和外模式/模式二级映像,定义有关的约束条件。例如,为保证数据库安全而定义用户口令和存取权限,为保证正确语义而定义完整性规则等。再如,DBMS 提供的结构化查询语言(SQL)提供Create
、Drop
、Alter
等语句可分别用来建立、删除和修改数据库。
用DDL定义的各种模式需要通过相应的模式翻译程序转换为机器内部代码表示形式,保存在数据字典(Data Dictionary ,DD)(或称为系统目录)中。数据字典是 DBMS 存取数据的基本依据。因此,DBMS 中应包括 DDL 的编译程序。
DBMS 提供数据操纵语言(Data Manipulation Language ,DML)实现对数据库的基本操作,包括检索、更新(包括插入、修改和删除)等。因此,DBMS 也应包括 DML 的编译程序或解释程序。 DML 有两类:
(1)是自主型的或自含型的,这一类属于交互式命令语言,语法简单,可独立使用;
(2)是宿主型的,它把对数据库的存取语句嵌入在高级语言(如Fortran、Pascal、C等)中,不能单独使用。SQL就是DML的一种。
例如,DBMS 提供的结构化查询语言 SQL 提供查询语句(SELECT)、插入语句(INSERT)、修改语句(UPDATE)和删除语句(DELETE),可分别实现对数据库中数据记录的查询、插入、修改和删除等操作。
对数据库的运行进行管理是 DBMS 运行的核心部分。DBMS 通过对数据库的控制以确保数据正确有效和数据库系统的正常运行。DBMS 对数据库的控制主要通过四个方面实现:数据的安全性控制、数据的完整性控制、多用户环境下的数据并发性控制 和 数据库的恢复。
数据库的建立包括数据库的初始数据的装入与数据转换等,数据库的维护包括数据库的转储恢复、重组织与重构造、系统性能监视与分析等。这些功能分别由 DBMS 的各个实用程序来完成。
DBMS 提供与其他软件系统进行通信的功能。一般 DBMS 提供了与其他 DBMS 或文件系统的接口,从而使该 DBMS 能够将数据转换为另一个 DBMS 或文件系统能够接受的格式,或者可接收其他 DBMS 或文件系统的数据、实现用户程序 与 DBMS 、DBMS 与 DBMS 、DBMS 与文件系统之间的通信。通常这些功能要与操作系统协调完成。
DBMS 负责对数据库中需要存放的各种数据(如数据字典、用户数据、存取路径等)的组织、存储和管理工作,确定以何种文件结构和存取方式物理地组织这些数据,以提高存储空间利用率和对数据库进行增、删、查、改的效率。
DBMS 是由许多程序所组成的一个大型软件系统,每个程序都有自己的功能,共同完成 DBMS 的一个或几个工作。一个完整的 DBMS 通常应由语言编译处理程序、系统运行控制程序及系统建立、维护程序和数据字典的部分组成,如图1-13所示。
语言编译处理程序包括以下两个程序。
(1)数据定义语言DDL编译程序。它把用DDL编写的各级源模式编译成各级目标模式。这些目标模式是对数据库结构信息的描述,它们被保存在数据字典中,供以后数据操纵或数据控制时使用。
(2)数据操纵语言DML编译程序。它将应用程序中的DML语句转换成可执行程序,实现对数据库的检索、插入、删除和修改等基本操作。
DBMS 提供了一系列的运行控制程序,负责数据库系统运行过程中的控制与管理,主要包括以下几部分。
系统总控程序:用于控制和协调各程序的活动,它是 DBMS 运行程序的核心。安全性控制程序:防止未被授权的用户存取数据库中的数据。
完整性控制程序:检查完整性约束条件,确保进入数据库中的数据的正确性、有效性和相容性。
并发控制程序:协调多用户、多任务环境下各应用程序对数据库的并发操作,保证数据的一致性。
数据存取和更新程序:实施对数据库数据的检索、插入、修改和删除等操作。
通信控制程序:实现用户程序与 DBMS 间的通信。
此外, DBMS 还有文件读写与维护程序、缓冲区管理程序、存取路径管理程序、事务管理程序、运行日志管理程序等。所有这些程序在数据库系统运行过程中协同操作,监视着对数据库的所有操作,控制、管理数据库资源等。
系统建立、维护程序主要包括以下几部分。
装配程序:完成初始数据库的数据装入。
重组程序:当数据库系统性能降低时(如查询速度变慢)需要重新组织数据库,重新装入数据。
系统恢复程序:当数据库系统受到破坏时,将数据库系统恢复到以前某个正确的状态。
数据字典(Data Dictionary ,DD)用来描述数据库中有关信息的数据目录,包括数据库的三级模式、数据类型、用户名和用户权限等有关数据库系统的信息,起着系统状态的目录表的作用,帮助用户、DBA 和 DBMS 本身使用和管理数据库。
在数据库系统中,DBMS与操作系统、应用程序、硬件等协同工作,共同完成数据各种存取操作,其中DBMS起着关键的作用,对数据库的一切操作,都要通过DBMS 完成。
DBMS对数据的存取通常需要以下几个步骤。
(1)用户使用某种特定的数据操作语言向DBMS发出存取请求。
(2)DBMS接受请求并将该请求解释转换成机器代码指令。
(3)DBMS依次检查外模式、外模式/模式映像、模式、模式/内模式映像及存储结构定义。
(4)DBMS对存储数据库执行必要的存取操作。
(5)从对数据库的存取操作中接受结果。
(6)对得到的结果进行必要的处理,如格式转换等。
(7)将处理的结果返回给用户。
上述存取过程中还包括安全性控制、完整性控制,以确保数据的正确性、有效性和一致性。 DBMS 的工作方式如图1-14所示。