第6章 实现数据完整性约束
- 格式:ppt
- 大小:941.50 KB
- 文档页数:32


第2l卷第1期 2006年3月 吉林粮食高等专科学校学报 Journal of Jilin Grain College Vo1.21.No.1 Mar.,20O6 文章编号:1009一o924(2006)01—0023—02 网络数据库中数据完整性约束的实现 田 巍 (吉林农业工程职业技术学院,吉林公主岭136100) 摘要:主要讨论网络数据库中数据完整性约束及其如何实施企业业务规则,并以SQLServer和PowerBuilder为例,介绍 了数据完整性约束的实现技术。 关键词:Client/Server;数据完整性约束;企业业务规则 中图分类号:TP 311.13 文献标识码:A Client/Server模型是非对等的(decoupled),客户 发出服务请求,服务器作出响应,提供服务,即所谓 的“请求驱动”。DB的Client/Server系统由DBServ. er、客户应用程序和网络组成。DBServer(即后端)负 责有效地管理系统的资源,主要负责数据处理、并发 控制、数据安全性、数据完整性和数据的备份和恢复 等。客户应用程序(即前端)是系统中供用户与数据 进行交互的部件,主要任务是提供交互式界面完成 数据的录入、分析、检查和显示,向DBServer发出请 求(SQL语句)并接收结果和错误信息u J。网络和通 信软件是系统中客户和服务器之间数据传送的工 具。由于现在的数据库都是开放、多用户共享,因此 维护数据库的正确性至关重要。 1 常见的数据完整性约束 实际的系统中,一般将数据完整性约束分为标 准的数据完整性约束和定制的数据完整性约束。标 准的数据完整性约束是DBS已经实现的内部规则, 包括域完整性、实体完整性和引用完整性。 域完整性(Field Integrity)保证一个数据库不包 含无意义的或不合理的值,即保证表的某一列的任 何值是该列域(即合法的数据集合)的成员。方法是 限制列的数据类型、精度、范围、格式和长度等。 实体完整性(Entity Integrity)保证一个表中的每 一行必须是唯一的(元组的唯一性)。为保证实体完 整性,需指定一个表中的一列或一组列作为它的主 键( mary Key)。一个表中每行的主键必须确实含 有一个值。一个表只能含有一个主键,如需要从其 它列中除去重复的值,可以将一个或一组非主键列 指定为一个候选键或唯一值键。 引用完整性(Reference Integrity)定义了一个关 系数据库中不同的列和不同的表之间的关系(主键 与外键)。要求一列或一组列中的值必须要与相关 的一列或一组列中的值相匹配。从属的一列或一组 列称之为外键(Foreign Key)。被引用的列或一组列 称之为父键,父键必须是一个主键或唯一键。外键 属于子表或明细表,父键属于父表或主表。若父键 和外键属于同一表,则称之为自引用完整性。子表 某行的外键必须与主表的主键相匹配,只要依赖于 某主键的外键仍存在,主表中包含该主键的行就不 能删除。 2 Client/Server模型下实施企业规则的准 则 在Chent/Server系统中,前端和后端都提供数 据完整性约束。在前端可进行域完整性约束,并能 定制业务规则。在后端几乎可以实现上述所列的所 有的完整性约束。 前端应用程序也可以进行某些完整性检查并实 施企业规则,但是这些做法不能用于取代在数据库 里的完整性约束定义。如果数据库设计者完全正确 地说明了所有的约束和企业规则,则任何违反约束 和规则的数据操作都会引起数据库错误【2 J。前端应 用程序的任务是尽量减少产生数据库错误的可能 收稿日期:2oo6—03—05’ 作者简介:田
=====WORD完整版----可编辑----专业资料分享=====
----完整版学习资料分享---- 第一章
一、解答题
1、解释术语:数据、数据库、数据管理系统、数据库 系统、数据库应用系统、视图、数据字典。P19-20
数据:是描述现实世界中各种具体事物或抽象概念的、可存储并具有明确意义的信息。
数据库:是相互关联的数据集合。
数据管理系统:是一个通用的软件系统,由一组计算机程序构成。
数据库系统:是一个用户的应用系统得以顺利运行的环境。
数据库应用系统:主要指实现业务逻辑的应用程序。
视图:指不同的用户对同一数据库的每一种理解称为视图。
数据字典:用于存储数据库的一些说明信息的特殊文件。
2、简述数据抽象、数据模型及数据模式之间的关系 P26
数据模型是数据抽象的工具,是数据组织和表示的方 式;
数据模式是数据抽象利用数据模型,将数据组织起来后得到的结果;
总而言之,数据模式是数据抽象的结果。
3、DBMS应具备的基本功能有哪些?P9
数据独立性、安全性、完整性、故障恢复、并发控制
4、数据库中对数据最基本的4种操作是什么? P24
增加、删除、修改、查询
5、评价数据模型的3个要素是什么? P12
1)能够真实地描述现实系统
2)能够容易为业务用户所理解
3)能够容易被计算机实现
6、数据模型的3个要素是什么? P24
数据结构、数据操作、数据约束
7、简述SQL语言的使用方式。P13
一般有两种方式:SQL的交互式使用;用户通过开发应用系统与RDBMS交互。
8、在数据库设计时,为什么涉及到多种数据模型?P12
因为目前商用化DBMS没有一个能够同时满足3项要求,为此,人们不得不走折中路线,设计一些中间的数据模型。
9、数据库系统中的用户类型有哪些?P28-29
最终用户、数据库应用开发人员、数据库管理员、其他与数据库系统有关的人员。
有教师表 (教师号,教师名,职称,基本工资 ) ,其中基本工资的取值与教师职称 有关。实现这个约束的可行方案是 ( ) 。
A 在教师表上定义一个视图
B 在教师表上定义一个存储过程
C 在教师表上定义插入和修改操作的触发器
D 在教师表上定义一个标量函数
参考答案
C
在SQL SERVE中,执行带参数的过程,正确的方法为( )
A 过程名 参数
B 过程名(参数)
C 过程名 =参数
D ABC匀可
参考答案
A
在SQL SERVE服务器上,存储过程是一组预先定义并( Transact-SQL 语句。
A 保存
B 解释
C 编译
D 编写 参考答案
C
在 SQL Server 中,触发器不具有(
A INSERT触发器 B UPDATE* 发器 C DELETE 发器 D SELECT触发器 参考答案
D )的
)类型 欢迎下载 2
( )允许用户定义一组操作,这些操作通过对指定的表进行删除、
插入和更新命令来执行或触发。
A存储过程
B规则
C触发器
D索引 参考答案
C
为了使用输出参数,需要在CREATPROCEDU语句中指定关键字( )
A OPTION B OUTPUT C CHECK D DEFAULT 参考答案
B
A CREATE PROCEDURE
B CREATE TRIGGER
C ALTER TRIGGER
D DROP TRIGGER
参考答案
B
下列( )语句用于删除触发器。
A CREATE PROCEDURE B CREATE TRIGGER C ALTER TRIGGER D DROP
TRIGGER 参考答案
D
)语句用于删除存储过程
A CREATE PROCEDURE
B CREATE TABLE
C DROP PROCEDURE
D其他 参考答案
C
下列( )语句用于创建存储过程 )语句用于创建触发器 欢迎下载 3
A CREATE PROCEDURE
学术论坛 Science and Technology lnnOv 使用事务实现数据完整性①
赵慧玲余向飞徐欣欣 (长春工程学院计算机工程与技术学院长春1 3001 2)
摘要:确保数据库数据的完整性和一致性有多种办法,简单的业务逻辑可以利用约束.规则,复杂的业务逻辑可以利用事务结合存储过程来 实现。谈文通过对数据库中相关业务逻辑流程的研究,阐述了事务的托最和作用,并结合实际说明了怎样利用事务在数据库中实现包含多任务流 的业务逻辑。 关键词:事务存储过程 中图分类号:G250 文献标识码:A 文章编号:1674-098X(2013)07(a)--0233—01
当一个业务逻辑包含多个数据流任务 时,每个任务在不同的数据表中需要执行插 入、更新、删除数据的相关操作,整个业务 逻辑中所有任务流要求全都执行或垒不执 行,则该过程需要使用事务来保证在数据 流中执行的所有更改都已提交或回滚。
1相关概念 1.1事务 事务是单个的工作单元,是数据库中不 可再分的基本部分,是用户对数据库进行一 系列操作的集合,对于事务中的所有操作, 要么全都完成,要么全不完成。执行事务的 过程中,一旦发生任何问题,整个事务就会 重新开始,数据库将会回到事务开始前的 状态,先前发生的任何行为都会被取消,数 据也恢复到原始状态。如果事务成功完成 的话,对数据库的所有修改都会保存到数 据库中。事务总是可以确保数据库的完整 性。 1.2存储过程 存储过程是为了实现特定的任务,将一 组预编译的SQL语句以一个存储单元的形 式存储在服务器上,供用户或客户端应用程 序调用,它支持用户声明变量、条件执行和 其他强大的编程功能。它的参数可以被传递 和返回,与应用程序中的函数过程类似,存 储过程可以通过名字来调用,而且它们同样 可以有输入参数或输出参数。
2应用实例 现在通过一个典型的银行转账案例来 阐述如何在存储过程中结合事务来保证数 据库中数据的一致性,具体要求是:从一个 银行账户A中转出某笔款项到银行账户B 中,要求转出和转入这两个任务流作为一个 业务逻辑处理流程,要么全都执行,要么全 不执行。如果扣款和入款不作为一个整体 业务逻辑来执行的话,可能会造成数据库 中数据不一致的现象,不是给用户造成损 失,就会给银行造成损失,后果严重。 所以要正确的完成整个业务逻辑需要 使用事务来实现,如果事务成功完成的话, 转出和转入这两个操作都会被执行并写入 到数据库中,如果有其中任何一个操作执行 失败的话,事务都会回滚到原始状态。 CREATE TABLE aCCOunts (account cha r(30)PrimarY key, Money money ) / 创建表accounts表,account是 表中账户号码,money 是表中存款金额 卑, (1)CREATE PRO CEDUR E stransfer—money @out—account char(30), @in—account char(30), @money money /}@out—account 转出账户,@ inaccount 转入账户,@money转出 金额 / (2)as (3)declare @previous money select@previous=money from accounts where accOUnt=@out— account / 查询转出账户的现有金额 / if@previous>@money /+判定转出A账户的现有余额是否大 于转账金额,如果条件成立,执行转账 / (4)begin (5)begin tran (6)UPd at e ac c ount s s et money:money-@money where account=@out_account / 更新账户表中转出账户的金额 / if@@error<>O /*N断如果语句执行错误 / begin rollback tran / 开始执行事务的回滚,恢复的转账 开始之前状态 / return 1 end (7)UPd at e ac c ount s s et money=money+@money where account=@in—account / 更新账户表中转入账户的金额 / if@@error<>O / 判断如果语句执行错误 / begin rollback tran / 开始执行事务的回滚,恢复的转账 开始之前状态 / return 2 end (8)else /+如何两条语句都执行成功 / begin print.‘转账成功.’ return 0 end C0mmit tran /十提交这个事务的操作 / end (9)else / 如果A账户的现有余额小于转账金 额 / . print‘余额不足’ 其中代码段(3)是将某人转出账户的 现有金额查询出来,并且判断当前帐户的 现有金额是否大于转账金额,如果条件成 立,则可以转帐,执行代码段(4),代码段 (5)到代码段(9)之间是封装了一个事务, 这个事务主要有三个操作,第一个是代码段 (6),更新转出账户金额,如果失败事务回 滚,第二个代码段(7),更新转入帐户金额, 如果失败事务回滚,第三个是如果前两条语 句都执行成功的话,更新写入数据库,提交 事务。否则执行代码段(9),不能转帐。