1.2 数据库系统概述
数据库系统是指在计算机系统中引入数据库后的系统,通常由计算机硬件、软件、数据库和数据用户组成。
1.2.1 数据库系统的构成
数据库系统(Database System,DBS)的组成和体系结构如下所述。
1.基本组成
(1)硬件系统(Hardware System,HWS)。数据库系统的硬件平台具有满足数据库需求的存储、计算、通信和服务能力,为数据库的持续发展提供保障。大型数据库系统的环境一般是由超级数据服务器系统为核心的海量数据存储、处理和服务搭建的。
(2)操作系统(Operating System,OS)。数据库系统的一个关键因素是正确选择操作系统,即根据数据库系统的硬件平台、数据库的处理和安全需求选择相适应的操作系统。当前在数据库系统中比较流行和较为常用的操作系统有Windows、UNIX和Linux等。
(3)数据库(Database,DB)。数据库是指长期保存在计算机的存储设备上,按照某种数据模型组织起来的、可以被各种用户或应用共享的数据集合。本章1.2.3节将介绍数据库的体系结构。
(4)数据库管理系统(Database Management System,DBMS)。数据库管理系统是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。本章1.2.2节将进一步介绍DBMS的功能与产品。
(5)数据库应用系统(Database Application System,DBAS)。在数据库领域内,常常把使用数据库的各类系统称为数据库应用系统。
数据库应用系统通常提供可视化操作界面,以供终端用户进行日常数据处理工作。例如,企事业单位的财务管理系统和人力资源管理系统、学校的教务管理系统、图书馆的图书管理系统、民航和铁路的售票系统、企业资源计划ERP等。
(6)数据库应用系统的开发工具(Development Tools)。数据库应用系统的开发主要分为数据库设计和应用程序设计两个方面。
对于数据库设计,主要采用规范设计法与辅助的数据建模工具进行,常用的工具软件有Power Designer、ERWin、ER/Studio Data Architect和Office Visio等(详见第2章)。
对于应用程序设计,DBMS提供SQL(结构化查询语言),可以使用交互命令或者服务器编程方式实现对数据库的应用,还可以将SQL嵌入在各种高级语言中实现对数据库的访问。其中,SQL Server 2012 T-SQL(符合SQL标准)的应用是本书要介绍的重点内容。
对于常用的程序设计语言Java、C#、VB.NET和Power Builder等,动态网页技术JSP、ASP.NET和PHP等,数据访问接口JDBC、ADO.NET和ODBC等内容超出本书的范畴,将不做介绍。
(7)数据库用户(Database User)。数据库系统中通常包括四种类型的用户,分别是数据库管理员、数据库分析师、应用程序员和终端用户,这些用户均是我们将来可能面向的职业岗位。其中,数据库分析师和应用程序员是软件公司数据库开发岗位上的工作人员,数据库管理员和终端用户是企事业单位信息管理部门和各应用部门岗位上的工作人员。
数据库管理员(Database Administrator,DBA):DBA负责整个数据库系统的建立、管理、运行、维护和监控等系统性工作,以及用户登记、存取数据的权限分配等服务性工作。DBA 必须具有计算机及数据库方面的专业知识,还要对整个计算机软硬件系统的构成,特别是要对所采用的数据库管理系统(DBMS)比较熟悉。通常数据库管理员由经验丰富的计算机专业人员担任。
数据库设计师/分析师(Database Designer/Analyst,DBD):根据数据库在某一方面的应用,同相关业务人员一起进行系统需求分析,根据数据库设计理论与方法,借助数据建模工具(如Power Designer等)建立概念数据模型和逻辑数据模型,搜集和整理数据,使用数据库管理系统的数据库定义语言或操作界面建立相应的数据库。
应用程序员(Application Programmer):根据数据库设计和用户的功能需求,利用Java、C#、VB.NET或Power Builder等程序设计语言开发出功能完善、操作简便、满足用户需求的数据库应用系统,供终端用户使用。应用程序员既要掌握数据库方面的知识,又要精通至少一种程序设计语言,同时还要了解数据库应用系统相关部门的业务流程。
终端用户(End User):使用数据库应用系统的最广泛群体,是数据库为之服务的对象。如学校学籍管理员、银行出纳员、窗口售票员、企业销售员、仓库管理员和住宿登记员等都是相应数据库系统的终端用户。他们通过已经开发好的数据库应用系统,利用含有菜单、按钮和对话框等各种控件的可视化窗口,就能够方便自如地使用数据库,开展业务工作。终端用户通常为仅熟悉本身业务工作的非计算机专业的人员。
2.数据库系统的体系结构
数据库系统的体系结构主要有集中式(单用户、多用户)、客户机/服务器、浏览器/服务器、分布和并行等形式的系统。常用结构形式简单介绍如下。
(1)单用户即个人计算机(Personal Computer,PC)系统。当DBMS在PC上运行时, PC起到宿主机的作用,同时也起到了终端的作用。与大型系统不同,这类DBMS(如VFP、Access)自带简易的程序开发工具,功能灵活、系统结构简洁、运行速度快。但这类 DBMS的数据共享性、安全性和完整性等控制功能比较薄弱,只能用于简单的、数据量小和用户少的数据库应用系统。
(2)客户机/服务器(Client/Server,C/S)系统。客户机/服务器系统是常用的一种分布式计算模式,其优势在于广泛地采用了网络技术,将系统中的各部分任务分配给分布在网络上担任不同角色的计算机。把较复杂的计算和管理任务交给网络上的高档计算机——服务器(Server),而把一些频繁与用户打交道的任务交给较简单的计算机——客户机(Client),从而实现了网络信息资源的共享。
在最简化的情况下,客户机/服务器体系具有一个客户层和一个服务器层,前端是客户机,通过应用程序界面与用户进行信息交互,通过应用程序代码进行数据处理和报告请求(Request)等。后端是服务器,具有多个用户共享的信息与功能,如管理共享外设、控制对共享数据库的操作、接受并应答(Result)客户机的请求等。两层C/S结构如图1-3所示。
另外,还有三层C/S结构,在该结构中,前端的客户机仅负责通过应用程序界面与用户进行信息交互,而由位于客户端和服务器之间的应用服务器(Application Server,APP Server)的中间层(Middle Tier)完成数据处理和报告请求(Request)等,后端的数据服务器仍然负责数据处理等功能。此模式中,客户端为“瘦”客户端(Thin Client),因而每个节点很容易维护。中间层体系结构的设计能优化服务器性能,因为它分担了服务器的一些功能和负荷,使服务器实现负载均衡。三层C/S结构如图1-4所示。
图1-3 两层C/S
图1-4 三层C/S结构
(3)浏览器/服务器(Browser/Server,B/S)系统。随着互联网(Internet)的应用越来越广泛,浏览器/服务器(Browser/Server,B/S)体系结构应运而生并获得飞速发展,成为众多厂家争相采用的新型体系结构。本质上,B/S结构也是一种C/S结构,它是一种由传统的二层C/S结构发展而来的,是三层C/S结构在Web上应用的特例。三层B/S结构如图1-5所示。
图1-5 三层B/S结构
B/S体系结构与C/S体系结构相比不仅具有C/S体系结构的优点,而且有开放的标准、较低的开发和维护成本、使用简单、界面友好和系统安全等优势。客户端只要使用通用浏览器即可,维护和升级工作都在服务器端进行,不需要对客户端进行任何改变,故而大大降低了开发和维护成本。
在三层B/S结构中,位于中间层的Web服务器(Web Server)处于非常重要的地位。它不但负担系统的事务处理逻辑以生成结果数据,而且要负责结果数据的显示格式。它的核心就是具有很强的动态数据的生成和发布能力。目前,支持动态Web的技术主要有CGI、JSP、ASP.NET和Servlet等。
1.2.2 数据库管理系统简介
1.数据库管理系统的功能
DBMS 提供多种功能,可使多个应用程序和用户用不同的方法定义和操作数据,维护数据的完整性和安全性,进行多用户下的并发控制和恢复数据库等。DBMS 主要有以下几个方面的功能。
(1)数据定义功能。DBMS提供数据定义语言(Data Definition Language,DDL),以实现对数据库三级结构(详见第1.2.3节)的描述,包括定义数据的完整性约束、保密限制等约束。
(2)数据操作功能。DBMS提供数据操作语言(Data Manipulation Language,DML),以实现对数据的操作。基本的数据操作有两类:修改(插入、删除数据行以及更新数据)与检索(查询)。
(3)数据控制功能。DBMS提供数据控制语言(Data Control Language,DCL),以实现对数据库的运行控制。对数据库的保护主要通过以下5个方面实现。
数据完整性的控制。保证数据库中数据及语义的正确性和有效性,防止任何造成数据错误的操作。
数据安全性的控制。防止未经授权的用户存取数据库中的数据,以避免数据的泄露、更改或破坏。
数据库的恢复。在数据库一旦被破坏或数据不正确时,系统有能力把数据库恢复到正确的状态。
数据库的维护。包括数据库的数据载入、转换、转储以及数据库的改组和性能监控等功能。
数据库的并发控制。在多个用户同时对同一个数据进行操作时,系统应能加以控制,防止破坏数据库中的数据。
(4)数据字典。DBMS自动建立和维护数据字典(Data Dictionary,DD),用于存放有关数据的数据(元数据),供DBMS和用户使用。数据库三级模式结构的定义均自动保存在数据字典中,如表、视图和索引的定义以及用户的权限等。此外,数据字典还自动存放来自系统的状态和数据库的统计信息,如数据库和磁盘的映射关系以及数据使用频率的统计等。
2.数据库管理系统的产品
基于关系模型(见第1.3.3节)的数据库管理系统现已日臻完善,商品化的关系型数据库管理系统(Relational Database Management System,RDBMS)软件已经广泛应用于各行各业。
主要的RDBMS产品有甲骨文公司的Oracle、IBM公司的DB2和微软的SQL Server。此外,常用的RDBMS产品还有由瑞典的My SQL AB公司开发的My SQL(目前属于Oracle 旗下)、IBM公司的Informix、Sybase公司的Sybase和微软的Access等。所有这些产品本身也随着技术的进步不断更新版本。
SQL Server 2012是微软2012年3月发布的SQL Server升级产品,是一个全面的、集成的、端到端的数据解决方案,它为企业提供了一个安全可靠和高效的关系型数据库管理系统平台。
本书将以SQL Server 2012为平台介绍数据库开发与维护的基本方法与技术,读者可参考第4章的内容下载并安装SQL Server 2012企业评估版,熟悉其组件与操作界面,使用其管理平台(SQL Server Management Studio,SSMS)进行简单操作。
随着新型数据模型及数据管理实现技术的推进,可以预期各种DBMS产品的性能还将不断更新与完善,应用领域也将得到进一步拓宽。
1.2.3 数据库的体系结构
数据库在计算机系统中是由DBMS专用软件管理的,为了使数据库具有数据独立性(不因数据库逻辑结构和存储结构的改变而需要修改应用程序),为了降低系统维护的代价和提高系统的可靠性,DBMS 通常把数据库体系结构建立为三级模式结构和二级存储映像。数据库体系结构、数据库对象和SQL的DDL(数据定义语言)的关系如图1-6所示。
图1-6 数据库的体系结构
1.数据库的三级模式结构
(1)内模式。内模式也被称为物理结构、存储模式或物理模式,是对数据的物理结构和存储方式的描述。它是数据库中全体数据的内部表示或底层描述,是三级模式结构的最底层。内模式对应着实际存储在外存储介质上的数据库(DATABASE),通常以文件形式存在。内模式反映数据库的存储观。
DBMS提供描述内模式的定义语言。例如,CREATE DATABASE。
(2)模式。模式也被称为整体逻辑结构、逻辑模式或全局模式,是对数据的全体数据逻辑结构和特征的描述。它是现实世界某个应用环境(企事业单位)的所有信息内容集合的表示,是三级模式结构的中间层,是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是所有用户的公共数据视图。通常通过建立数据模型和表(TABLE)的方法来抽象、表示和处理现实世界中的数据和信息。模式反映数据库的整体观。
DBMS提供描述模式的定义语言。例如,CREATE TABLE。
(3)外模式。外模式也被称为局部逻辑结构、用户模式或子模式,是对数据库用户看到并允许使用的局部数据的逻辑结构和特征的描述,是三级结构的最外层。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据,是数据库用户的数据视图(VIEW),是保护数据库安全的一个有力措施。外模式反映数据库的用户观。
DBMS提供描述子模式的定义语言。例如,CREATE VIEW。
2.数据库的二级存储映像
数据库的三级模式是对数据的三个抽象层次,它把数据的具体组织留给DBMS管理,使用户能逻辑、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。为了能够在内部实现这三个抽象层次的联系和转换,DBMS在这三级模式之间提供了两层映像。
(1)外模式/模式映像。当数据库的整体逻辑结构发生变化时,DBMS通过调整外模式和模式之间的映像,使得外模式中的局部数据及其结构(定义)不变,程序不用修改,从而确保了数据的逻辑独立性。
(2)模式/内模式。当数据库的存储结构发生变化时,DBMS通过调整模式和内模式之间的映像,使得整体模式不变,当然外模式及应用程序也不用改变,从而实现了数据的物理独立性。