DBMS
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。
图书管理员在查找一本书时,首先要通过目录检索找到那本书的分类号和书号,然后在书库找到那一类书的书架,并在那个书架上按照书号的大小次序查找,这样很快就能找到我所需要的书。 数据库里的数据像图书馆里的图书一样,也要让人能够很方便地找到才行。
如果所有的书都不按规则,胡乱堆在各个书架上,那么借书的人根本就没有办法找到他们想要的书。同样的道理,如果把很多数据胡乱地堆放在一起,让人无法查找,这种数据集合也不能称为"数据库"。
数据库管理系统就是从图书馆的管理方法改进而来的。人们将越来越多的资料存入计算机中,并通过一些编制好的计算机程序对这些资料进行管理,这些程序后来就被称为"数据库管理系统",它们可以帮我们管理输入到计算机中的大量数据,就像图书馆的管理员。
按功能划分,数据库管理系统大致可分为6个部分:
(1)模式翻译:提供数据定义语言(DDL)。用它书写的数据库模式被翻译为内部表示。数据库的逻辑结构、完整性约束和物理储存结构保存在内部的数据字典中。数据库的各种数据操作(如查找、修改、插入和删除等)和数据库的维护管理都是以数据库模式为依据的。
(2)应用程序的编译:把包含着访问数据库语句的应用程序,编译成在DBMS支持下可运行的目标程序。
(3)交互式查询:提供易使用的交互式查询语言,如SQL。DBMS负责执行查询命令,并将查询结果显示在屏幕上。
(4)数据的组织与存取:提供数据在外围储存设备上的物理组织与存取方法。
(5)事务运行管理:提供事务运行管理及运行日志,事务运行的安全性监控和数据完整性检查,事务的并发控制及系统恢复等功能。
(6)数据库的维护:为数据库管理员提供软件支持,包括数据安全控制、完整性保障、数据库备份、数据库重组以及性能监控等维护工具。
基于关系模型的数据库管理系统已日臻完善,并已作为商品化软件广泛应用于各行各业。它在各户服务器结构的分布式多用户环境中的应用,使数据库系统的应用进一步扩展。随着新型数据模型及数据管理的实现技术的推进,可以预期DBMS软件的性能还将更新和完善,应用领域也将进一步地拓宽。
数据库管理系统(DBMS)是为了适应信息化社会对数据管理技术的需求,在近十多年来迅速发展起来的一门新兴学科。
计算机数据管理技术大致经历了三个发展阶段:
自由管理阶段
用户以文件形式将数据组织起来,并附属在各自的应用程序下。
文件管理阶段
操作系统中的文件系统给出了统一的文件结构和共同存取的方法,用户可以把数据和信息作为文件长期地保存在计算机系统中,并可以方便地进行查询和处理。
数据库管理阶段
为了适应大量数据的集中存储,并提供给多个用户共享的要求,使数据与程序完全独立,最大限度地减少数据的冗余度,出现了数据库管理系统。
著名数据库管理系统
MS SQL
SYBASE
DB2
ORACLE
MySQL
ACCESS
VF
它所提供的功能有以下几项:
(1)、数据定义功能。
(2)、数据管理功能。
(3)、对数据库进行保护。
(4)、数据库的建立和维护。
(5)、数据库的传输。
y)是指数据库中数据的正确性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者)。数据库完整性对于数据库应用系统非常关键,其作用主要体现在以下几个方面:
1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。
2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。
3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。
4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。
数据库完整性约束可分为6类:列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。动态约束通常由应用软件来实现。不同DBMS支持的数据库完整性基本相同,Oracle支持的基于DBMS的完整性约束如下表所示:
数据库完整性设计示例
一个好的数据库完整性设计首先需要在需求分析阶段确定要通过数据库完整性约束实现的业务规则,然后在充分了解特定DBMS提供的完整性控制机制的基础上,依据整个系统的体系结构和性能要求,遵照数据库设计方法和应用软件设计方法,合理选择每个业务规则的实现方式;最后,认真测试,排除隐含的约束冲突和性能问题。基于DBMS的数据库完整性设计大体分为以下几个阶段:
1.需求分析阶段
经过系统分析员、数据库分析员、用户的共同努力,确定系统模型中应该包含的对象,如人事及工资管理系统中的部门、员工、经理等,以及各种业务规则。
在完成寻找业务规则的工作之后,确定要作为数据库完整性的业务规则,并对业务规则进行分类。其中作为数据库模式一部分的完整性设计按下面的过程进行。而由应用软件来实现的数据库完整性设计将按照软件工程的方法进行。
2.概念结构设计阶段
概念结构设计阶段是将依据需求分析的结果转换成一个独立于具体DBMS的概念模型,即实体关系图(ERD)。在概念结构设计阶段就要开始数据库完整性设计的实质阶段,因为此阶段的实体关系将在逻辑结构设计阶段转化为实体完整性约束和参照完整性约束,到逻辑结构设计阶段将完成设计的主要工作。
3.逻辑结构设计阶段
此阶段就是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化,包括对关系模型的规范化。此时,依据DBMS提供的完整性约束机制,对尚未加入逻辑结构中的完整性约束列表,逐条选择合适的方式加以实现。
在逻辑结构设计阶段结束时,作为数据库模式一部分的完整性设计也就基本完成了。每种业务规则都可能有好几种实现方式,应该选择对数据库性能影响最小的一种,有时需通过实际测试来决定。
数据库完整性设计原则
在实施数据库完整性设计的时候,有一些基本的原则需要把握:
1.根据数据库完整性约束的类型确定其实现的系统层次和方式,并提前考虑对系统性能的影响。一般情况下,静态约束应尽量包含在数据库模式中,而动态约束由应用程序实现。
2.实体完整性约束、参照完整性约束是关系数据库最重要的完整性约束,在不影响系统关键性能的前提下需尽量应用。用一定的时间和空间来换取系统的易用性是值得的。
3.要慎用目前主流DBMS都支持的触发器功能,一方面由于触发器的性能开销较大,另一方面,触发器的多级触发不好控制,容易发生错误,非用不可时,最好使用Before型语句级触发器。
4.在需求分析阶段就必须制定完整性约束的命名规范,尽量使用有意义的英文单词、缩写词、表名、列名及下划线等组合,使其易于识别和记忆,如:CKC_EMP_REAL_INCOME_EMPLOYEE、PK_EMPLOYEE、CKT_EMPLOYEE。如果使用CASE工具,一般有缺省的规则,可在此基础上修改使用。
5.要根据业务规则对数据库完整性进行细致的测试,以尽早排除隐含的完整性约束间的冲突和对性能的影响。
6.要有专职的数据库设计小组,自始至终负责数据库的分析、设计、测试、实施及早期维护。数据库设计人员不仅负责基于DBMS的数据库完整性约束的设计实现,还要负责对应用软件实现的数据库完整性约束进行审核。
7.应采用合适的CASE工具来降低数据库设计各阶段的工作量。好的CASE工具能够支持整个数据库的生命周期,这将使数据库设计人员的工作效率得到很大提高,同时也容易与用户沟通。