程录庆 (南京人口管理干部学院信息科学系,江苏 南京210042)
在数据库技术日益成熟的背景下,人们越来越多地关注数据质量的提高,对于一个企业管理信息系统,数据质量的低下可能制约企业的发展。错误、冗余、不一致的数据将导致市场动作的低效率,影响企业的客户关系,误导企业的战略决策。数据库系统是一个具有相当复杂性质的系统,而且又是一个和工作人员的工作质量、使用人员的实际需求密切相关的系统。作为现代化的信息社会的产物之一,数据库系统的质量综合评价相当复杂,涉及很多内容,如系统的可靠性、兼容性、安全性、经济性、先进性,系统的功能完备性、系统的响应及时性、用户操作方便性及数据结构合理性,还有数据本身的质量特性:完整性、规范性、稳定性等[1]。其中最重要的还是系统中数据本身的质量,它影响着系统的其他各项性能。
对于质量这一概念的描述中有一个较为流行的说法是:“质量是一组固有特性满足要求的程度[2]。”数据约束是客观世界的数据所应遵循的语义限制,是客观存在于数据中的规律,是数据的固有特性。所以,正确认识和处理好这种客观存在于数据中的规律对于数据库系统的质量影响重大。据笔者观察,很多实际应用的数据库系统由于不重视本行业数据应有的规律而造成数据结构松散、系统质量的低下,有个很明显的现象:一些数据库系统建设之初由于数据量较少,系统的各方面性能都很好,然而过了若干时期 (几年或十几年),数据容量成倍增加,导致系统性能的下降,甚至变得不可用。这一方面和系统硬件有关,然而根本问题还是在数据的组织与管理质量不佳。质量问题会是将来数据库系统研究的新领域。下面,笔者从数据结构设计、数据修复、数据的输入、数据查询等几个方面讨论数据约束对数据库系统质量的影响。
数据约束,狭义地,也称完整性约束,是客观世界的数据所应遵循的语义限制,对于商业系统中的数据来讲,这种语义限制就是领域知识和业务规则。具体的商业规则限定了数据的属性值应符合其所反映现实的上下文 (context)。例如,一个企业的客户关系数据库可能有这样的规则:①一个新的客户在第一次购买时享有15%的折扣;而一个VIP客户在任何时候购买任何产品享有25%的折扣;②一个地址为美国的客户,“街道”、“城市”、“州”字段确定 “邮政编码”。反映到数据库上来,就是对数据取值的约束,违反规则的数据就是脏数据[3]。
现实的此类对数据约束的规则可能较为复杂,有些约束是在整个数据库范围内成立的,有普遍性;有些是在某个局部数据集内成立;有些是需要满足特定条件才成立;还可能存在规则之间的相互矛盾情况 (如条件函数依赖自身的不一致)。数据建模的一个重要任务是将数据库所描述的对象所提供的关于数据的上下文语义 (contextual semantic)表达成规范而系统的数据约束。目前,这种数据约束的表达形式主要是数据依赖 (data dependency),随着研究的深入,将会出现更多形式的数据约束表达。
自1971年美国IBM公司研究员CODD E.F.创新地提出关系数据模型以来,这种存储和处理数据的模式得到极大限度的应用,在数据库应用领域占有统治地位。数据依赖是应用关系模型的出发点,CODD自己提出了函数依赖 (FD,functional dependency)和包含依赖 (IND,inclusion dependency),不久,Fagin和Zaniolo又提出了多值依赖 (MD,Multivalued Dependencies),此后,各种数据依赖的概念相继提出,其中较有影响的应属于Rissanen和Aho等人提出的连接依赖 (JD,JoinDependency),Fagin、Maher M J和 Srivastava D提出的受限生成元组依赖 (CTGD,Const rained Tuple-Generating Dependencies)等。上述基于关系模型的数据依赖都是上个世纪提出的,均可采用统一的如下形式的一阶谓词描述[4]:
2007年,英国爱丁堡大学樊文飞教授等提出条件函数依赖 (CFD,conditional function dependency)和条件包含依赖 (CIND,conditional inclusion dependency)[5,6],通过条件表的约束增强函数依赖和包含依赖对实际语义的表达能力,并象经典函数依赖一样,对其推理规则及完备性作了系统的研究和证明。条件函数依赖一经提出,受到数据库研究者的广泛关注,被认为将在数据清洗、提高数据质量上产生极大影响。2009年,胡艳丽等提出内置谓词 (built-in predicates)函数依赖[7],ChenWenguang等提出内置谓词条件依赖[8],这两者分别是对函数依赖和条件函数依赖的扩展研究。
除了数据依赖,也有应用人工智能中的语义表 (semantic tableau)来表达数据约束的,同样也用于数据库的数据修复,如文献 [9]提到的方法。不过,这种数据约束表达方法的完备性有待证明。当然,数据约束的表达还包括不能表达成上述数据依赖的数据约束,但可以其他条件表达式表达,如这样一类约束:薪水表中的奖金一项不能大于基本工资一项。
可以对如上所述的数据约束作一个简单的分类:第1类是传统的数据依赖,这类数据约束是在整个数据库范围内成立的,如函数依赖、多值依赖、连接依赖和包含依赖等,称之为Ⅰ类约束;第2类是传统数据依赖在一定条件下成立,即在局部的数据集内成立,如条件函数依赖、条件包含依赖和内置谓词函数依赖等,称之为Ⅱ类约束;第3类为不能表达成前2类的数据约束,如一些特殊规则,称之为Ⅲ类约束。
Ⅰ类约束通常是在整个数据库范围内成立的数据规则,它决定了数据库结构的设计。以关系数据模型为例,理想性质的关系数据模式是通过对原始的泛关系依据关系数据理论进行模式分解得到。这一过程会运用到关系模式的求码、范式判断、分解以及分解后无损依赖和无损连接的判断等技术,这些技术都是环环紧扣的,重要的是,这些技术的运用都是以关系属性间的数据依赖 (这里指的是Ⅰ类约束)为前题的,所以,正确分析属性数据间应遵循的约束是设计优良关系模式的第一步,这个分析搞错了,以下的步骤就毫无意义了[10]。
Ⅰ类约束是面向数据库全局的,所以影响的是数据的全局结构。数据约束是反映客观数据所蕴含的语义的,建立数据库的目的是要准确地映射客观事实,只有遵循数据约束规则的数据结构才是自然的,科学的,有效的。对于其他的数据模型,也是一样,只有尊重数据的固有特性,其设计的结构才是合理的;否则,只能是别扭的、质量低下的。
Ⅱ类约束,是Ⅰ类约束在某个条件下成立的约束形式,面向的是局部的数据集。目前研究得最多的是条件函数依赖 (conditional function dependency),条件函数依赖 (CFD)是在一定条件下成立的函数依赖,这对传统的函数依赖 (FD)表示数据约束是一个极大的扩展。首先,传统的FD对数据的约束是全局的,而CFD是表达一定条件下数据的约束,是局部的,可以说,在这一点上,CFD比FD对数据约束的表达要精细得多,这也使得CFD更适应新的数据库技术要求,如数据集成。另外,与传统的数据依赖主要用于数据库的结构设计不同,CFD则可广泛用于数据的自动清洗和数据修复[11]。为提高数据的质量,数据库的拥有者会雇佣大量的人力通过手工的方式来作数据库系统的数据修复,而CFD这种新的数据约束表达方式的出现提供了利用计算机程序自动完成数据清洗和数据修复工作的可行方法。值得注意的是,条件函数依赖本身也存在不一致的问题,即CFD本身是 “脏”的。CFD表达的是数据库应遵循的一套完整性约束,其本源还是反映数据库拥有者所制定的业务规则和领域知识,也就是说,CFD是不一致的,则必然是业务规则存在相互矛盾的地方,这时要作出修改的是业务规则本身。
输入到数据库中的数据应该是满足约束的数据,否则,数据进入系统就是垃圾,所以将数据约束转化成数据输入系统的条件控制就很重要了。一般商用的数据库系统软件提供多种工具可供用于数据输入的控制,如SQL SERVER提供的关键字、非空、约束、规则、触发器、存储过程等,合理的利用这些工具将数据在客观世界中受到的约束表达成相应的计算机程序,进而控制数据的入库,使系统中的数据是一致的、完整的。数据输入的质量对数据库系统的质量有重要影响。
无论怎么控制数据的输入,数据库总会因为各种原因产生导致数据与其应受到的约束不符,这些原因可能是:①DBMS系统没有统一的维护约束的机制;②加入了新的约束;③原有的约束是 “软”的,只在查询时间考虑;④基于中间件的不同数据源的集成。很多情况下,对于这些不一致的数据进行清洗并不适合,如在数据虚拟集成的情况下,作数据修复可能导致虽然不一致但有用的数据丢失。此外,还考虑一个因素就是此时数据库中绝大部分的数据还是一致的,只有少部分不一致。这种情形下,可以根据现有约束进行查询重写 (query reformulation),以从不一致的源数据中获得符合约束的一致性查询结果。这一方法也称为一致性查询应答 (CQA,consistent query answering)[12]。掌握查询重写技术有利于数据库系统的工作人员和使用人员在操作数据库时避免对数据库的破坏。
数据库系统的任务在于将宏观的信息转化为计算机存储的形式,将人处理信息的模式转化为计算机处理模式。然而,这种转化并不是简单的物理的或逻辑的一个映射,毕竟宏观世界和机器世界是如此的不同,对于人来讲,一个简单的信息规则,到了机器领域可能就是一个复杂的数据约束表达。找出计算机表达和处理数据的规律,是提高数据质量的根本之道。提高数据库质量是数据库技术发展到今天的一个必然选择,也是研究的热点。笔者讨论了数据约束对数据库质量的几个方面的影响,数据约束分析是数据库结构设计的基础,也是进行数据录入、修复和一致性查询应答的依据。下一步的研究将考虑是否能在数据库系统质量综合评价体系中引入数据约束符合程度作为一个指标,研究其可行性和对数据库质量评价的意义。
[1]徐罗丁.建立数据库系统的综合评价体系 [J].情报探索,1995(6):6-8.
[2]宋敏,覃正.国外数据质量管理研究综述 [J].情报杂志,2007(2):7-9.
[3]Fei Chiang,Ren'ee J Miller.Discovering Data Quality Rules [A].Very Large DataBase Endowment(VLDB'08)[C].ACM Press,2008:24-30.
[4]胡艳丽,张维明,罗旭辉,等.基于数据依赖的数据修复研究进展 [J].计算机科学,2009(10):11-14.
[5]Bohannon P,Fan W,Geerts F,et al.Conditional functional dependencies for data cleaning [A].The 23rd International Conference on Database Engineering(ICDE)[C].IEEE,2007:746-755.
[6]Cong Gao,Fan Wenfei,Geerts Floris,et al.Improving Data Quality:Consistency and Accuracy [A].Very Large DataBase Endowment(VLDB'07)[C].ACM Press,2008:23-28.
[7]胡艳丽,张维明,肖卫东,等.内置谓词函数依赖及其推理规则 [J].国防科技大学学报,2009(5):58-63.
[8]Chen Wenguang,Fan Wenfei,Ma Shuai.Analyses and Validation of Conditional Dependencies with Built-in Predicates [A].Proceedings of the 20th International Conference on Database and Expert Systems Applications (C).Springer,2009:576-591.
[9]刘全,伏玉琛,凌兴宏.一种基于语义tableau的数据库修正方法 [J].计算机科学,2006(6):901-904.
[10]程录庆,张智光.关系数据库设计中的数据依赖确定与语义分析 [J].计算机与现代化,2008(12):164-168.
[11]Fan Wenfei,Geerts Floris,Jia Xibei,et al.Conditional Functional Dependencies for Capturing Data Inconsistencies [A].ACM Transactions on Database Systems [C].ACM Press,2008:1-44.
[12]Arenas M,Bertossi L,Chomicki J.Consistent Query Answers in Inconsistent Databases [A].ACM Symposium on Principles of Database Systems(PODS)[C].ACM Press,1999:68-79.