数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

数据库完整性设计


发布日期:2021年04月09日
 
数据库完整性设计

在充分了解数据库完整性各种控制机制的基础上确定要通过数据库完整性约束实现的业务规则然后依据整个系统的体系结构和性能要求合理选择各个业务规则的实现方式最后进行测试解决约束沖突和性能瓶颈这是数据库完整性设计的一个完整流程

随着计算机技术的发展和普及数据库系统的应用越来越广泛数据库在计算机系统中的地位日益凸显出来一个好的数据库应用系统需要一个好的数据库设计而数据库完整性设计作为数据库设计的一个重要组成部分直接影响到数据库系统能否真实地反映现实世界因此设计实施和维护数据库完整性的重要性不言而喻

数据库总体上可分为网状数据库层次数据库和关系数据库其中以关系数据库最为成熟关系数据库不仅具有管理大型数据的能力良好的性能和稳定性还有较为完备的数据完整性在实际应用中最为广泛本文以关系数据库为例说明数据库完整性设计问题下文中的数据库均指关系数据库

数据库完整性概述

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

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

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

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

.在应用软件的功能测试中完善的数据库完整性有助于尽早发现应用软件的错误

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

数据库完整性设计示例

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

.需求分析阶段

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

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

.概念结构设计阶段

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

.逻辑结构设计阶段

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

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

数据库完整性设计原则

在实施数据库完整性设计的时候有一些基本的原则需要把握

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

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

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

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

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

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

.应采用合适的CASE工具来降低数据库设计各阶段的工作量好的CASE工具能够支持整个数据库的生命周期这将使数据库设计人员的工作效率得到很大提高同时也容易与用户沟通

上一篇:与数据库无关的处理放到数据库以外来实现

下一篇:利用dbmsbackuprestore恢复数据库