当前位置:首页 > 培训职业 > 正文

什么是关系数据库的完整性

数据库完整性(Database Integrity)是指数据库中数据的准确性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可通过DBMS或应用程式来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计环节进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者)。数据库完整性对于数据库应用系统(System)非常关键,其作用主要体目前以下多个方面:

1.数据库完整性约束能够防止合法用户用数据库时向数据库中增加不合语义的数据。

2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可降低应用程式的复杂性,提高应用程式的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程式更容易实现数据库的完整性。

3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统(System)的效能。假如装载大量数据时,只需要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。

4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的不准确。

数据库完整性约束可分为6类:列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。动态约束通常由应用软件来实现。不相同DBMS支持的数据库完整性基本相同,Oracle支持的基于DBMS的完整性约束同下表所示:

数据库完整性设计示例

1个好的数据库完整性设计首先要要在要要分析阶段确定要通过数据库完整性约束实现的业务规则,之后在充分了解特定DBMS提供的完整性控制机制的基础上,依据整个系统(System)的体系结构和性能要要,遵照数据库设计方法和应用软件设计方法,合理选取每一个业务规则的实现方式;最后,认真测试,排除隐含的约束冲突和性能问题。基于DBMS的数据库完整性设计大体分为以下多个阶段:

1.要要分析阶段

经过系统(System)分析员、数据库分析员、用户的共同努力,确定系统(System)模型中应当包含的对象,如人事及工资管理系统(System)中的部门、员工、经理等,以及各种业务规则。

在完成寻找业务规则的工作之后,确定要作为数据库完整性的业务规则,并对业务规则进行分类。其中作为数据库模式一部分的完整性设计按下边的过程进行。而由应用软件来实现的数据库完整性设计将按照软件工程的方法进行。

2.概念结构设计阶段

概念结构设计阶段是将依据要要分析的结果转换成1个独立于具体DBMS的概念模型,即实体关系图(ERD)。在概念结构设计阶段就要“开始”数据库完整性设计的实质阶段,由于此阶段的实体关系将在逻辑结构设计阶段转化为实体完整性约束和参照完整性约束,到逻辑结构设计阶段将完成设计的主要工作。

3.逻辑结构设计阶段

此阶段就是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化,包括对关系模型的规范化。此时,依据DBMS提供的完整性约束机制,对尚未加入逻辑结构中的完整性约束列表,逐条选取合适的方式加以实现。

在逻辑结构设计阶段结束时,作为数据库模式一部分的完整性设计也就基本完成了。每种业务规则都可能有好几种实现方式,应当选取对数据库性能影响最小的一种,有时要通过实际测试来决定。

数据库完整性设计原则

在实施数据库完整性设计的时候,有多个基本的原则要要把握:

1.根据数据库完整性约束的类型确定其实现的系统(System)层次和方式,并提前考虑对系统(System)性能的影响。一般情形下,静态约束应尽量包含在数据库模式中,而动态约束由应用程式实现。

2.实体完整性约束、参照完整性约束是关系数据库最重要的完整性约束,在不影响系统(System)关键性能的前提下要尽量应用。用一定的时间和空间来换取系统(System)的易用性是值得的。

3.要慎用目前主流DBMS都支持的触发器功能,一方面由于触发器的性能开销较大,另一方面,触发器的多级触发不好控制,容易发生不准确,非用不可时,最好使Before型语句级触发器。

4.在要要分析阶段就必须制定完整性约束的命名规范,尽量用有意义的英文单词、缩写词、表名、列名及下划线等组合,使其易于识别和记忆,如:CKC_EMP_REAL_INCOME_EMPLOYEE、PK_EMPLOYEE、CKT_EMPLOYEE。假如用CASE工具,一般有缺省的规则,可在此基础上修改用。

5.要根据业务规则对数据库完整性进行细致的测试,以尽早排除隐含的完整性约束间的冲突和对性能的影响。

6.要有专职的数据库设计小组,自始至终负责数据库的分析、设计、测试、实施及早期维护。数据库设计人员不仅负责基于DBMS的数据库完整性约束的设计实现,还要负责对应用软件实现的数据库完整性约束进行审核。

7.应采用合适的CASE工具来降低数据库

多重随机标签

猜你喜欢文章