加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Server数据完整性约束的实现技术

发布时间:2022-11-16 16:36:19 所属栏目:MsSql教程 来源:未知
导读: DOC格式论文,方便您的复制修改删减基于Client/Server数据完整性约束的实现技术(作者:__**_______单位:___________邮编:要:本论文主要讨论基于Client/Server数据完整性约束及其如何实施企

DOC格式论文,方便您的复制修改删减基于Client/Server数据完整性约束的实现技术(作者:__**_______单位:___________邮编:要:本论文主要讨论基于Client/Server数据完整性约束及其如何实施企业业务规则,并以SQLServer和PowerBuilder为例,介绍了数据完整性约束的实现技术。关键词:Client/Server,数据完整性约束,企业业务规则DBMS已从早期的分散的一个个计算模型、网络/文件服务计算模型(针对文件)发展到现在的Client/Server计算模型(针对表中的一行)。Client/Server模型是非对等的(decoupled),客户发出服务请求,服务器作出响应,提供服务,即所谓的”请求驱动”。DBClient/Server系统由DBServer、客户应用程序和网络组成。DBServer(即后端)负责有效地管理系统的资源,主要负责数据处理、并发控制、数据安全性、数据完整性和数据的备份和恢复等。客户应用程序(即前端)是系统中供用户与数据进行交互的部件,主要任务是提供交互式界面完成数据的录入、分析、检查和显示,向DBServerDOC格式论文,方便您的复制修改删减发出请求(SQL语句)并接收结果和错误信息。

网络和通信软件是系统中客户和服务器之间数据传送的工具。由于现在的数据库都是开放、多用户共享,因此维护数据库的正确性至关重要。数据库的完整性描述为数据库内容的完整性约束集合,其中完整性约束指数据库的一个状态是否合理,这是一组谓词。DBS检查数据的状态和状态转换,判定它们是否合理,是否应予接受。对一个数据库操作,要判定其是否符合完整性约束,全部断言无矛盾时才可以执行。完整性约束的形式化定义I=(O,P,A,R),其中O完整性约束所涉及的数据对象集合,P是对象所满足的谓词,A发检查的条件,R是约束不满足时的反应动作[2]实际的系统中,一般将数据完整性约束分为标准的数据完整性约束和定制的数据完整性约束。标准的数据完整性约束是DBS已经实现的内部规则,包括域完整性、实体完整性和引用完整性。域完整性(FieldIntegrity)保证一个数据库不包含无意义的或不合理的值,即保证表的某一列的任何值是该列域(即合法的数据集合)DOC格式论文,方便您的复制修改删减的成员。方法是限制列的数据类型、精度、范围、格式和长度等。实体完整性(EntityIntegrity)保证一个表中的每一行必须是唯一的(元组的唯一性)。

为保证实体完整性,需指定一个表中的一列或一组列作为它的主键(PrimaryKey)。一个表中每行的主键必须确实含有一个值。一个表只能含有一个主键,如需要从其它列中除去重复的值,可以将一个或一组非主键列指定为一个候选键或唯一值键。引用完整性(ReferenceIntegrity)定义了一个关系数据库中不同的列和不同的表之间的关系(主键与外键)。要求一列或一组列中的值必须要与相关的一列或一组列中的值相匹配。从属的一列或一组列称之为外键(ForeignKey)。被引用的列或一组列称之为父键,父键必须是一个主键或唯一键。外键属于子表或明细表,父键属于父表或主表。若父键和外键属于同一表,则称之为自引用完整性。子表某行的外键必须与主表的主键相匹配,只要依赖于某主键的外键仍存在,主表中包含该主键的行就不能删除。由于每个公司的数据库都有自己独特的业务规则集,所以系统必须有一种方式来实现定制的业务规则即定制的数据完整性约束。定制的数据完整性约束可由如下几种方法实施。一种最原始的方法是将将每一个完整性约束编入要访问数据库的每个应用程序中,缺点是在每个相关的数据库应用程序中,开发者都要对相同的完整性规则进行编码、测试和排错。

若某一规则变动,所有相关的应用程序都得改动。应用程序须向DBServer请求大量的数据,以执行该应用程序内部的数据完整性规则检查,这将阻塞网络。因而DOC格式论文,方便您的复制修改删减这是一种耗时、低性能的方法。用户定义的数据类型(User-definedDataType)是由标准数据类型导出的新数据类型,它比标准的数据类型更准确地限定了数据输入的范约束(Check)用于限制列的值域,在数据类型限制的基础上对输入的数据进一步进行限制。通过逻辑表达式来定义列的有效值。缺省(Default)定义了一个数值,当用户向数据表插入数据时,若某个域未给定值,系统自动将定义在该域上的缺省作为输入值,保证数据库数据的合理性。规则(Rule)是一个用来绑定域或用户定义数据类型的数据库对象,规则说明了哪些数据可以输入到域中。任何时刻,用户输入或修改数据(INSERTUPDATE),DBMS都将检查该数据是否违反绑定在域上的规则。存储过程(StoredProcedure)是由编译过的SQL语句、控制流语句、变量说明和赋值运算等组成的集合,由开发者创建并存储在数据字典(大部分DBMS叫系统表)中。我们可以通过存储过程中的语句来定义企业业务规则,特别对于复杂的表与表之间的饿关系,用存储过程来实现将变得相当容易。

触发器(Trigger)也是一个存储过程,该过程在插入、修改和删除等操作事前或事后由DBS自动激发(执行)。经常用于实现逻辑上相关的数据表之间的数据完整性和一致性。触发器非常适合于实施企业规则,如果某个输入违反了其中的某个企业规则,触发器可以显示相应DOC格式论文,方便您的复制修改删减错误并中止正在执行的数据库动作。二、Client/Server模型下实施企业规则的准则在Client/Server系统中,前端和后端都提供数据完整性约束。在前端可进行域完整性约束,并能定制业务规则。在后端几乎可以实现上述所列的所有的完整性约束。E.F.Codd在衡量关系数据库的十二条准则之第十条指出关系完整性约束条件必须用数据子语言定义并存储在数据字典中,而不是在应用程序中。这样,当完整性约束改变时,只要修改数据字典即可,完整性的改变一般不会在逻辑上影响应用程序的活动。前端应用程序也可以进行某些完整性检查并实施企业规则,但是这些做法不能用于取代在数据库里的完整性约束定义。如果数据库设计者完全正确地说明了所有的约束和企业规则,则任何违反约束和规则的数据操作都会引起数据库错误。前端应用程序的任务是尽量减少产生数据库错误的可能性,只有从这个意义上说,前端应用程序才应当包含完整性检查和实施事务规则。

当数据库没有完整性约束时,前端应用程序必须实施企业规则。我们在实施企业规则时,应将所有的企业规则定义在数据字典中,应用程序在向数据库提交SQL语句之前尽量减少由用户引起数据库错误的可能性,使应用程序运行顺畅,对用户友好,开销少。DOC格式论文,方便您的复制修改删减三、PowerBuilder/SQLServer数据完整性约束的实现技术PowerBuilder是当今非常流行的前端开发工具,它提供了丰富的构件,能很方便地开发出界面友好、功能强大的应用程序。下面以 功能强大的数据窗口为例,说明前端开发工具如何实现数据完整性约 束Mssq数据完整性约束,PowerBuilder 的其它构件也提供类似实现完整性约束的方法。 利用列的编辑风格(EditStyle)限制列的长度、格式、值域等。 PowerBuilder 提供无线按钮(Radio Button)、检查框(Check Box)、下 拉式数据窗口(DropDown DataWindow)、下拉式列表框(DropDown List)、编辑屏蔽(Edit Mask)和编辑(Edit)等编辑风格来检查列的数据 类型。 利用列的有效性验证规则(ValidationRule)对输入数据进行限制。

在Validation Rule 对话框内,可输入规则定义(Rule Definition)和有 效性规则出错信息(Validation Error Message)。 可在ItemChanged事件的Script 程序里对输入数据进行进一步的 有效性验证,若输入数据不能通过在 ItemChanged 事件里所设置的 检查,则返回动作码1,拒绝输入数据。 当应用程序调用函数Update()更新数据库之前,触发UpdateStart事件。该事件是用于进行数据有效性验证的最后一次机会。若输入数 据的有效性验证失败,则返回动作码1,拒绝数据更新。 束的列),可将对应的数据窗口的列置为必备域(RequiredField)。但 DOC 格式论文,方便您的复制修改删减 是必备域的约束对用户来说并不友好,用户必须输入一个值,否则无 法离开该列。一种替代的办法是在 UpdateStart 事件里检查列(在数 NULL列)的值是否为NULL。 利用自定义有效性验证函数进行常规的数据检查,有助于应用程序的标准化和简化。这些函数可以用在列的有效性验证规则,也可以 用在 Itemchanged 事件的 Script 程序中。

一般自定义有效性验证函 数被设计成全局函数、返回布尔型结果。 在数据窗口的字段中输入数据,离开该字段,系统调用AcceptText()函数 DOC格式论文,方便您的复制修改删减 DOC格式论文,方便您的复制修改删减 激发ItemError事件 DOC 格式论文,方便您的复制修改删减 执行ItemChanged事件(可设置有效性验证) DOC格式论文,方便您的复制修改删减 DOC格式论文,方便您的复制修改删减 DOC格式论文,方便您的复制修改删减 执行UpdateStart事件 DOC格式论文,方便您的复制修改删减 图一、PowerBuilder数据有效性验证的过程 Itemchanged事件的 Script 程序里进行有效性验证与具体的数据 窗口密切相关。有些有效性验证需进行数据库查询,若需要很高的系 统代价,尽量避免使用。 SQLServer是一个多用户的RDBMS,它为复杂环境下有效地实现 企业管理提供了一个强有力的 Client/Server 平台,是一种较理想的 后端数据库服务器之一。微软和SYBASE 公司都支持SQLServer 品。下面只以一个例子来说明在SQLServer 中如何实现数据的域、 实体、引用完整性约束。

有关于如何用存储过程、触发器、规则和用 户定义数据类型等实现数据完整性约束可参见有关资料。 CREATETABLE pageruser stationidSMALLINT useridINT frequentidSMALLINT machinecodeINT nameCHAR(10), sexCHAR(1), DOC 格式论文,方便您的复制修改删减 pagertypeidSMALLINT PRIMARYKEY(stationid,userid), FOREIGNKEY(pagertypeid) REFERENCES pagertype, CREATETABLE pagertype idSMALLINT, typenameCHAR(10), noteCHAR(30), PRIMARYKEY(id) 以上定义了一个寻呼台DB 的用户档案表 pageruser 和寻呼类 型表pagertype,我们可以看出如何定义域完整性、主键、外键、唯 一键、NOT NULL 和CHECK 约束。 本文讨论了分布计算环境下的数据完整性约束的概念及其实现技术。另外,基于 Browser/Server 计算模式下的应用系统同样需要 考虑数据完整性约束的问题,且其与基于 Client/Server 的数据完整 性约束相类似。 DOC格式论文,方便您的复制修改删减 李昭原主编数据库技术新发展 清华大学出版社,1997 周龙镶编著数据库管理系统实现技术 中国地质大学出版 社,1990

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!