首页 理论教育分布式数据库技术:完整性约束的作用和问题解决方案

分布式数据库技术:完整性约束的作用和问题解决方案

【摘要】:一般来说,语义完整性约束以规则形式呈现出来,用来表达应用性质方面的知识。行为性约束则与应用行为相关。所以,它们都应属于数据库设计阶段应考虑的问题,它们可以表达对象间的相关性,如关系模型中的对象依赖性。说明性方法和关系模型结合起来,缓解了程序依赖和数据依赖的问题、代码冗余的问题和过程性方法性能较差的问题。强制推广完整性断语的开销大,原因是它要求大量的数据存取。

一般来说,语义完整性约束以规则形式呈现出来,用来表达应用性质方面的知识。它们定义了数据模型无法在对象和操作层面表述的静态和动态性质。所以,完整性规则的概念紧紧地与数据模型关联,以表达更多的语义信息。

我们应当区分两类不同的完整性约束:结构性约束(structural constraints)和行为性约束(behavioral constraints)。结构性约束用于表达数据模型固有的基本语义性质。例如,关系数据模型有唯一键的约束,网络数据模型有一对多的约束,等等。行为性约束则与应用行为相关。所以,它们都应属于数据库设计阶段应考虑的问题,它们可以表达对象间的相关性,如关系模型中的对象依赖性。随着数据库应用和数据库设计辅助工具的发展,要求更强大的完整性约束来丰富数据模型。

完整性控制是伴随数据处理一起出现的,是从过程性方法(其中,控制嵌套在应用程序里)延伸出来的,使之变成一种说明性方法(declarative methods)。说明性方法和关系模型结合起来,缓解了程序依赖和数据依赖的问题、代码冗余的问题和过程性方法性能较差的问题。(www.chuimin.cn)

支持自动语义完整性控制遇到的主要问题是,检查断语的开销非常高。强制推广完整性断语的开销大,原因是它要求大量的数据存取。在分布式数据库系统中,这个问题更严重。

实际上,学术界已经作了大量的研究,探索如何结合各种优化算法设计完整性子系统。其目的为:①限制所需的完整性断语的数目;②减少当一个更新程序出现时所需强加指定断语的数据访问;③定义预防策略防止undo更新时出现不一致性;④尽可能地在编译时完成更多的完整性控制。现在,有些解决方案已经实现,但是否具有普遍性值得考虑。有的只能支持较小的断语集,有的只能支持有限的程序(如单元组更新)。