数据一致行模型的设计与实现.pdf

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2001年12月湖北邮电技术Dec.20012001年第4期HubeiPost&TelecommunicationsTechnologyConsecutiveNo.60数据一致性模型的设计与实现杜毅迪(湖北省通信工程规划设计所,湖北武汉430023)摘要:论述了建立数据一致性处理模型的设计思想,解析出实现数据一致性的理论基础,并结合计算机系统开发工具,给出了基于应用层的数据一致性处理模型的实现方法,以及在实际系统中的具体应用。关键词:数据库技术;关系模型;一致性;数据库管理系统中图分类号:TP311.132.3文献标识码:A文章编号:1007-1148(2001)04-0024-061前言随着计算机科学技术和通信技术的迅猛发展,越来越多的企事业单位对事务管理和业务管理中的繁杂数据都采用计算机进行处理。计算机科学技术能迅速普及,数据库技术起了非常重要的作用,数据库技术是研究如何科学地组织和存储数据,如何高效地检索数据和进行数据处理的一门学科,它是当代信息管理系统的基础。数据库理论和技术在近10年得到了广泛的应用,几乎所有的信息管理系统都以数据库为中心,数据库技术已成为信息管理系统中最成熟的技术。数据库应用系统中所使用的数据可按多种方式进行组织,通常以数据库组织方式划分数据模型,面向数据库管理系统的数据模型主要有关系数据模型、层次数据模型、网状数据模型等几种。以关系数据模型为基础的关系数据库,利用关系来描述现实世界,以二维表来表示对象之间的联系,由一个记录记载一个实体的有关信息,记录之间一般采用顺序存储结构。目前,关系数据库以其坚实的理论依据和出色的成功应用而成为数据库领域发展的主流,在企业管理、情报检索、辅助决策等方面有着极为广泛的应用。近年来,几乎所有新推出的数据库管理系统(DBMS)都是关系型的。随着企事业环境的不断变化,企事业管理的事物越来越复杂,因此,人们对数据库技术的要求也就越来越高;同时,随着关系数据库技术的广泛应用,人们也开始发现关系数据库的一些限制和不足,于是又推动了数据库技术新一轮的研究。研究从两方收稿日期:2001-08-10面进行:一是改造和扩充关系数据库,以适应新的应用要求;二是进行新的数据模型的研究,例如对基于逻辑的数据模型、面向对象的数据模型等进行研究。由于关系数据库的重要地位及在企业管理方面的广泛应用,因此,在进行新的数据库模型研究探讨的同时,加强对关系型数据库的进一步研究仍是数据库技术的一个热门课题。如何保证数据库应用系统中数据的完整性,并且使各数据项之间的结构不受破坏以确保其数据的一致性是目前数据库技术领域研究的重要课题。笔者在长期的计算机应用系统研发过程中,结合相关的计算机数据库理论,在数据库系统的应用层建立一个适合于计算机处理的数据一致性处理模型,并取得了实用性成果。2设计思想在关系数据库中,把满足以下条件的表称为关系:(1)每一列数据是同意义的,其解释是相同的;(2)每一列只能是一项基本数据,而不允许出现组合型数据,即不允许某一列由两项或两项以上的数据构成;(3)表中列的排列次序不影响表的含义;(4)在表中除了排序原因以外,行的次序是无关的。表中的一行称为一个元组;表中的一列称为一个属性。在以下的叙述中,所提到的表即指的是满足以上条件的表。数据库应用系统中的数据存放在多个二维表中,彼此并不是独立存在的,数据与数据之间具有和客观世界相对应的逻辑关联性,人们在构造一个关系型数据库的时候,通过ER模型和数据定义语言第4期杜毅迪:数据一致性模型的设计与实现25(DDL),事实上是定义了这种关联性的具体内容,那么也就是给出了一套抽象的逻辑规则,它要求所有的通过数据操作语言(DML)来进行的数据更新(包括插入数据、修改数据、删除数据),在数据更新过程中要接受上述逻辑关联性的制约,除此之外,由于客观对象实体特征的复杂性,对其状态的描述往往需要由多个数据来共同完成,而当状态发生改变的时候,对有关的多个数据的修正在逻辑上是一个不可分割的整体,必须在操作过程中受到保护。这说明如何确保表内部和表之间的数据一致性,直接影响着系统对数据的管理和使用,是衡量一个应用系统质量优劣的重要标志。数据库管理系统强制执行的在结构上的数据关联性是指数据与数据之间在逻辑上的关联性。比如,关系中的每一个元组都应由键来唯一标识,而当某个关系中的属性或属性集合是另一关系的键的一部分时,对其中一者的元组进行写操作将要受到与另一者在逻辑关联性上的制约。假定一个数据库具有关系R1,R2,…,Rn,对每一个关系Ri,插入元组集合的Ri(对有的I,Ri可能为空)。E是一个含有笛卡尔积、并、选择、投影(*,U,@,∏)操作的关系代数表达式,E是那些在Ri插入之前不在E中,而在插入之后新出现的所有元组的集合。单调操作遵循如下的规则:(1)如果E是常量关系,则E=空;(2)如果E是一个关系变量,则E=ΔRi;(3)如果E=@f(Ei),则E=@空(ΔEi);(4)如果E=∏(E1),则E=∏(ΔEi);(5)如果E=E1∪E2,则E=ΔE1∪E2;(6)如果E=E1*E2,则E=(ΔE1*E2)∪(ΔE1*E2)∪(E1*E2)。目前,由于大多数的数据库管理系统的数据一致性的约束检查机制都比较薄弱,因此,对数据一致性约束的检查,大都是通过用户自己定义的程序模块,在进行数据操作时由系统提供的事件触发机制来调用,从而获得实现的。现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体之间的联系都是用关系来描述的,这样就自然存在着关系与关系间的引用。对数据库应用系统中有关联属性的数据进行分析,解析出其内在的联系,设计科学的算法,使其对应数据保持一致,不仅可以提高系统的工作效率,还可以避免数据的不一致而造成系统混乱。本文着重对数据库中表和表之间的具有结构上相关联的数据一致性问题加以探讨与研究,给出一种基于数据库应用系统应用层的数据一致性的处理模型及实现方法。在阐述数据一致性处理模型的设计思想和实现方法之前,先给出以下定义:定义1.主码主码(key)即二维表中的某个属性组,它可以唯一确定一个元组,主码不能取空值。定义2.属性集·集元素属性集是指要讨论的应用系统数据库中全部表的所有属性所组成的集合R(A1,A2,…,Am,B1,B2,…,Bn,F1,F2,…,Fp),其中A1,A2,…,Am为表A的所有属性,B1,B2,…,Bn为表B的所有属性,F1,F2,…,Fp为表F的所有属性。称A1,…,B1,…,F1,…,Fp为集元素。定义3.关联属性若表A中的某属性Ai可由属性集中的其他表的某些属性表示出来Ai=f(R1,R2,…,Rn),称属性Ai和属性(R1,R2,…,Rn)是有关联的。定义4.主表·从表若表B和表A之间存在着属性的引用,即表B引用了表A的主码Az(Az也是表A的属性,见定义1)等属性,则表B的那些引用了表A的属性取值需要参照对应表A的属性取值。称表A为表B的主表,表B为表A的从表。在具体的应用系统中,一个主表可以有多个从表;一个从表也可以有多个主表。定义5.数据一致性指数据库应用系统中主表和从表之间,关联属性的取值必然保持和其属性相一致的对应关系。在本文的后述部分,“数据一致性”如定义5所述。在应用层如何确保表和表之间的数据一致性呢?在对应用系统的业务流程进行认真分析的基础上,针对系统业务的具体特点,提炼出数据流、控制流的处理模型,确定出各业务表之间的逻辑关系,是确保数据一致性的首要工作,下面结合数据一致性处理模型示意图(见图1),来阐述如何保证数据的一致性。在图1中表A为有m个属性,Az为主码的数据表;表B为有n个属性,Bz为主码的数据表;表C为有p个属性,Cz为主码的数据表。表D为有q个属性,含有Az、Bz、Cz属性,并且其他的某些属性分别和表A、表B、表C中的某些属性有关联的数据表,表D属性中的f(Az,…,Am)、g(Az,…,Am)…等表示和表A中的某些属性有关;表D属性中的h(Bz,…,Bn)…等表示和表B中的某些属性有关;表D属性中的p(Cz,…,Cp)…等表示和表C中的某些属性有关,f(Az,…,Am)、g(Az,…,Am)、h(Bz,…,Bn)、p26湖北邮电技术2001年(Cz,…,Cp)…等具体的关联关系由应用系统中的业务特性来确定。对这些关联关系设计合适的算法,利用先进的计算机系统开发工具,就可使表D中的相关数据通过程序技术从表A、表B、表C等数据表中直接取到;修改表A、表B、表C的某些数据,通过程序技术也可同时修改表D中相关属性对应的数据,从而保证应用系统中数据的一致性。图1数据一致性处理模型示意图图1对一个从表与其对应的3个主表的主从表之间的数据一致性的设计思想进行了说明。在实际的应用系统中,与从表对应的主表个数可能是1个,也可能是多个,并且从表中的某个属性还可能同时与几个主表中的属性相关联,例如关联关系为f(Az,…,Am,Bz,…,Bn,…,Cz,…,Cp)。以上的所有诸种情况,实现数据一致性的思想是一样的。下面具体介绍在应用层如何实现数据库中表和表之间的数据一致性。3实现方法在应用层实现数据库中表和表之间数据一致性的方法按如下步骤进行。(1)开发工具选择建议选择面向对象的可视化编程工具进行开发,例如由美国著名的数据库开发工具生产厂家Powersoft公司推出的功能强大、性能优异的开发工具Powerbuilder是一种完全按照客户/服务器(Client/Server)体系结构研制的开发系统,是一种面第4期杜毅迪:数据一致性模型的设计与实现27向对象的、具有可视图形界面的、快速的交互式开发工具,可以通过对不同数据库采用各自专用的接口或通用的ODBC接口,同时支持多种关系数据库管理系统。特别是由于Powerbuilder拥有数据窗口(DataWindow)这个智能对象,可以方便地操作关系数据库的数据而无需编写SQL语句,因此能方便地对多种事件进行编程,以多种方式打开和存储数据,因而能较好的实现表之间数据的一致性。(2)处理模型的建立在对应用系统的业务流程进行认真分析的基础上,针对系统业务的具体特点,归纳出系统的主要处理过程、方法、需求关系、数据类型、数据结构、数据特征,提炼出数据流、信息流、控制流的处理模型,找出各业务表之间的逻辑关系,研究出不同的处理方式和处理结果,拟订出系统的总体结构和数据处理过程。(3)属性分析·确定录入级别对系统中准备进行数据处理的每一个表的属性进行分析,找出表中的属性和其他表的属性之间的关系。例如对系统中的某一个表W的属性进行分析,假定表W的属性为w1,w2,w3,…,wn,在这些属性中有m个属性分别为其他的m个表的主码;有p个属性和其他的m个表有关(m≤p),所有和其他的表有关联的属性为(w1,w2,…,wp)(p≤n),w1为表1的主码,w2为表2的主码,……,wm为表m的主码。将属性(w1,w2,…,wp)分成m个逻辑组(1≤m≤p),使得每个逻辑组的所有属性可由m个表中的某一个表的属性表示出来。w1,w2,…,wp和其他表中属性的数据存取关系见图2。图2数据存取图(4)算法设计·程序处理PowerBuilder对数据库的操作基本上是通过数据窗口(Datawindow)这一对象进行的。下面以开发工具PowerBuilder为例,说明实现数据一致性的算法设计。①定义主数据窗口dwW,该数据窗口用于从其他的数据表中获取相关属性对应的数据值:为了处理属性W(w1,w2,…,wm,…,wn)对应的数据,应先设计出合理的数据处理格式,定义相应的数据窗口dwW,在该数据窗口中将w1,w2,…,wm设置成可写方式,而将其他与表1、表2、…、表m等有关联的属性设置成不可写方式。所有和其他表的属性无关联的属性设置成可写方式,用于直接处理数据。②定义从数据窗口:对于逻辑组中w1,w2,…,wm属性对应的数据表,定义相应的数据窗口dw1、dw2,…,dwm,其中dw1的数据源为w1,…,检索参数定义为w1;dw2的数据源为w2,…,检索参数定义为w2;…;dwm的数据源为wm,…,检索参数

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功