首页 理论教育数据库管理技术-数据库技术与应用教程

数据库管理技术-数据库技术与应用教程

【摘要】:从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。

自20世纪60年代后期以来,计算机管理数据的规模越来越大,应用范围越来越广泛,数据量急剧增加,同时多种应用同时共享数据集合的要求也越来越强烈。

随着大容量磁盘的出现,硬件价格的不断下降,软件价格的不断上升,编制和维护系统软件和应用程序的成本相应地不断增加。在数据处理方式上,对联机实时处理的要求越来越多,同时开始提出和考虑分布式处理技术。在这种背景下,以文件方式管理数据已经不能满足应用的需求,于是出现了新的管理数据的技术——数据库技术,同时出现了统一管理数据的专门软件——数据库管理系统。

从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。在有了数据库管理系统之后,人们对数据的操作模式也发生了根本的变化,现在人们对数据的操作全部是通过数据库管理系统实现的,而且应用程序的编写也不再直接针对存放数据的文件。有了数据库技术和数据库管理系统之后,人们对数据的操作模式发生了根本的变化,如图1-3所示。

比较图1-1和图1-3,可以看到主要区别有两个:第一个区别是在操作系统和用户应用程序之间增加了一个系统软件——数据库管理系统,使得用户对数据的操作都是通过数据库管理系统实现的;第二个区别是有了数据库管理系统之后,用户不再需要有数据文件的概念,即不再需要知道数据文件的逻辑和物理结构及物理存储位置,而只需要知道存放数据的场所——数据库。

图1—3 数据库管理的操作模式

从本质上讲,即使在有了数据库技术之后,数据最终还是以文件的形式存储在磁盘上的,只是这时对物理数据文件的存取和管理是由数据库管理系统统一实现的,而不是由每个用户的应用程序编程实现。数据库和数据文件既有区别又有联系,它们之间的关系非常类似于单位的名称和地址之间的关系。单位地址代表了单位的实际存在位置,单位名称是单位的逻辑代表。而且一个数据库可以包含多个数据文件,就像一个单位可以有多个不同的地址一样(我们现在的很多大学,都是一个学校有多个校址),每个数据文件存储数据库的部分数据。不管一个数据库包含多少个数据文件,对用户来说他只针对数据库进行操作,而无须对数据文件进行操作。这种模式极大地简化了用户对数据的访问。

在有了数据库技术之后,用户只需要知道数据库的名字,就可以对数据库对应的数据文件中的数据进行操作。将对数据库的操作转换为对物理数据文件的操作是由数据库管理系统自动实现的,用户不需要知道,也不需要干预。

对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。

图1—4 数据库管理实现示例

与文件管理相比,数据库管理具有以下特点。

(1)相互关联的数据集合。在数据库系统中,所有相关的数据都存储在一个称为数据库的环境中,它们作为一个整体定义。比如,学生基本信息中的“学号”与学生选课管理中的“学号”,这两个学号之间是有关联关系的,即学生选课中的“学号”的取值范围在学生基本信息的‘学号’取值范围内。在关系数据库中,数据之间的关联关系是通过定义外键实现的。

(2)较少的数据冗余。由于数据是统一管理的,因此可以从全局着眼,合理地组织数据。例如,将1.1.1小节中文件F1、F2和F3的重复数据挑选出来,进行合理的管理,这样就可以形成如下所示的几部分信息。

学生基本信息:学号、姓名、性别、出生日期、联系电话、所在系、专业、班号。

课程基本信息:课程号、课程名、授课学期、学分、课程性质。(www.chuimin.cn)

学生选课信息:学号、课程号、修课类型、修课时间、考试成绩。

在关系数据库中,可以将每一类信息存储在一个表中,重复的信息只存储一份,当在学生选课中需要学生的姓名等其他信息时,根据学生选课中的学号,可以很容易地在学生基本信息中找到此学号对应的姓名等信息。因此,消除数据的重复存储不影响对信息的提取,同时还可以避免由于数据重复存储而造成的数据不一致问题。比如,当某个学生所学的专业发生变化时,只需在“学生基本信息”的相应地方进行修改即可。

同1.1.1小节中的问题一样,当所需的信息来自不同地方,比如(班号,学号,姓名,课程名,学分,考试成绩)信息,这些信息需要从3个地方(关系数据库为3张表)得到,在这种情况下,也需要对信息进行适当的组合,即学生选课中的学号只能与学生基本信息中学号相同的信息组合在一起,同样,学生选课中的课程号也必须与课程基本信息中的课程号相同的信息组合在一起。过去在文件管理方式中,这个工作是由开发者编程实现的,而现在有了数据库管理系统,这些烦琐的工作完全交给了数据库管理系统来完成。

因此,在数据库管理系统中,避免数据冗余不会增加开发者的负担。在关系数据库中,避免数据冗余是通过关系规范化理论实现的。

(3)程序与数据相互独立。在数据库中,数据所包含的所有数据项以及数据的存储格式都与数据存储在一起,它们通过DBMS而不是应用程序来操作和管理,应用程序不再需要处理文件和记录的格式。

程序与数据相互独立有两方面的含义。一方面是当数据的存储方式发生变化时(这里包括逻辑存储方式和物理存储方式),比如从链表结构改为散列表结构,或者是顺序和非顺序之间的转换,应用程序不必做任何修改;另一方面当数据的逻辑结构发生变化时,比如增加或减少了一些数据项,如果应用程序与这些修改的数据项无关,则不用修改应用程序。这些变化都将由DBMS负责维护,在大多数情况下,应用程序并不知道也无须知道数据存储方式或数据项已经发生了变化。

在关系数据库中,数据库管理系统可以自动保证程序与数据相互独立。

(4)保证数据的安全和可靠。数据库技术能够保证数据库中的数据是安全和可靠的。它的安全控制机制可以有效地防止数据库中的数据被非法使用和非法修改;其完整的备份和恢复机制可以保证当数据遭到破坏时(由软件或硬件故障引起的)能够很快地将数据库恢复到正确的状态,并使数据不丢失或只有很少的丢失,从而保证系统能够连续、可靠地运行。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。

(5)最大限度地保证数据的正确性。数据的正确性(也称为数据的完整性)是指存储到数据库中的数据必须符合现实世界的实际情况,比如人的性别只能是“男”和“女”,人的年龄应该在0~150(假设没有年龄超过150岁的人)。如果在性别中输入了其他值,或者将一个负数输入年龄中,在现实世界中显然是不对的。数据的正确性是通过在数据库中建立约束来实现的。当建立好保证数据正确的约束之后,如果有不符合约束的数据存储到数据库中,数据库管理系统能主动拒绝这些数据。

(6)数据可以共享并能保证数据的一致性。数据库中的数据可以被多个用户共享,即允许多个用户同时操作相同的数据。当然,这个特点是针对支持多用户的大型数据库管理系统而言的,对于只支持单用户的小型数据库管理系统(比如Access),在任何时候最多只有一个用户访问数据库,因此不存在共享的问题。

多用户共享问题是数据库管理系统内部解决的问题,它对用户是不可见的。这就要求数据库能够对多个用户进行协调,保证多个用户之间对数据的操作不会产生矛盾和冲突,即在多个用户同时使用数据库时,能够保证数据的一致性和正确性。设想一下火车订票系统,如果多个订票点同时对某一天的同一列火车进行订票,那么必须保证不同订票点订出票的座位不能重复。

数据可共享并能保证共享数据的一致性是由数据库管理系统的并发控制机制实现的。

到今天,数据库技术已经发展成为一门比较成熟的技术,通过上述讨论,我们可以概括出数据库具备如下特征:数据库是相互关联的数据的集合,它用综合的方法组织数据,具有较小的数据冗余,可供多个用户共享,具有较高的数据独立性,具有安全控制机制,能够保证数据的安全、可靠,允许并发地使用数据库,能有效、及时地处理数据,并能保证数据的一致性和正确性。

需要强调的是,所有这些特征并不是数据库中的数据固有的,而是靠数据库管理系统提供和保证的。