《讲数据完整性》PPT课件.ppt_第1页
《讲数据完整性》PPT课件.ppt_第2页
《讲数据完整性》PPT课件.ppt_第3页
《讲数据完整性》PPT课件.ppt_第4页
《讲数据完整性》PPT课件.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

第九讲 数据完整性,引入,数据完整性(Data Integrity)是指存储在数据库中的数据,应该保持一致性和可靠性。在输入数据时,由于不可避免的种种原因,会发生输入无效或错误信息。如何保持输入的数据符合规定,是数据库系统,尤其是多用户的关系数据库系统首要关注的问题。,安徽新华电脑专修学院,学习目标,默认(Default) 规则(Rull) 约束(Constraint),学习完本课程,您应该能够:,安徽新华电脑专修学院,知识重、难点分析,重点: 默认(Default) 规则(Rull) 和结构的修改 难点: 约束(Constraint),安徽新华电脑专修学院,数据完整性 数据完整性是用来确保数据库中的数据的正确性和可靠性。 实体完整性:实体完整性是为了保证表中的数据唯一,实体完整性可由主键来实现。表中的主键在所有记录上的取值必须唯一。 域完整性:域完整性可以保证数据的取值在有效的范围内。 参照完整性:参照完整性用于确保相关联的表间的数据应保持一致,避免因一个表的记录修改,造成另一个表的内容变为无效的值。一般来说,参照完整性是通过外键和主键来维护的。 自定义完整性:由用户自行定义的,不同于前面种的完整性,也可以说一种强制数据定义。,默认是一种数据库对象,它与默认值约束的功能一样。若用户输入记录时,在没有给出具体的数据的字段中,系统会自动插入一个数据。 默认值用来向无值的列(字段)提供一个预先指定的值。 和规则一样,默认在创建后,必须和某一列绑定才能生效。,任务一 默认,1.1 创建默认 1、 使用企业管理器创建默认,1、 使用企业管理器创建默认,1.1 创建默认 2、使用create default语句创建默认 create default as 功能: 创建称为默认值的对象。 默认值定义是限制列数据的首选,也是标准的方法,因为定义和表存储在一起,当除去表时,将自动除去默认值定义。 常量表达式只包含常量值的表达式,不能包含任何或其他数据库对象的名称。 可以使用任何常量、内建函数或数学表达式。 例: 演示创建默认的使用。 use 学生管理数据库 go create default time_default as getdate(),查看缺省值,查看缺省值,用存储过程Sp_helptext 查看缺省值,例: 查看缺省值today exec sp_helptext today 运行结果如下 - Text - create default dp_date as getdate(),1.2 绑定默认 1、 使用企业管理器绑定默认,绑定列,1.2 绑定默认 2、使用sp_bindefault语句绑定默认 sp_bindefault , 例: 演示绑定默认的使用。 use 学生管理数据库 go sp_bindefault time_default,学生表.入学年份,1.3 解除绑定 使用企业管理器解除绑定 使用sp_unbindefault解除绑定 sp_unbindefault 例:演示解除绑定的使用 use 学生课程数据库 go sp_unbindefault 学生表.入学年份,1.4 删除默认 使用企业管理器删除默认 使用drop default删除默认 drop default 例: 演示删除默认的使用。 use 学生课程数据库 go drop default time_default,注: 默认的使用限制 通过default子句为列(字段)定义默认值或通过sp_unbindefault绑定默认,两者只能选择一种方式。 默认只能用来设置常量或者SQL Server 函数值。 每列(字段)只能与一个默认绑定。 确保默认的数据类型与其绑定列的数据类型一致。 确保默认值与该列的规则一致。 如果默认已经与某列绑定,那么就不能删除它,除非在删除之前,已解除默认和列或数据类型的所有绑定关系。,规则就是数据库中,对存储在数据库中表的列(字段)的规定和限制。 规则是单独存储的独立的数据库对象,规则与作用的表是相互独立的,即表的删除修改,不会对与之相连的规则产生影响。规则和约束可以同时使用表的列,可以有一个规则及多个(check)约束规则。 规则提供了一种加强列(字段)域约束的机制。 规则要在insert和update语句之前给出。,任务二 规则,2.1 创建规则 1、使用企业管理器创建规则,2、使用create rule语句创建规则 格式: create rule rule_name as condition_expression 说明: rule_name:新规则的名称。 condition_expression:定义规则的条件。规则可以是where子句中任何有效的表达式,并且可以包含诸如算术运算符,关系运算符和in、like、between之类的元素。 规则不能引用列或其他数据库对象.可以包含不引用数据库对象的内置函数。 condition_expression包含一个变量,每个局部变量的前面都有一个符号,该表达式引用通过update或insert语句输入的值。 在创建规则时,可使用任何名称或符号表示值,但第一个字符必须是符号。,例:创建考试成绩规则score_rule 。 use 学生课程数据库 go create rule cj_scope as cj_scope between 0 and 100 例: 创建雇佣日期规则hire_date_rule。 create rule hire_date_rule as hire_date = 1980-01-01 and hire_date = getdate(),查看规则,用存储过程Sp_helptext 查看规则,使用Sp_helptext 存储过程可以查看规则的细节: sp_helptext objname = name,例: 查看规则hire_date_rule exec sp_helptext hire_date_rule 运行结果如下 Text - create rule hire_date_rule as hire_date = 1980-01-01 and hire_date = getdate(),2.2 绑定规则 使用企业管理器绑定规则 使用sp_bindrule绑定规则 sp_bindrule , 将规则绑定到列(字段)。 绑定规则时,必须使用引号作为分隔符,参数中的圆点(.)将传递给sp_bindrule 。 例: 演示绑定规则的使用。 use 学生管理数据库 go sp_bindrule score_rule,成绩表.成绩 go insert 成绩表 values(200203002,c801,125),规则绑定到用户的自定义类型,规则绑定到表的列,2.3 解除绑定 使用企业管理器解除绑定 使用sp_unbindrule解除绑定 sp_unbindrule 例: 演示解除绑定的使用。 use 学生课程数据库 go sp_unbindrule 成绩表.成绩,2.4删除规则 使用企业管理器删除规则 使用drop rule删除规则 drop rule 例: 演示删除规则的使用。 use 学生课程数据库 go drop rule score_rule,注: 使用规则的限制条件 规则只能处理常量、函数,不能用来查找表,也不能用来比较表中的列。 表中的每列只能与一条规则绑定。如果某列已经绑定了一条规则,而又为该列绑定了一条新规则,那么旧规则将被新规则代替。 如果规则与某列绑定,那么规则不能被直接删除,须先解除规则与所有的列和数据库类型绑定关系,然后才能用drop rule命令删除。 向系统中大量拷贝数据时,规则不起作用。 在使用规则时,要确保规则中的值与其绑定列的数据类型相一致。,任务三 约束,约束限制了用户可能输入到表或字段中的值。,3.1 约束的定义 在SQL Server系统中,约束的定义主要是通过create table语句或alter table语句来实现的。 使用create table语句,是在建立新表的同时定义了约束。 使用alter table语句,是向已经存在的表中添加约束。 约束可以是字段级约束,也可以是表级约束。字段级约束是把约束放在某个字段列上的,且约束仅对该字段列起作用,表级约束是把约束放在表中的多个字段列上。,1、使用create table语句创建约束 create table table_name ( column_name data_type default constraint_expression := constraint constraint_name null | not null | primary key | unique clustered | nonclustered | foreign key references ref_table (ref_column) | check not for replication ,n ),2、使用alter table语句创建约束 alter table table_name add := constraint constraint_name null | not null | primary key | unique | foreign key references ref_table (ref_column) | default constant_expression | check (logical_expression) ,n | drop constraint constraint_name | column column ,n ,3.2 primary key 约束 在关系数据库中,每个表都有一个能够唯一地标识表中每一行(实体)的字段,即主码或称为主关键字。 数据库系统是通过主码来保证表的实体完整性。 primary key 约束,反映了定义为主码的字段的取值不能重复,且不能取null值。 创建primary key约束时,SQL Server会自动创建一个唯一的簇索引。,1、使用企业管理器创建primary key约束,2、使用查询分析器创建primary key约束,例:创建列级主键约束,无约束名。 use 学生管理数据库 go create table 学生表1 ( 学号 varchar(9) not null primary key, 姓名 varchar(8), 性别 varchar(2), 年龄 tinyint, 所在院系 varchar(10), 班级名 varchar(10), 入学年份 datetime ),例:创建列级主键约束,有约束名。 use 学生管理数据库 go create table 学生表2 (学号 varchar(9) constraint pk_学号 not null primary key, 姓名 varchar(8), 性别 varchar(2), 年龄 tinyint, 所在院系 varchar(10), 班级名 varchar(10), 入学年份 datetime, ),2、使用查询分析器创建primary key约束,例:创建列级主键约束,有约束名。 use 学生管理数据库 go create table 学生表2 (学号 varchar(9), 姓名 varchar(8), 性别 varchar(2), 年龄 tinyint, 所在院系 varchar(10), 班级名 varchar(10), 入学年份 datetime, constraint pk_学号 not null primary key(学号) ),2、使用查询分析器创建primary key约束,例:向表添加列级主键约束,有约束名。 use 学生管理数据库 go alter table 学生表2 add constraint pk_学号 primary key(学号),3、使用查询分析器创建primary key约束,3.3 unique约束 unique约束对某个字段列提供了实体完整性。 unique约束主要用在非主键的列上限制数据的唯一。 按照unique约束的要求,在一个表中不允许任意两行在被约束的字段列上有相同的非空值。 一个表可以有多个unique约束。,1、使用企业管理器创建unique约束,例:创建列级唯一约束,无约束名。 use 学生管理数据库 go create table 课程表3 ( 课程号 varchar(4) not null primary key, 课程名 varchar(12) unique, 先修课 varchar(4) , ),2、使用查询分析器创建unique约束,例:创建列级唯一约束,有约束名。 use 学生管理数据库 go create table 课程表3 ( 课程号 varchar(4) not null primary key, 课程名 varchar(12), 先修课 varchar(4) , constraint u_课程名 unique(课程名) ),2、使用查询分析器创建unique约束,例:向表添加列级唯一约束,有约束名。 use 学生管理数据库 go alter table 课程表3 add constraint u_课程名 unique(课程名),3、使用查询分析器创建unique约束,3.4 foreign key 约束 外码(外关键字)是说明某列的取值必须参照另外表的主码值。一个外码是一个表的主码并且是另一个表的外码。 外码提供了两个表之间的连接。 外码通过强制外码字段的取值必须是另外表中主码字段的有效值,来实施参照完整性。,1、使用企业管理器创建foreign key约束,use 学生管理数据 go create table 成绩表 ( 学号 varchar(9) constraint fk_学号 not null foreign key references 学生表 (学号), 课程号 varchar(4) constraint fk_课程号 not null foreign key references 课程表(课程号), constraint pk_学号_课程号 primary key(学号,课程号), 成绩 tinyint ),2、使用查询分析器创建foreign key约束,例:向表添加列级外键约束,有约束名。 use 学生管理数据库 go alter table 成绩表1 with check add constraint fk_课程号1 foreign key(课程号) references 课程表1(课程号),2、使用查询分析器创建foreign key约束,3.5 default 约束 当用户没有为定义为default约束的字段输入数据时, 由default 约束提供默认的值。 例: use 学生数据库 go create table 成绩表 (学号 varchar(9) constraint fk_学号 not null foreign key references 学生表(学号), 课程号 varchar(4) constraint fk_课程号 not null foreign key references 课程表(课程号), constraint pk_学号_课程号 primary key(学号,课程号), 成绩 tinyint constraint d_成绩 default 0 ),3.6 check约束 check约束限制了字段的取值范围。 与规则相似,check约束限制了向特定的字段列输入数据的类型。 表级定义的check约束可以对多个字段列进行核查。,1、使用企业管理器创建check约束,例:创建列级核查约束,有约束名。 use 学生管理数据库 go create table 成绩表 (学号 varchar(9) constraint fk_学号 not null foreign key references 学生表(学号), 课程号 varchar(4) constraint fk_课程号 not null foreign key references 课程表(课程号), constraint pk_学号_课程号 primary key(学号,课程号),

温馨提示

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

评论

0/150

提交评论