计算机专业毕业论文
主要介绍了SQL Server数据库应用系统中数据完整性在服务器端和客户端的设计方法,并结合医院管理信息系统(简称JY-HMIS)阐述了实现数据完整性的策略。
关键词:数据完整性数据库事务处理
序
数据完整性是指数据的正确性和一致性,有两层含义:(1)数据值的正确性,即字段列的值必须符合数据值范围、类型和精度的规定;(2)相关数据的一致性,即相关表的联系字段的列值匹配。在数据库应用系统中,保证数据完整性是应用系统设计的基本要求;数据完整性的实现关系到数据系统的正确性、一致性和可靠性,关系到系统的成败。JY-HMIS采用C/S模式架构,其数据库应用系统为:SQL Server 7.0客户端的开发工具是PowerBuilder 6.5。下面主要从服务器端数据库管理系统和客户端应用程序两个方面来介绍。
1服务器使用SQL Server 7.0数据库实现数据完整性。
当使用INSERT、DELETE和UPDATE语句修改数据库内容时,数据的完整性可能会被破坏。为了确保存储数据的正确性和一致性,SQL Server对数据施加了一个或多个数据完整性约束。这些约束限制了数据库中的数据值,或者限制了数据库修改产生的数据值,或者限制了数据库中某些值的修改。
在SQL Server关系数据库中,数据完整性主要有三种类型:实体完整性(确保表中所有行都是唯一的);参照完整性(主键和外键关系的维护,涉及两个或多个表的数据的一致性维护);域完整性(列的有效性集合,是对业务管理或数据库数据的限制)。在电报端实现数据完整性有两种方法:定义Creat Table的完整性约束,定义规则、默认值、索引和触发器。
1.1定义了createtable完整性约束。
这种方法是在创建数据库表的命令语句中添加表级约束或列级约束,实现数据完整性。例如添加非空约束、默认约束、唯一代码约束、主键约束、外键约束、检查约束等。在表构建语句中。其主要特点是:定义简单、安全可靠、维护方便。
1.1.1非空约束、默认约束和检查约束
非空约束限制列值不能为空;默认约束指定在数据库中插入数据时,如果用户没有显式给出某一列的值,SQL Server将自动输入预定值;Check约束用于限制列的范围。
例如,在创建图书登记表时,诸如限定登记日期、图书类别代码、登记号、中文名称等列值。不能为空;页数的默认值是1;单价的默认值为0;图书状态只能是“在库”、“借出”和“丢失”中的一种。
1.1.2主键约束和唯一约束
primary key约束和unique约束都为指定的列建立唯一索引,即具有唯一索引的列不允许有相同的值。主键约束更严格,不仅不允许重复值,也不允许空值。
例如,在部门编码表中,在列ksbm上创建一个主键约束,在ksmc上创建一个唯一约束。
1.1.3外键约束
外键约束又称参照完整性约束,用于限制本表之外的键码列值与相关表的主键码字段列值的匹配,即保证相关数据的一致性。
例如,在创建医生代码表时,医生所属的部门ssks是外键代码,它被限制为与部门代码表中部门代码ksbm列的值一致。
1.2定义规则、默认值、索引和触发器
虽然在数据库表创建命令语句中定义约束的方法简单、方便、安全,但它只对特定的表有效,不能应用于其他表,而且只能用alter table命令来修改或删除约束,缺乏一定的灵活性。相反,在数据库中创建相对独立于表的规则、索引和触发器对象,也可以实现数据完整性,可以实现更复杂完善的数据完整性约束。其主要特点是功能强、效率高、维护方便。
1.2.1定义规则
规则类似于表定义中的check约束,用于限制列的范围。但它不限于特定的表,可以用于其他表的列或用户定义的数据类型。
例如,在为药品定义编码规则Rul-ypbm时,可以将其绑定到其他表。
1.2.2定义默认值
Default类似于表定义中的default约束,用于设置列的默认值输入。它也不限于特定的表,可以用于其他表的列或用户定义的数据类型。
1.2.3定义索引
索引类似于表定义中的唯一约束,用于确保列值的唯一性。此外,它还可以使用聚集索引和非聚集索引选项来增强数据检索的性能。
比如分别按照收费日期和收费序号建立门诊收费明细账的非聚集索引,大大提高了数据查询速度。索引建立前,在20多万条记录中查询出符合条件的记录需要5分钟左右,索引建立后只需要4秒钟。
1.2.4定义触发器
触发器是实现复杂完整性约束的有效方法,当它保护的数据被修改时,触发器会自动激活,以防止对数据的不正确、未授权或不一致的修改。类似于表定义中的参照完整性约束;触发器还可以用来确保相关数据的一致性。还可以完成一些表定义的参照完整性约束所不能完成的任务。
2客户端使用PB开发的应用程序实现数据完整性。
2.1使用PB控件来确保数据完整性。
在用PB开发工具编写的应用程序中,可以利用数据窗口对象的列检查属性来检查输入数据的正确性。在窗口输入界面,还可以使用下拉列表、复选框、单选按钮等控件实现定值选择和输入,保证数据的正确性;此外,应用程序本身可以有效地检查输入数据,以确保数据的完整性。
2.2利用交易的特性保证数据的一致性。
因为PB的每一个操作都是基于控件中的事件,所以一个完整的事务应该集中在一个事件或者一个操作单元中。比如门诊定价收费中的支付处理;同一收费序号下的数据,处理后应记入明细账、一级明细账和总账,同时更新《收费序号登记表》;所有这些过程都被视为一个完整的任务,所有语句执行成功后才能提交数据库;如果一条语句执行不成功,则应该取消事务的所有操作,将事务返回到开始时的状态,以保证数据的一致性。利用客户端应用程序实现数据完整性的方法,其特点是交互性好,功能强,但编程量过大,维护困难,可靠性差。
实现数据完整性的3种策略
从上面可以看出,在SQL Server数据库应用系统中,实现数据完整性的方法各有特点。对于具体的应用系统,可以根据需要采用一种或多种方法建立数据完整性的机制,策略是:
(1)对于通过窗口操作输入的数据,一般使用客户端应用程序来保证数据的完整性。这样,一方面可以在非法数据提交到数据库之前将其拒绝,另一方面用户可以及时获得运营反馈信息,做出正确的选择。
(2)对于通过其他渠道传输的数据,一般需要服务器端的数据库管理系统来实现数据的完整性。
(3)为了维护数据的一致性,适合实现服务器端数据库的触发器或表定义的约束。这样可以减少客户端应用程序的开发,提高应用系统的运行效率、可维护性和可靠性。
(4)对于数据完整性和安全性要求高的系统,需要多层保护屏障来保证数据的完整性和安全性。例如,不仅在客户端应用系统程序中检查输入数据的有效性,而且在服务器数据库中为数据完整性约束建立表的约束、规则、默认值和触发器。这可以提高系统数据的可靠性和安全性。
4结论
数据库完整性是数据库应用系统最基本的要求之一。在SQL Server数据库应用系统中,数据完整性可以通过三种方法实现:定义服务器端数据库表的约束、数据库规则、默认值、索引、触发器和客户端应用程序。它们各有特点,应根据具体情况在应用系统中灵活使用。
参考
[1]杨SQL Server 7.0关系数据库系统管理和开发指南。机械工业部出版社,2000。
[2]微软SQL Server 7.0数据库系统管理与应用开发。北京人民邮电出版社,1999。
[3]薛化成。管理信息系统。清华大学出版社,1995。