sql server 课件-第8章 数据库完整性及sql server的完整性控制

上传人:aa****6 文档编号:53680229 上传时间:2018-09-04 格式:PPT 页数:36 大小:314KB
返回 下载 相关 举报
sql server 课件-第8章 数据库完整性及sql server的完整性控制_第1页
第1页 / 共36页
sql server 课件-第8章 数据库完整性及sql server的完整性控制_第2页
第2页 / 共36页
sql server 课件-第8章 数据库完整性及sql server的完整性控制_第3页
第3页 / 共36页
sql server 课件-第8章 数据库完整性及sql server的完整性控制_第4页
第4页 / 共36页
sql server 课件-第8章 数据库完整性及sql server的完整性控制_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《sql server 课件-第8章 数据库完整性及sql server的完整性控制》由会员分享,可在线阅读,更多相关《sql server 课件-第8章 数据库完整性及sql server的完整性控制(36页珍藏版)》请在金锄头文库上搜索。

1、第8章 数据库完整性及SQL Server的完整性控制8.1 完整性约束条件及完整性控制 8.2 SQL Server的数据完整性及其实现 8.3 案例6:活期储蓄管理系统数据库的完整性控制Date第8章 数据库完整性及SQL Server的完整性控制数据库的完整性是指数据的正确性、有效性和相容性 ,防止错误数据进入数据库,保证数据库中数据的质量。 正确性是指数据的合法性;有效性是指数据是否属于所定 义的有效范围;相容性是指描述同一现实的数据应该相同 。数据库是否具备完整性涉及到数据库系统中的数据是否 正确、可信和一致,保持数据库的完整性是非常重要的。Date第8章 数据库完整性及SQL Se

2、rver的完整性控制8.1 完整性约束条件及完整性控制为了保证数据库的完整性,DBMS必须提供一种功能来保证 数据库中的数据是正确的,避免由于不符合语义的错误数据的 输入和输出。检查数据库中数据是否满足规定的条件称为“完 整性检查”。数据库中数据应满足的条件称为“完整性约束条 件”,有时也称为完整性规则。 v 完整性控制DBMS中执行完整性检查的子系统称为“完整性子系统”。它的 主要功能有: 定义完整性功能,即提供定义完整性约束条件的机制。 检查完整性功能,即检查用户发出的操作请求,看其是否 违背了完整性约束条件。 控制完整性功能,即监视数据操作的整个过程,如果发现 有违背了完整性约束条件的情

3、况,则采取一定的动作来保 证数据的完整性。Date第8章 数据库完整性及SQL Server的完整性控制v 完整性规则完整性子系统是根据“完整性规则集”工作的。完整性规则集 是由DBA或应用程序员事先向完整性子系统提出的有关数据约束 的一组规则。每个完整性规则有三个部分组成:(1) 什么时候使用规则进行检查(称为规则的“触发条件” );(2) 要检查什么样的错误(称为“约束条件”);(3) 若检查出错误,应该怎样处理(称为“ELSE”子句)。Date第8章 数据库完整性及SQL Server的完整性控制v RDBMS中的完整性规则在RDBMS中,完整性规则分为三类: 域完整性规则域完整性规则是

4、使基本表的列输入有效。域完整性主要由 用户定义的完整性组成。控制域完整性有效的方法有:限制数据类型、格式、可能 的取值范围、修改列值时必须满足的条件等。 实体完整性规则 实体完整性规则用来约束现实世界中的实体是可区分的, 即它们具有惟一性标识。这一规则在关系模型中的体现是基 本表所有主属性都不能取空值(NULL)。 参照完整性规则参照完整性规则用来约束具有参照关系的两个表中,主码 和外码的数据要保持一致。Date第8章 数据库完整性及SQL Server的完整性控制8.2 SQL Server的数据完整性及其实现 SQL Server具有较健全的数据完整性控制机制,它使用约束、 默认、规则和触

5、发器4种方法定义和实施数据库完整性功能。 8.2.1 SQL Server中的几种约束 v SQL Server的数据完整性种类SQL Server 2000中的数据完整性包括域完整性、实体完整性 和参照完整性3种。 域完整性域完整性为列级和元组级完整性。它为列或列组指定一个 有效的数据集,并确定该列是否允许为空值(NULL)。 实体完整性实体完整性为表级完整性,它要求表中所有的元组都应该 有一个惟一标识,即主关键字。 参照完整性参照完整性是表级完整性,它维护从表中的外码与主表中 主码的相容关系。Date第8章 数据库完整性及SQL Server的完整性控制v SQL Server数据完整性方

6、式SQL Server使用声明数据完整性和过程数据完整性两种方式 实现数据完整性。 声明数据完整性声明数据完整性通过在对象定义中定义、系统本身自动强 制来实现。声明数据完整性包括各种约束、默认和规则。 过程数据完整性过程数据完整性通过使用脚本语言(Transact-SQL)定义, 系统在执行这些语言时强制实现数据完整性。过程数据完整 性包括触发器和存储过程等。 v SQL Server实现数据完整性的具体方法SQL Server实现数据完整性的主要方法有4种:约束、默认、 规则和触发器。 约束约束通过限制列中的数据、行中的数据和表之间数据来保 证数据完整性。Date第8章 数据库完整性及SQL

7、 Server的完整性控制表8-1 SQL Server 2000约束的5种类型和其完整性功能完整性 类型约束类型完整性功能描述域完整性 DEFAULT(默认)插入数据时,如果没有明确提供列 值,则用默认值 作为该 列的值CHECK(检查 )指定某个列或列组可以接受值的范 围,或指定数据应满 足的条件实体完整性PRIMARY KEY(主码 )指定主码,确保主码不重复,不允 许主码为 空值UNIQUE(惟一值)指出数据应具有惟一值,防止出 现冗余参照完整性FOREIGN KEY(外码 )定义外码、被参照表和其主码Date第8章 数据库完整性及SQL Server的完整性控制使用CREATE语句创

8、建约束的语法形式如下:CREATE TABLE (,n,n )其中,的格式和内容为:CONSTRAINTPRIMARY KEYCLUSTERED | NONCLUSTERED| UNIQUECLUSTERED|NONCLUSTERED| FOREIGN KEYREFERENCES()| DEFAULT | CHECKDate第8章 数据库完整性及SQL Server的完整性控制的格式和内容为:CONSTRAINTPRIMARY KEYCLUSTERED|NONCLUSTERED()|UNIQUECLUSTERED|NONCLUSTERED()|FOREIGN KEY()REFERENCES(被

9、参照表)()|CHECK() Date第8章 数据库完整性及SQL Server的完整性控制 触发器触发器是一种功能强、开销高的数据完整性方法。触发器 具有INSERT、UPDATE和DELETE三种类型。一个表可以具有多 个触发器。触发器的用途是维护行级数据的完整性。与CHECK约束相 比,触发器能强制实现更加复杂的数据完整性,能执行操作 或级联操作,能实现多行数据间的完整性约束,能按定义动 态的、实时的维护相关的数据。 默认和规则默认(DEFAULT)和规则(RULE)都是数据库对象。当它们被 创建后,可以绑定到一列或几列上,并可以反复使用。当使 用INSERT语句向表中插人数据时,如果有

10、绑定DEFAULT的列, 系统就会将DEFAUTLT指定的数据插入;如果有绑定RULE的列 ,则所插入的数据必须符合RULE的要求。 Date第8章 数据库完整性及SQL Server的完整性控制8.2.2 默认默认是一种数据库对象,可以绑定到一列或多列上,也可以 绑定到用户自定义的数据类型上,其作用类似于DEFAULT约束, 能为INSERT语句中没有指定数据的列提供事先定义的默认值。默 认值可以是常量、内置函数或数学表达式。默认对象在功能上与默认约束是一样的,但在使用上有所区 别。默认约束在CREATE TABLE或ALTER TABLE语句中定义后,被 嵌入到定义的表的结构中。也就是说,

11、在删除表的时候默认约束 也将随之被删除。而默认对象需要用CREATE DEFAULT语句进行定 义,作为一种单独存储的数据库对象,它是独立于表的,删除表 并不能删除默认对象,需要使用DROP DEFAULT语句删除默认对象 。 Date第8章 数据库完整性及SQL Server的完整性控制v 创建默认使用T-SQL语句CREATE DEFAULT语句可以创建默认对象。语法如下:CREATE DEFAULT defaultAS constant_expression其中,default为默认对象的名称; constant_expression为常 量表达式。常量表达式中可以包括常量、内置函数或数

12、学表达式 ,但不能包括任何列名或其它数据库对象。【例8-1】在数据库MyDb中创建默认对象borrow_time,其值为当前 系统日期。CREATE DEFAULT borrow_time AS getdate()Date第8章 数据库完整性及SQL Server的完整性控制v 绑定默认默认对象创建后,并不能直接使用,必须绑定到指定表的某 一列或者用户定义的数据类型上。执行系统存储过程 sp_bindefault可以将默认绑定到列或者用户定义的数据类型上 。系统存储过程sp_bindefault的语法为:sp_bindefault default,object_name 【例8-2】 将【例8

13、-1】中创建的默认对象borrow_time绑定到数 据库MyDB中borrowinf表的借期列上,使用如下代码:EXEC sp_bindefault borrow_time,borrowinf.借期注意:若该表创建时已有默认约束,应先删除,再绑定。Date第8章 数据库完整性及SQL Server的完整性控制v 查看默认在企业管理器中,展开【数据库】的【默认】目录,可以 看到数据库中所有的默认对象,如图8-1所示。 图8-1查看数据库MyDb中的默认对象 Date第8章 数据库完整性及SQL Server的完整性控制使用系统存储过程sp_help可以查看默认对象的名称、拥有者 等基本信息。使

14、用系统存储过程sp_helptext可以查看默认对象 的定义。 v 解除默认和删除默认使用DROP DEFAULT语句可以删除当前数据库中的默认对象。 但在删除之前,应该先使用系统存储过程sp_unbindefault来解 除该默认对象在列或用户自定义数据类型上的绑定。调用系统存储过程sp_unbindefault,解除默认的语法为:sp_unbindefault object_name ,futurnonly_flag解除默认对象的绑定后,默认对象并没有消失,仍然在数据库中 。 Date第8章 数据库完整性及SQL Server的完整性控制【例8-3】解除绑定在borrowinf表的借期列上

15、的默认对象。执行如下代码:USE MyDbEXEC sp_unbindefault borrowinf.借期删除默认对象语句DROP DEFAULT的语法是:DROP DEFAULT object_name【例8-4】删除绑定在表borrowinf的“借期”列上的默认对象。 可使用如下代码:EXEC sp_unbindefault borrowinf.借期DROP DEFAULT borrow_timeDate第8章 数据库完整性及SQL Server的完整性控制8.2.3 规则规则也是一种数据库对象,与默认的使用方法类似,规则可以 绑定到表的一列或多列上,也可以绑定到用户定义的数据类型上 。

16、它的作用与CHECK约束的部分功能相同,为INSERT和UPDATE语 句限制输入数据的取值范围。规则与CHECK约束的不同之处在于: CHECK约束是在使用CREATE TABLE语句建表时指定的,而规则 是作为独立于表的数据库对象,通过与指定表或数据类型绑 定来实现完整性约束。 在一列上只能使用一个规则,但可以使用多个CHECK约束。 规则可以应用于多个列,还可以应用于用户自定义的数据类 型,而CHECK约束只能应用于它定义的列。 Date第8章 数据库完整性及SQL Server的完整性控制v 创建规则使用T-SQL语句CREATE RULE可以创建规则,语法如下:CREATE RULE ruleAS condition_expression其中,rule:为规则的名称;condition_expression:为一个 条件表达式,用来指定满 足规则的条件。【例8-5】在MyDb

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号