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

下载本文档

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

文档简介

.,第4章数据完整性的设计与实现,.,本章学习目标,掌握数据完整性的分类;掌握如何创建主键约束;掌握设置惟一性约束的方法;掌握设置默认约束的方法;掌握设置检查约束的方法;掌握设置外键约束的方法。,.,4.1概述,数据的完整性主要涉及以下几个方面:(1)实体完整性。(2)域完整性。(3)参照完整性。(4)用户定义的完整性。本章主要介绍前三种数据完整性的设计与实现方法。,.,完整性的概念,之所以要引入数据完整性是为了在数据的添加、删除、修改等操作中不出现数据的破坏或多个表数据不一致数据完整性是指存储在数据库中的数据正确无误并且相关数据具有一致性,.,完整性的类型,实体完整性实体:表中的记录,一个实体就是指表中的一条记录。实体完整性:在表中不能存在完全相同的记录,且每条记录都要具有一个非空且不重复的主键值。实现实体完整性的方法:设置主键、惟一索引、惟一约束、指定IDENTITY属性,.,完整性的类型,域完整性域完整性:向表中添加的数据必须与数据类型、格式及有效的数据长度相匹配。实现实体完整性的方法:CHECK约束、外键约束、默认约束、非空定义、规则以及在建表时设置的数据类型,.,完整性的类型,参照完整性参照完整性:又称为引用完整性。是指通过主键与外键相联系的两个表或两个以上的表,相关字段的值要保持一致。实现实体完整性的方法:外键约束,.,完整性的类型,用户定义的完整性用户定义的完整性:是根据具体的应用领域所要遵循的约束条件由用户自己定义的特定的规则。,.,约束的类型,约束:SQLServer提供的自动强制数据完整性的一种方法。它通过定义列的取值规则来维护数据的完整性。常用约束:NOTNULL,CHECK、UNIQUE、PRIMARYKEY、FOREIGNKEY、DEFAULT,.,约束的类型,主键约束:在表中定义一个主键来惟一标识表中的每行记录特点:每个表中只能有一个主键,主键可是一列,也可是多列;主键不能为空;主键值不能重复;,.,约束的类型,UNIQUE约束:它主要用来限制表的非主键列中的值不能重复。特点:一个表中可以定义多个惟一约束,.,约束的类型,NOTNULL约束:它用来设定某列值不能为空。特点:如果设定某列为NOTNULL,则在添加记录时,则此列必须插入数据。,.,约束的类型,CHECK约束:它使用逻辑表达式来限制表中的列可以接受哪些数据值。例如:成绩值应该在0-100之间,则可以为成绩字段创建CHECK约束,使取值在正常范围内。,.,约束的类型,DEFAULT约束:它为表中某列建立一个默认值,当为表中添加记录时,如果没有提供输入值,则自动以默认值赋给该列。特点:默认值可以为常量、函数或表达式。使用默认值可以提高数据输入的速度。,.,约束的类型,FOREIGNKEY约束外键:是指一个表中的一列或列组合,它虽不是该表的主键,但是另一个表的主键。特点:实现两表之间相关数据的一致性。,返回,.,约束的创建,创建约束的时间:在建表的同时进行创建,也可在已存在的表上创建。如何创建:在企业管理器中创建,或在查询分析器中用SQL命令创建,.,4.2实体完整性的设计与实现,实体完整性要求数据表中的每一行在表中是惟一的实体。采用以下三种方式,即主键约束、IDENTITY属性和惟一性约束。,.,4.2.1主键约束,通过定义主键,能够惟一地确定表中的每一条记录。定义为主键的列不允许为空,且image和text类型的列不能被指定为主键。可以将数据表中的一列或多列的组合定义为主键。,.,1通过企业管理器管理主键约束,例4-1在“图书基本信息表”中为“图书编码”字段设置主键约束。,.,2使用Transact-SQL语句设置主键约束,CONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column_name,n),.,2使用Transact-SQL语句设置主键约束,其中各参数的说明如下:constraint_name:用于指定约束的名称,约束的名称在数据库中应该是惟一的。如果不指定,则系统会自动生成一个约束名。,.,2使用Transact-SQL语句设置主键约束,CLUSTERED|NONCLUSTERED:用于指定索引的类型,即聚簇索引或者非聚簇索引,CLUSTERED为默认值。column_name:用于指定主键的列名。主键最多由16个列组成。,.,2使用Transact-SQL语句设置主键约束,例4-2重新创建“读者基本信息表”,并为其中的“读者编号”字段设置主键约束。createtablememberinfo(memberidchar(12)notnullprimarykey,memnamechar(10)null,memphonechar(11)null)或者已建好表后,使用:Altertablememberinfoaddconstraintxxprimarykey(memberid,memname),.,4.2.2IDENTITY属性,可以使用IDENTITY属性来实现实体完整性。方法是在数据表中创建一个标识列,该标识列中的数据由系统自动生成。,.,1通过企业管理器管理IDENTITY属性,例4-3使用企业管理器创建一个新的数据表TEMP1,包含4个字段:图书编码、书名、作者、出版社,并将图书编号字段设置成一个标识列,列中的数据从1开始,每次增加1。,.,2使用Transact-SQL语句设置IDENTITY属性,使用Transact-SQL语句设置IDENTITY属性的语法形式如下:IDENTITY(种子,递增量)其中,“种子”是初始值;“递增量”是每次增加的数值。说明:必须同时指定种子和递增量,或者二者都不指定。如果二者都未指定,则默认为(1,1)。,.,2使用Transact-SQL语句设置IDENTITY属性,例4-4使用Transact-SQL语句创建一个新的数据表TEMP2,包含4个字段:图书编码、书名、作者、出版社,并将图书编码字段设置成一个标识列,列中的数据从3开始,每次增加2。createtabletemp2(图书编号intnotnullidentity(3,2),书名char(50),作者char(20),出版社char(50),.,4.2.3惟一性约束,惟一性约束可以指定一个或多个字段列的组合值具有惟一性,即不会出现重复的值。在一个数据表中可以为多个字段或字段的组合设置惟一性约束。,.,1通过企业管理器管理惟一性约束,例4-5使用企业管理器在“图书基本信息表”中为“书名”和“作者”两个字段的组合字段设置惟一性约束。在表设计器中,右击选择属性,选择索引/键选项卡。选择新建命令。系统分配的名称出现在索引名框中。在列名下展开列的列表,选择要将约束附加到的列。若要将约束附加到多个列,在后续行中选择其它的列。选择创建UNIQUE复选框。选择约束选项。,.,2使用Transact-SQL语句设置惟一性约束,使用Transact-SQL语句设置惟一性约束的语法形式如下:CONSTRAINTconstraint_nameUNIQUECLUSTERED|NONCLUSTERED(column_name,n),.,2使用Transact-SQL语句设置惟一性约束,各参数说明如下:constraint_name:惟一性约束的名称。UNIQUE:指定通过惟一索引为给定的一列或多列提供实体完整性约束。CLUSTERED:指定创建聚集索引。NONCLUSTERED:指定创建非聚集索引。,.,2使用Transact-SQL语句设置惟一性约束,例4-6使用Transact-SQL语句创建一个新的数据表“图书基本信息表2”,并为“书名”和“作者”两个字段的组合字段设置惟一性约束。createtabletemp4(图书编号intnotnull,书名char(50)notnull,作者char(20)notnullconstraintyyunique(书名,作者),出版社char(50),.,4.3域完整性的设计与实现,域完整性是用来保证在数据表中输入有效的数据值。域完整性可以通过定义字段的数据类型、设置字段非空、检查约束、默认约束和规则来实现。,.,4.3.1默认约束,默认约束完成的功能是对于设置了默认约束的字段,如果在录入记录时没有提供输入值,则系统会自动为该字段填入默认值。默认值可以是常量、函数或者空值。,.,1使用企业管理器管理默认约束,例4-7在“图书基本信息表”中为“类别”字段设置默认约束“计算机”。,.,2使用Transact-SQL语句设置默认约束,可以使用DEFAULT关键字来指定某个字段的默认值。例4-8创建“图书基本信息表3”,并为“类别”字段设置默认约束“计算机”。createtable图书基本信息表3(图书编号intnotnull,书名char(50)notnull,作者char(20)notnullconstraintttunique(书名,作者),出版社char(50),类别char(20)default计算机),.,4.3.2检查约束,设置检查约束的目的是对输入的数据值进行检查,满足条件的数据可以保存在数据表中,对于不满足条件的数据则拒绝接受。在某一个数据表中,对于每一个字段可以设置多个检查约束。,.,1使用企业管理器管理检查约束,例4-9使用企业管理器在“图书基本信息表”中为“定价”字段设置检查约束,要求输入的数据必须大于0。在表设计器中,右击选择check约束,.,2使用Transact-SQL语句设置检查约束,使用Transact-SQL语句设置检查约束的语法形式如下:CONSTRAINTconstraint_nameCHECKNOTFORREPLICATION(logical_expression),.,2使用Transact-SQL语句设置检查约束,其中,参数NOTFORREPLICATION用于指定在把从其他表中复制的数据插入到表中时检查约束对其不发生作用。logical_expression用于指定逻辑表达式,返回值为TRUE或者FALSE。,.,2使用Transact-SQL语句设置检查约束,例4-10创建“图书基本信息表4”,并为“定价”字段设置检查约束,条件为此字段不能输入小于0的数据。createtable图书基本信息表4(图书编号intnotnull,书名char(50),作者char(20),定价realcheck(定价0),出版社char(50),类别char(20)default计算机),.,4.3.3规则,规则是对存储在数据表中的数据值的规定和限制。规则的功能与CHECK约束的功能相似,但规则是作为一个独立的数据库对象存储在数据库中的,使用规则的好处是可以只创建一次,然后可以绑定到多个字段上。对于数据表中的一个字段列,只能应用一个规则。,.,1使用企业管理器管理规则,例4-11使用企业管理器创建一个新的规则“RULE_大于0”,要求数据必须大于0。并将之绑定在“图书基本信息表”中的“定价”字段上。在数据库中创建规则,规则文本的写法:id0,.,2使用Transact-SQL语句设置规则,例4-12使用Transact-SQL语句创建一个新的规则“RL_大于等于0”,要求输入的数据必须满足“大于或等于0”的条件。并将之绑定在“图书基本信息表2”中的“定价”字段上。CREATERULEid_chkASid=0GOExecsp_bindruleid_chk,图书基本信息表2.定价GO,.,2使用Transact-SQL语句设置规则,A.范围规则下例创建一个规则,用以限制插入该规则所绑定的列中的整数范围。CREATERULErange_ruleASrange=$1000ANDrange$20000B.列表规则下例创建一个规则,用以将输入到该规则所绑定的列中的实际值限制为只能是该规则中列出的值。CREATERULElist_ruleASlistIN(1389,0736,0877)C.模式规则下例创建一个遵循这种模式的规则:任意两个字符的后面跟一个连字符和任意多个字符(或没有字符),并以0到9之间的整数结尾。CREATERULEpattern_ruleASvalueLIKE_-%0-9,.,2使用Transact-SQL语句设置规则,例4-13使用Transact-SQL语句取消对规则“RL_大于等于0”在“定价”字段上的绑定,并删除此规则。execsp_unbindrule图书基本信息表2.定价Dropruleid_chk,.,4.4参照完整性的设计与实现,设置参照完整性是为了保证数据表之间的数据保持一致,通过在两个数据表之间的主键和外键之间或惟一键和外键之间建立外键约束来实现。,.,1使用企业管理器管理外键约束,例4-14使用企业管理器创建一个外键约束,使得“图书借阅信息表”中的“图书编码”字段的值必须来源于“图书基本信息表”中的“图书编码”字段的值。在表设计器中,在工具栏中找到“管理关系”点击进入。(如下页图),.,.,.,2使用Transact-SQL语句设置外键约束,使用Transact-SQL语句设置外键约束的语法形式如下:CONSTRAINTconstraint_nameFOREIGNKEY(column_name,n)REFERENCESref_table(ref_column,n),.,2使用Transact-SQL语句设置外键约束,其中各参数的说明如下:REFERENCES:用于指定要建立关联的表的信息。ref_table:用于指定要建立关联的表的名称。ref_column:用于指定要建立关联的表中相关列的名称。,.,2使用Transact-SQL语句设置外键约束,例4-15使用Transact-SQL语句创建一个外键约束,使得“图书借阅信息表”中的“读者编号”字段的值必须来源于“读者基本信息表”中的“读者编号”字段的值。ALTERTABLE图书借阅信息表ADDCONSTRAINTfk_读者编号FOREIGNKEY(读者编号)REFERENCES读者基本信息表(读者编号),.,查看约束的定义,一、使用企业管理器查看约束信息1在表设计器的窗口中可以查看主键、空值、默认值约束信息2在右键/属性中可以查看外键约束、CHECK约束。二、使用系统存储过程查看约束信息EXECsp_helpEXECsp_helptextname,.,4.5本章小结,在SQLServer2000中,可以通过对数据表中的数据设置完整性约束,来保证在数据表中输入可靠的和有效的数据。添加、修改或删除各种约束的方法一般是通过企业管理器或通过Transact-SQL语句来实现。,.,4.5本章小结,数据的完整性主要包括实体完整性、域完整性、参照完整性及用户定义的完整性。主键约束是最重要和最常用的一种约束。通过定义主键,能够惟一地确定表中的每一条记录。,.,4.5本章小结,IDENTITY属性约束是在数据表中创建一个标识列,该标识列中的数据由系统自动生成,并且不会重复,因此可以用该标识列来保证数据表中不会出现完全一样的两条记录。,.,4.5本章小结,惟一性约束可以指定一个或多个字段列的组合值具有惟一性,即不会出现重复的值。在一个数据表中可以为多个字段或字段的组合设置惟一性约束。,.,4.5本章小结,默认约束完成的功能是对于设置了默认约束的字段,如果在录入记录时没有提供输入值,则系统会自动为该字段填入默认值。默认值可以是常量、函数或者空值。,.,4.5本章小结,设置检查约束的目的是对输入的数据值进行检查,满足条件的数据可以保存在数据表中,对于不满足条件的数据则拒绝接受。在某一个数据表中,对于每一个字段可以设置多个检查约束。,.,4.5本章小结,规则是对存储在数据表

温馨提示

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

评论

0/150

提交评论