第4章--数据完整性的设计与实现PPT课件_第1页
第4章--数据完整性的设计与实现PPT课件_第2页
第4章--数据完整性的设计与实现PPT课件_第3页
第4章--数据完整性的设计与实现PPT课件_第4页
第4章--数据完整性的设计与实现PPT课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021/7/231第4章 数据完整性的设计与实现2021/7/232本章学习目标n掌握数据完整性的分类;n掌握如何创建主键约束;n掌握设置惟一性约束的方法;n掌握设置默认约束的方法;n掌握设置检查约束的方法;n掌握设置外键约束的方法。2021/7/2334.1 概 述数据的完整性主要涉及以下几个方面:(1)实体完整性。(2)域完整性。(3)参照完整性。(4)用户定义的完整性。本章主要介绍前三种数据完整性的设计与实现方法。2021/7/234完整性的概念n之所以要引入数据完整性是为了在数据的添加、删除、修改等操作中不出现数据的破坏或多个表数据不一致n数据完整性是指存储在数据库中的数据正确无误并

2、且相关数据具有一致性2021/7/235完整性的类型n实体完整性实体完整性n实体:表中的记录,一个实体就是指表中的一条记录。n实体完整性:在表中不能存在完全相同的记录,且每条记录都要具有一个非空且不重复的主键值。n实现实体完整性的方法:设置主键、惟一索引、惟一约束、指定IDENTITY属性2021/7/236完整性的类型n域完整性域完整性n域完整性:向表中添加的数据必须与数据类型、格式及有效的数据长度相匹配。n实现实体完整性的方法:CHECK约束、外键约束、默认约束、非空定义、规则以及在建表时设置的数据类型2021/7/237完整性的类型n参照完整性参照完整性n参照完整性:又称为引用完整性。是

3、指通过主键与外键相联系的两个表或两个以上的表,相关字段的值要保持一致。n实现实体完整性的方法:外键约束2021/7/238完整性的类型n用户定义的完整性用户定义的完整性n用户定义的完整性:是根据具体的应用领域所要遵循的约束条件由用户自己定义的特定的规则。2021/7/239约束的类型n约束:约束:SQL Server提供的自动强制数据提供的自动强制数据完整性的一种方法。它通过定义列的取完整性的一种方法。它通过定义列的取值规则来维护数据的完整性。值规则来维护数据的完整性。n常用约束常用约束:NOT NULL,CHECK、UNIQUE、PRIMARY KEY、FOREIGN KEY、DEFAULT

4、2021/7/2310约束的类型n主键约束:主键约束:在表中定义一个主键来惟一在表中定义一个主键来惟一标识表中的每行记录标识表中的每行记录n特点特点:每个表中只能有一个主键,主键可是一列,也可是多列;主键不能为空;主键值不能重复;2021/7/2311约束的类型nUNIQUE约束:约束:它主要用来限制表的非它主要用来限制表的非主键列中的值不能重复。主键列中的值不能重复。n特点特点:一个表中可以定义多个惟一约束2021/7/2312约束的类型nNOT NULL约束:约束:它用来设定某列值不它用来设定某列值不能为空。能为空。n特点特点:如果设定某列为:如果设定某列为NOT NULL,则,则在添加记

5、录时,则此列必须插入数据。在添加记录时,则此列必须插入数据。2021/7/2313约束的类型nCHECK约束:约束:它使用逻辑表达式来限制它使用逻辑表达式来限制表中的列可以接受哪些数据值。表中的列可以接受哪些数据值。n例如例如:成绩值应该在:成绩值应该在0-100之间,则可以之间,则可以为成绩字段创建为成绩字段创建CHECK约束,使取值在约束,使取值在正常范围内。正常范围内。2021/7/2314约束的类型nDEFAULT约束:约束:它为表中某列建立一个它为表中某列建立一个默认值,当为表中添加记录时,如果没默认值,当为表中添加记录时,如果没有提供输入值,则自动以默认值赋给该有提供输入值,则自动

6、以默认值赋给该列。列。n特点特点:默认值可以为常量、函数或表达:默认值可以为常量、函数或表达式。使用默认值可以提高数据输入的速式。使用默认值可以提高数据输入的速度。度。2021/7/2315约束的类型nFOREIGN KEY约束约束n外键:外键:是指一个表中的一列或列组合,是指一个表中的一列或列组合,它虽不是该表的主键,但是另一个表的它虽不是该表的主键,但是另一个表的主键。主键。n特点特点:实现两表之间相关数据的一致性。:实现两表之间相关数据的一致性。返回2021/7/2316约束的创建n创建约束的时间:创建约束的时间:在建表的同时进行创在建表的同时进行创建,也可在已存在的表上创建。建,也可在

7、已存在的表上创建。n如何创建:如何创建:在企业管理器中创建,或在在企业管理器中创建,或在查询分析器中用查询分析器中用SQL命令创建命令创建2021/7/23174.2 实体完整性的设计与实现n实体完整性要求数据表中的每一行在表中是惟一的实体。采用以下三种方式,即主键约束、IDENTITY属性和惟一性约束。2021/7/23184.2.1 主键约束n通过定义主键,能够惟一地确定表中的每一条记录。定义为主键的列不允许为空,且image和text类型的列不能被指定为主键。可以将数据表中的一列或多列的组合定义为主键。2021/7/23191通过企业管理器管理主键约束n例4-1 在“图书基本信息表”中为

8、“图书编码”字段设置主键约束。2021/7/23202使用Transact-SQL语句设置主键约束CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED (column_name,n)2021/7/23212使用Transact-SQL语句设置主键约束其中各参数的说明如下:constraint_name:用于指定约束的名称,约束的名称在数据库中应该是惟一的。如果不指定,则系统会自动生成一个约束名。2021/7/23222使用Transact-SQL语句设置主键约束CLUSTERED|NONCLUSTERED:用于指定索引的类型

9、,即聚簇索引或者非聚簇索引,CLUSTERED为默认值。column_name:用于指定主键的列名。主键最多由16个列组成。2021/7/23232使用Transact-SQL语句设置主键约束n例4-2 重新创建“读者基本信息表”,并为其中的“读者编号”字段设置主键约束。 create table memberinfo (memberid char (12) not null primary key,memname char(10) null,memphone char(11) null)或者已建好表后,使用:Alter table memberinfo add constraint xx p

10、rimary key (memberid,memname)2021/7/23244.2.2 IDENTITY属性n可以使用IDENTITY属性来实现实体完整性。方法是在数据表中创建一个标识列,该标识列中的数据由系统自动生成。2021/7/23251通过企业管理器管理IDENTITY属性n例4-3 使用企业管理器创建一个新的数据表TEMP1,包含4个字段:图书编码、书名、作者、出版社,并将图书编号字段设置成一个标识列,列中的数据从1开始,每次增加1。2021/7/23262使用Transact-SQL语句设置IDENTITY属性n使用Transact-SQL语句设置IDENTITY属性的语法形式

11、如下:nIDENTITY(种子, 递增量)n其中,“种子”是初始值;“递增量”是每次增加的数值。n说明:必须同时指定种子和递增量,或者二者都不指定。如果二者都未指定,则默认为(1,1)。2021/7/23272使用Transact-SQL语句设置IDENTITY属性n例4-4 使用Transact-SQL语句创建一个新的数据表TEMP2,包含4个字段:图书编码、书名、作者、出版社,并将图书编码字段设置成一个标识列,列中的数据从3开始,每次增加2。ncreate table temp2(图书编号 int not null identity(3,2),书名 char(50),作者 char(20)

12、,出版社 char(50) 2021/7/23284.2.3 惟一性约束n惟一性约束可以指定一个或多个字段列的组合值具有惟一性,即不会出现重复的值。在一个数据表中可以为多个字段或字段的组合设置惟一性约束。2021/7/23291通过企业管理器管理惟一性约束n例4-5 使用企业管理器在“图书基本信息表”中为“书名”和“作者”两个字段的组合字段设置惟一性约束。n在表设计器中,右击选择属性,选择索引/键选项卡。选择新建命令。系统分配的名称出现在索引名框中。 在列名下展开列的列表,选择要将约束附加到的列。若要将约束附加到多个列,在后续行中选择其它的列。选择创建 UNIQUE复选框。选择约束选项。 20

13、21/7/23302使用Transact-SQL语句设置惟一性约束n使用Transact-SQL语句设置惟一性约束的语法形式如下:nCONSTRAINT constraint_namen UNIQUE CLUSTERED|NONCLUSTEREDn(column_name,n)2021/7/23312使用Transact-SQL语句设置惟一性约束n各参数说明如下:nconstraint_name:惟一性约束的名称。nUNIQUE:指定通过惟一索引为给定的一列或多列提供实体完整性约束。nCLUSTERED:指定创建聚集索引。nNONCLUSTERED:指定创建非聚集索引。2021/7/23322

14、使用Transact-SQL语句设置惟一性约束n例4-6 使用Transact-SQL语句创建一个新的数据表“图书基本信息表2”,并为“书名”和“作者”两个字段的组合字段设置惟一性约束。create table temp4(图书编号 int not null ,书名 char(50)not null ,作者 char(20) not null constraint yy unique (书名,作者),出版社 char(50) 2021/7/23334.3 域完整性的设计与实现n域完整性是用来保证在数据表中输入有效的数据值。域完整性可以通过定义字段的数据类型、设置字段非空、检查约束、默认约束和规

15、则来实现。2021/7/23344.3.1 默认约束n默认约束完成的功能是对于设置了默认约束的字段,如果在录入记录时没有提供输入值,则系统会自动为该字段填入默认值。n默认值可以是常量、函数或者空值。2021/7/23351使用企业管理器管理默认约束n例4-7 在“图书基本信息表”中为“类别”字段设置默认约束“计算机”。2021/7/23362使用Transact-SQL语句设置默认约束n可以使用DEFAULT关键字来指定某个字段的默认值。n例4-8 创建“图书基本信息表3”,并为“类别”字段设置默认约束“计算机”。create table 图书基本信息表3(图书编号 int not null

16、,书名 char(50)not null ,作者 char(20) not null constraint tt unique (书名,作者),出版社 char(50),类别 char(20) default 计算机) 2021/7/23374.3.2 检查约束n设置检查约束的目的是对输入的数据值进行检查,满足条件的数据可以保存在数据表中,对于不满足条件的数据则拒绝接受。在某一个数据表中,对于每一个字段可以设置多个检查约束。2021/7/23381使用企业管理器管理检查约束n例4-9 使用企业管理器在“图书基本信息表”中为“定价”字段设置检查约束,要求输入的数据必须大于0。n在表设计器中,右击

17、选择check约束2021/7/23392使用Transact-SQL语句设置检查约束n使用Transact-SQL语句设置检查约束的语法形式如下:nCONSTRAINT constraint_namen CHECK NOT FOR REPLICATIONn (logical_expression)2021/7/23402使用Transact-SQL语句设置检查约束n其中,参数NOT FOR REPLICATION用于指定在把从其他表中复制的数据插入到表中时检查约束对其不发生作用。logical_expression用于指定逻辑表达式,返回值为TRUE或者FALSE。2021/7/23412使

18、用Transact-SQL语句设置检查约束n例4-10 创建“图书基本信息表4”,并为“定价”字段设置检查约束,条件为此字段不能输入小于0的数据。create table 图书基本信息表4(图书编号 int not null ,书名 char(50) ,作者 char(20),定价 real check (定价0),出版社 char(50),类别 char(20) default 计算机) 2021/7/23424.3.3 规则n规则是对存储在数据表中的数据值的规定和限制。规则的功能与CHECK约束的功能相似,但规则是作为一个独立的数据库对象存储在数据库中的,使用规则的好处是可以只创建一次,然

19、后可以绑定到多个字段上。对于数据表中的一个字段列,只能应用一个规则。2021/7/23431使用企业管理器管理规则n例4-11 使用企业管理器创建一个新的规则“RULE_大于0”,要求数据必须大于0。并将之绑定在“图书基本信息表”中的“定价”字段上。在数据库中创建规则,规则文本的写法:id02021/7/23442使用Transact-SQL语句设置规则n例4-12 使用Transact-SQL语句创建一个新的规则“RL_大于等于0”,要求输入的数据必须满足“大于或等于0”的条件。并将之绑定在“图书基本信息表2”中的“定价”字段上。nCREATE RULE id_chk AS id =0n G

20、O nExec sp_bindrule id_chk, 图书基本信息表2.定价 nGO 2021/7/23452使用Transact-SQL语句设置规则A. 范围规则范围规则下例创建一个规则,用以限制插入该规则所绑定的列中的整数范围。 CREATE RULE range_rule AS range = $1000 AND range $20000 B. 列表规则列表规则下例创建一个规则,用以将输入到该规则所绑定的列中的实际值限制为只能是该规则中列出的值。CREATE RULE list_rule AS list IN (1389, 0736, 0877) C. 模式规则模式规则下例创建一个遵循

21、这种模式的规则:任意两个字符的后面跟一个连字符和任意多个字符(或没有字符),并以 0 到 9 之间的整数结尾。CREATE RULE pattern_rule AS value LIKE _ _-%0-9 2021/7/23462使用Transact-SQL语句设置规则n例4-13 使用Transact-SQL语句取消对规则“RL_大于等于0”在“定价”字段上的绑定,并删除此规则。nexec sp_unbindrule 图书基本信息表2.定价nDrop rule id_chk 2021/7/23474.4 参照完整性的设计与实现n设置参照完整性是为了保证数据表之间的数据保持一致,通过在两个数据

22、表之间的主键和外键之间或惟一键和外键之间建立外键约束来实现。2021/7/23481使用企业管理器管理外键约束n例4-14 使用企业管理器创建一个外键约束,使得“图书借阅信息表”中的“图书编码”字段的值必须来源于“图书基本信息表”中的“图书编码”字段的值。n在表设计器中,在工具栏中找到在表设计器中,在工具栏中找到“管理关系管理关系”点击进入。(如下页点击进入。(如下页图)图)2021/7/2349管理关系管理关系2021/7/23502021/7/23512使用Transact-SQL语句设置外键约束n使用Transact-SQL语句设置外键约束的语法形式如下:nCONSTRAINT cons

23、traint_namenFOREIGN KEY (column_name,n)nREFERENCES ref_table (ref_column,n)2021/7/23522使用Transact-SQL语句设置外键约束n其中各参数的说明如下:nREFERENCES:用于指定要建立关联的表的信息。nref_table:用于指定要建立关联的表的名称。nref_column:用于指定要建立关联的表中相关列的名称。2021/7/23532使用Transact-SQL语句设置外键约束n例4-15 使用Transact-SQL语句创建一个外键约束,使得“图书借阅信息表”中的“读者编号”字段的值必须来源于“

24、读者基本信息表”中的“读者编号”字段的值。nALTER TABLE 图书借阅信息表图书借阅信息表ADD CONSTRAINT fk_读者编号读者编号 FOREIGN KEY (读者编号读者编号) REFERENCES 读者基本信读者基本信息表息表(读者编号读者编号) 2021/7/2354查看约束的定义一、使用企业管理器查看约束信息一、使用企业管理器查看约束信息 1在表设计器的窗口中可以查看主键、空值、在表设计器的窗口中可以查看主键、空值、默认值约束信息默认值约束信息2在右键在右键/属性中可以查看外键约束、属性中可以查看外键约束、CHECK约束。约束。二、使用系统存储过程查看约束信息二、使用系

25、统存储过程查看约束信息EXEC sp_help EXEC sp_helptext name2021/7/23554.5 本章小结n在SQL Server 2000中,可以通过对数据表中的数据设置完整性约束,来保证在数据表中输入可靠的和有效的数据。添加、修改或删除各种约束的方法一般是通过企业管理器或通过Transact-SQL语句来实现。2021/7/23564.5 本章小结n数据的完整性主要包括实体完整性、域完整性、参照完整性及用户定义的完整性。n主键约束是最重要和最常用的一种约束。通过定义主键,能够惟一地确定表中的每一条记录。2021/7/23574.5 本章小结nIDENTITY属性约束是在数据表中创建一个标识列,该标识列中的数据由系统自动生成,并且不会重复,因此可以用该标识列来保证数据表中不会出现完全一样的两条记录。2021/7/23584.5 本章小结n惟一性约束可以指定一个或多个字段列的组合值具有惟一性,即不会出现重复的值。在一个数据表中可以为多个字段或字段的组合设置惟一性约束。2021/7/23594.5 本章小结n默认约束完成的功能是对于设置了默认约束的字段,如果在录入记录时没有提供输入值,则系统会自动为该字段填入默认值。默认值可以是常量、函数或者空值。2021/7/23604.5 本章小结n设置检查约束的目的是对输入的数据值进行检查,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论