1.1 数据库的基础知识
在日常工作中,需要处理的数据量往往都很大,为便于计算机对其进行有效的处理,我们可以将采集的数据存放在建立于磁盘和光盘等外存媒介的“库”中,该“库”就是数据库。数据集中存放在数据库中,便于对其进行处理,提炼出对决策有用的数据和信息。这就像一个工厂生产出产品要先存放在仓库中一样,既便于管理,又便于分期分批地销售;一个学校采购大量的图书存放在图书馆(书库),供学生借阅。因此,数据库就是在计算机存储器中用于存储数据的仓库。
与货仓、书库需要管理员和一套管理制度一样,数据库的管理也需要一个管理系统,该管理系统就称为数据库管理系统(Data Base Management System,DBMS)。以数据库为核心,并对其进行管理的计算机系统称为数据库系统。
1.1.1 数据库的产生
数据管理的发展经历了人工管理、文件系统到数据库系统3个阶段。
在人工管理阶段,由于没有软件系统对数据进行管理和计算机硬件的限制,数据的管理是靠人工进行的,而计算机只能对数据进行计算。当时对数据处理的过程是先将程序和数据输入计算机,运行结束后,再将结果输出,由人工保存,计算机并不存储数据。
20世纪50年代后期到60年代中期,由于计算机外存得到发展,软件又有了操作系统,便对数据管理产生了文件系统。在文件系统阶段是按照数据文件的形式来存放数据的,在一个文件中包含若干个“记录”,一个记录又包含若干个“数据项”,用户通过对文件的访问实现对记录的存取。这种数据管理方式称为文件管理系统。文件管理系统的一个致命的不足是数据的管理没有实现结构化组织,数据与数据之间没有联系,文件与文件之间没有有机的联系,数据不能脱离建立其数据文件的程序,从而也使文件管理系统中的数据独立性和一致性较差,冗余度大,限制了大量数据的共享和有效的应用。
20世纪60年代末期,随着计算机技术的发展,为了克服文件管理系统的缺点,人们对文件系统进行了扩充,研制了一种结构化的数据组织和处理方式,即数据库系统。数据库系统建立了数据与数据之间的有机联系,实现了统一、集中及独立地管理数据,使数据的存取独立于
使用数据的程序,实现了数据的共享。
1.1.2 数据库的特征
数据库技术在20世纪60年代后期发展起来以后,在计算机应用中得到了迅速的发展。目前,已经成为信息管理的最新和最重要的技术。数据库有以下明显的特点。
● 数据结构化。数据库中的数据不再像文件系统中的数据那样从属特定的应用,而是按照某种数据模型组织成为一个结构化的数据整体。它不仅描述了数据本身的特性,而且描述了数据与数据之间的各种联系,这使数据库具备了复杂的内部组织结构。
● 实现数据共享。这是数据库技术先进性的重要体现,由于数据库中的数据实现了按某种数据模型组织为一个结构化的数据,实现了多个应用程序、多种语言及多个用户能够共享一个库中的数据,甚至在一个单位或更大的范围内共享,大大提高了数据的利用率,提高了工作效率。
● 减少数据冗余度。在数据库技术之前,许多应用系统都需要建立各自的数据文件,即使相同的数据也都需要在各自的系统中保留,造成大量的数据重复存储,这一现象称为数据的冗余。由于数据库实现了数据共享,减少了存储数据的重复,节省了存储空间,减少了数据冗余。
● 数据独立性。数据库技术中的数据与程序相互独立,互不依赖,不因一方的改变而改变另一方,这大大简化了应用程序设计与维护的工作量,同时数据也不会随程序的结束而消失,可长期保留在计算机系统中。
1.1.3 数据库的组成
一个数据库由一组数据表组成。表中的每行称为记录,每列称为字段。表是一组彼此相关的记录的组合。例如,有一张包含公司中每位员工信息的表。一个记录里有公司一名员工的姓名、地址和薪水等数据。一个字段(或者说一列)是一个记录中一个单独的数据。例如,一名员工的姓名或地址。
如表1-1所示就是一个典型的数据表的例子,从中可以清楚地看到每个人的信息就是一条记录,而诸如姓名、地址和年龄等信息称为字段。通过记录和字段的对应我们可以得到唯一的数据值。
表1-1 数据库示例表
此外,数据库中还存在着许多由表衍生出来的对象,如视图和索引等,这些对象对于数据库的管理和维护起到了不可或缺的作用。
1.1.4 数据库的管理系统
前面已经提到数据库系统是一种用来管理信息列表的手段。这些信息可来自不同的地方。例如,它可以代表研究数据、业务记录、顾客请求、运动数据统计、销售报告、个人爱好信息、人事记录、问题报告或学生成绩等。
数据库系统的力量在组织和管理的信息很庞大或很复杂,用手工处理极为繁重时能够充分地体现出来。当然,每天处理数百万个业务的大公司可以使用数据库。但是,即使只涉及个人爱好的单一人员维护信息的小公司也可能会需要数据库。不难想象由于在信息变得难于管理之前,使用了数据库而带来的好处。
通常利用数据库管理系统来处理诸如人们用文件柜来完成的那样一类任务。在某种意义上来说,数据库就像一个大文件柜,只不过是一个内建的文件编排系统而已。电子化处理记录相对手工处理记录有很多优点。
● 减少记录编档时间。只要将记录放入文件编排系统,并令文件编排系统为用户将该记录放入正确的位置即可。
● 减少记录检索时间。在查找记录时,不需要自己去查看每个记录以找到含有所需信息的那个记录。
● 灵活的查找序列。不需要按记录存放的固定序列去查看它们(例如,按姓氏查找)。可以要求文件编排系统以任意的序列查出记录,如按姓、保险公司名和最后光临日期等提出记录。
● 灵活的输出格式。在查找到感兴趣的记录后,不需要手工复制其信息。可以让文件编排系统为用户生成一份清单。可以将用户感兴趣的信息打印输出。
● 多个用户同时访问记录。对某一记录,如果两个人想同时查找一个记录,那么其中一个人必须等另一个人查找完才能查找。提供多个用户同时查找的能力,从而两个人可同时访问记录。
数据库服务器是解决信息管理的主要工具。一般情况下,服务器必须在多用户环境中管理大量的数据,使多个用户能够并行访问数据。所有这些必须能够在高性能的情况下完成,数据库服务器必须防止未经授权的非法访问,保护敏感数据,同时为故障恢复提供解决方案。
1.1.5 关系数据库
下面阐述关系数据库的产生历史和它的一些术语,并讲解关系数据库的一般特性。
1.关系数据库的产生历史
数据处理是现代计算机应用中的一个重要组成部分。数据处理是指对各种形式的数据进行分类、组织、编码、存储、检索和维护的一系列活动的总和。其目的是从大量的、原始的数据中抽取、推导出对人们有价值的信息以作为行动和决策的依据;也是为了借助计算机科学地保存和管理复杂的大量数据,以便人们能方便而充分地利用这些宝贵的信息资源。
数据处理随着计算机硬件和软件的发展而不断发展。前面已经提到了多年来数据处理经历了3 个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。数据库系统又经历了相应的3个阶段。但是自从IBM公司系统提出关系数据库的概念以来,数据库系统的发展向前迈进了一大步,自此以后出现了众多的关系型数据库系统产品,如微软的SQL Server、IBM的DB2、SYSBASE及本书要介绍的Oracle等。
2.关系数据库的定义
关系型数据库是指一些相关的表和其他数据库对象的集合。该定义表达了三部分含义。第一,在关系数据库中,信息被存放在二维表格结构的表(table)中,一个关系数据库包含多个数据表,每一个表又包含行(记录)和列(字段)。可以将表想象为一个电子表格,其中与行对应的是记录,与列对应的是字段。第二,这些表之间是相互关联的。表之间的这种关联性是由主键和外键所体现的参照关系实现的。第三,数据库不仅包含表,而且包含了其他数据库对象,如视图、存储过程和索引等。
关键字(key)是关系模型中的一个重要概念。它是一个逻辑结构,不是数据库的物理结构。它分为主关键字和外部关键字两种。
主关键字(primary key)是指表中的某一列,该列的值唯一标识一行。
主关键字实施实体完整性,即每一个主关键字的值必须唯一,而且不允许为NULL或重复。外部关键字(foreign key)是指表中含有与另一个表的主关键字相对应的列组,那么该列组称为外关键字。从该定义可以看出,外部关键字也是由一个或多个列组成。
在关系数据库中,表之间的联系是通过相同的列或列组来表示的,如果两个表中具有相同的列或列组,那么该列或列组就被称为这两个表的公共关键字(common key)。如果公共关键字是其中一个表的主关键字,那么该公共关键字在另一个表中称为外部关键字。
外部关键字的作用是实现参照完整性。以下为创建外部关键字的优点。
● 提供了表之间的连接;
● 根据主关键字的列值来检查,参照该主关键字的列值以确定其合法性;
● 保证了列的每个值都是一个有效的值而实施参照完整性。
3.关系数据库系统的特点
RMDBS(关系型数据库系统)的特点如下。
● 数据完整性:所有RDBMS都使用SQL或它的变体控制包含在任意数据库中的数据。RDBMS必须要保证数据的完整性。换句话说,任何关系型数据库需要保证(如果多个表中的数据被更新)所有的数据都更新。例如,假设一个邮局交费系统中有两张表,一张是您的交费账,另一张是您的未交费账。您每月支付电话费时,邮局会自动在交费账上加上您的数额,再从未交费账上减去相应的数额。但是如果当加上数额后,邮局停电了,将会发生什么?有了数据完整性,当服务器加电后,会发现加法已经完成,而减法还没有进行,那么,已经完成的一切都将取消。
● 数据存储和数据安全:多数RDBMS坚持把实际数据和业务逻辑区分开,以确保数据库中的数据可以保持持久状态。多数情况下,用户只想在数据库中存储数据。许多RDBMS通过使用压缩算法将冗余数据删去的方式存储数据。这样并不意味着数据丢失了,只是占用更少的存储空间。每个RDBMS都为所管理的数据库提供了某种安全措施。这通常通过某种登录过程来实现。
4.关系型数据库的功能
目前流行的DBMS有很多品种,不同的DBMS提供的功能各有侧重,但一般都提供以下6个方面的功能。
(1)数据库定义
为了提高数据库的独立性,DBMS把数据库从逻辑上分为3个层次,即面向数据库用户的外层(用户数据库),由DBMS管理的概念层(概念数据库)及内部层(存储数据库)。用户看到的只是外层,而数据实际上是按内部层的结构存储的,它是通过概念层二级抽象(或称映像)而来的。DBMS的数据库定义功能不但提供了用户数据库、概念数据库和存储数据库三级数据的定义,而且还提供了从用户数据库到概念数据库的映像和从概念数据库到存储数据库的映像功能。数据库定义一般都由DBMS以数据定义语言(Data Definition Language,DDL)的形式提供给用户。数据库用户利用DDL定义用户数据库结构,建立所需要的数据库,同时由DBMS自动翻译为存储数据库。存储数据库独立于一般数据库用户,数据库用户也可以不必过问存储数据库的实际模型。
(2)数据操纵
DBMS提供数据操纵语言(Data Manipulation Language,DML)实现对数据库数据的操纵。数据操纵包括对数据库的数据进行查询(检索和统计)和更新(增加、删除与修改)等基本操作。
(3)数据库的运行与控制
DBMS提供的运行与控制功能保证所有访问数据库操作在控制程序的统一管理下,检查安全性、完整性和一致性,保证多用户对数据库的并发使用。这一功能对用户是隐蔽的。
(4)数据库的建立与维护
DBMS提供实用程序来完成数据库初始数据输入与数据转换等,完成数据库数据的转储、恢复、重组织、系统性能监视与分析等。
(5)数据字典
DBMS将所定义的数据库按一定的形式分类编目,对数据库中有关信息进行描述,以帮助数据库用户使用和管理数据库。这一功能称为数据字典功能。
(6)数据通信
DBMS提供数据通信功能,实现DBMS与用户程序及其之间的通信。
著名的SQL(Structured Query Language)就是被国际标准化组织(ISO)公布的,集数据定义、数据操纵和数据控制为一体的标准数据库语言。目前许多成熟的DBMS产品都集成了以上多项功能,同时还提供一套应用程序开发工具。如本书所介绍的Oracle就是集多项功能为一体,同时嵌入SQL,并提供了一套应用程序开发工具的DBMS产品。
5.常见的关系型数据库简介
目前市面上流行的数据库管理系统有很多,下面对它们进行简要介绍。
(1)Oracle
Oracle是当今最大的数据库公司Oracle(甲骨文)公司的数据库产品。它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出与数据库结合的第四代语言开发工具的数据库产品。
它采用标准的SQL结构化查询语言,支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、VMS、Windows/NT和OS/2等多种平台。Oracle公司的软件产品主要由三个部分组成,包括Oracle服务器产品、Oracle开发工具和Oracle应用软件。Oracle提供的最新基于微机的数据库产品为Oracle 11g。
Oracle产品早在1986年就已进入中国市场,国内的许多行业和部门的管理信息系统的开发都选用了Oracle。
(2)DB2
DB2是IBM公司的一个基于SQL的关系型数据库产品,它起源于早期的实验系统System R。
20世纪80年代初,DB2的发展重点在大型主机平台上。从80年代到90年代初,DB2已发展到中、小型机及微机平台。现在的DB2已能够适用于各种硬件和软件平台(如UNIX、VMS、Windows/NT和OS/2等)。DB2在金融系统中应用较多。
DB2 Universal Database Personal Edition是为OS/2和Windows系统的单用户提供的数据库管理系统。DB2 Universal Database Workgroup Edition是为OS/2和Windows系统的多用户提供的数据库管理系统。
(3)Sybase
Sybase是由1984 年成立的美国数据库厂商Sybase公司推出的系统数据库(System Database,Sybase),Sybase公司是较早采用客户/服务器技术的数据库厂商。Sybase可以运行在UNIX、VMS、Windows/NT和Netware等操作系统平台上,它支持标准的关系数据库语言SQL,使用客户/服务器模式,采用了开放的体系结构,能够实现网络环境下各节点上的数据库的互访操作。Sybase还拥有十分著名的数据库应用开发工具PowerBuilder,能够快速地开发出基于客户/服务器的图形化数据库应用程序。目前Sybase数据库软件产品是市场上比较受欢迎的数据库产品之一。
Sybase数据库主要由服务器软件Sybase SQL Server、客户软件Sybase SQL Toolset和接口软件Sybase Client/Server Interface三类软件产品组成。其中服务器软件Sybase SQL Server中的Sybase SQL Anywhere是Sybase数据库管理系统的单机版本,是专为个人用户或者工作组设计的一个完备的、小型化的关系数据库管理系统。它具有客户/服务器结构、完全的事务处理和SQL功能,可以胜任小型应用系统数据管理。
Sybase于1991年进入我国,其产品目前已在许多行业和部门得到很好的应用。
(4)SQL Server
Microsoft SQL Server是一个Windows NT服务器上使用的、支持客户/服务器结构的数据库管理系统。SQL Server是Microsoft公司从Sybase公司购买技术而开发的产品,它与Sybase的数据库完全兼容。SQL Server与Windows NT的有机结合,可以充分地利用Windows NT的优势,性能价格比高。Microsoft SQL Server不提供直接的客户开发平台和工具,只提供了两个接口,即Microsoft开放式数据库连接(ODBC)和DB-Library。
ODBC接口允许网络客户在多种平台上使用第三方产品,如Access、Visual Basic、Visual C++和FoxPro等,向服务器发出SQL请求,访问数据库中的数据。ODBC能够在不同的数据库环境中为客户/服务器结构的客户提供访问异构数据库(如Oracle和Sybase等)接口。ODBC提供了一个开放的和标准的能够访问微机、工作站、小型机和大型机数据库的方法,使用ODBC接口的编程者可以不用深入了解所访问的数据库系统,只需知道数据库、表和有关字段即可。
DB-Library通过C语言API,提供与SQL Server直接连接的接口。