数据库原理与应用电子教案第5章数据的基本管理数据分析与完整性设计_第1页
数据库原理与应用电子教案第5章数据的基本管理数据分析与完整性设计_第2页
数据库原理与应用电子教案第5章数据的基本管理数据分析与完整性设计_第3页
数据库原理与应用电子教案第5章数据的基本管理数据分析与完整性设计_第4页
数据库原理与应用电子教案第5章数据的基本管理数据分析与完整性设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库原理与应用数据库原理与应用 第第05章章 数据的基本管理数据的基本管理数据分析与完整性设计数据分析与完整性设计学习目标:学习目标: 熟练设置数据的完整性2 培养团队协作精神、语言表达能力4熟悉数据的三大完整性要求3 1 熟练创建及应用约束对象和默认对象3 3任务的提出任务的提出在上一部分我们完成了对学生数据进行更新与维护,借助于查询设计器实现了对数据的简单查询。我们在对数据进行更新与查询时不难发现其中的一些问题,如数据之间联系较弱、数据之间存在冗余。因而当进行更新和维护时,总会出现数据不一致的现象,使得数据更新变得困难。需考虑的问题需考虑的问题我们将解决这一问题,解决的方法是建立数据之间

2、的关联关系,加强数据之间的联系。通过使用数据库管理系统提供的一些约束、规则等技术使数据之间建立一种联系,在更新时可以保证数据的合法性。 5.2 数据完整性介绍数据完整性介绍数据库规划的一项非常重要的步骤就是决定保证数据完整性的最好方法。数据的完整性就是指存储在数据库中数据的一致性和正确性。在sql server中,根据数据完整性措施所作用的数据库对象和范围的不同,可以分为三种类型: 实体完整性 域完整性 参照完整性 实体完整性实体完整性 实体完整性也称为行完整性,要求表中的所有行有一个唯一的标识符,这种标识符一般称为主键值。例如在学生信息表中学生的学号应该是唯一的,这样才能唯一的确定某一个学生

3、。主键值是否能够修改或者表中的全部记录是否能够全部删除,这要依赖于主键表和其他表之间要求的完整性 域完整性域完整性 域完整性也称为列完整性,指定一个数据集对某个列是否有效和确定是否允许空值。域完整性通常是经过使用有效性检查来实现的,并且还可以通过限制数据类型、格式或者可能的取值范围来实现。 参照完整性参照完整性 参照完整性保证在主键(在被参考表中)和外键之间的关系总是得到维护。如果在被参照表中的一行被一个外键参考,那么这一行既不能被删除,也不能修改主键值。 5.3 约束的设置约束的设置 主键(primary key)约束 惟一性(unique)约束 外键(foreign key)约束 检查(c

4、heck)约束 默认值 (default) 是否可以为空值(null)约束的创建约束的创建约束在使用create table 或alter table命令创建或修改表时定义的,它与表定义存储在一起,因而在删除表时,约束也被删除默认与默认值约束作用类似,默认值是在创建或修改表时定义的,在删除表时默认值也被删除。而默认是独立于表单独存在的,作为一种数据库对象单独存储,可以被应用于不同的列,在删除表时不会被删除。1.主关键字的定义主关键字的定义primary key 约束标识列或列集,这些列或列集的值惟一地标识表中的行。 在一个表中,不能有两行包含相同的主键值。不能在主键内的任何列中输入 null

5、值。在数据库中 null 是特殊值,代表不同于空白和 0 值的未知值。建议使用一个小的整数列作为主键。每个表都应有一个主键。 一个表中可以有一个以上的列组合,这些组合能惟一标识表中的行,每个组合就是一个主关键字。例题例题【任务5.1】在定义表的同时设置主键,如设置学生信息表中学号列为主键。create table student(sid char(6) primark key, sname varchar(20) )【任务5.2】如果主键包含多列,例如设置学习成绩表中学号和课程号联合为主键,可以使用如下代码 create table grade (sid char(6) , kcid char

6、(6), gradenum smallint constraint pk_num primary key (sid,kcid) )【任务5.3】向已存在的表中添加主键,例如将教师信息表中教师编号列设置为主键,使用代码如下: alter table teacher add constraint pk_num primary key (tid)2.唯一性约束唯一性约束一个表中只能设置一个主键约束。那么对于非主键列,如果我们需要限制其取值的唯一性,可以通过在该列上设置唯一性约束来满足这一要求。唯一性约束的作用是保证在不是主键的列上不会出现重复的数据。 虽然唯一性约束和主键约束都可以保证列取值的唯一性

7、,但它们之间还是有区别的,表现为: 一个表上只能定义一个主键约束,但可以定义多个唯一性约束。 定义了唯一性约束的列上的数据可以为空值(有且只能有一个空值),而定义了主键约束的列上的数据不能为空值。例题例题【任务5.4】在定义表的同时设置唯一性约束键,如设置学生信息表中联系电话列为唯一性约束列,使用代码如下:create table student(sid char(6) primark key, stel varchar(20) unique )【任务5.5】向已存在的表中添加主键,例如将院系信息表中院系名称列设置为唯一性约束列,使用代码如下:alter table collegeaddcon

8、straint u_col_name unique (colname)3.默认约束默认约束数据库中每一行记录中的每一列都应该有一个值,当然这个值也可以是空值。但是有时向一个表中添加数据时不知道某列的值或该列的值当时还不能确定,这时可以将该列定义为允许接受空值或给该列定义一个默认值。默认值就是:当向表中插入数据时,如果用户没有明确给出某一列的值,sql server2000自动为该列添加的值。当使用默认约束时,应考虑下列因素: 该约束只应用与insert语句 每一个列只能定义一个默认约束。 默认约束不能设置在具有identity属性的列上,因为具有identity属性的列可以自动取值,即使在这种

9、列上设置了默认约束也没有什么实际效果。 例题例题【任务5.6】在定义表的同时设置默认约束,如设置学生信息表中性别列默认值为“男”,使用代码如下:create table student(sid char(6) primark key, ssex char(2) default 男, )【任务5.7】向已存在的表中添加默认值,例如将教师信息表中教师性别列设置默认值为男,使用代码如下:alter table teacheraddconstraint def_tsex default 男 for (tsex)4.检查约束检查约束检查约束通过检查一个或多个列的输入值是否符合设定的检查条件来强制数据的完

10、整性。在执行insert或update语句时,该约束验证数据。如果输入的值不符合检查条件,系统将拒绝接受数据的输入。当使用检查约束时应考虑以下因素: 当执行insert语句或者update语句时,该约束验证数据 该约束可以参考本表中的其他列 该约束不能放在有identity属性的列上 该约束不能包含子查询例题例题【任务5.8】在定义表的同时设置检查约束,如设置学习成绩表中成绩列的取值范围为0-100,使用代码如下:create table grade(gradenum smallint check (gradenum 0 and gradenum = 0 and range = 100规则的绑

11、定规则的绑定规则创建成功后,需要将其绑定在数据表的列上,当向数据表的列上绑定了规则后所有对列的插入或更新操作都要满足规则的要求,否则插入和更新操作将无法完成。如果在列或数据类型上已经绑定了规则,那么当再次向他们绑定规则时,旧的规则会自动被新的规则所覆盖 例题例题使用系统存储过程 sp_bindrule 可以将规则捆绑到列或用户自定义的数据类型上。语法格式为:sp_bindrule rulename = 规则名 , objname = 对象名 , futureonly = futureonly_flag 对象名是要绑定规则的表和列或者用户定义数据类型的名称。【任务5.20】将新创建的ch_che

12、ngji规则对象绑定在学习成绩表的成绩列上exec sp_bindrule ch_chengji, grade.gradenum规则的反绑定规则的反绑定使用sp_unbindrule在当前数据库中为列或用户定义数据类型解除规则绑定。 语法格式为: sp_unbindrule objname = 对象名例题例题【任务5.21】将上题绑定的规则对象解除 exec sp_unbindrule grade.gradenum规则的删除规则的删除使用drop rule从当前数据库中删除一个或多个用户定义的规则。 语法格式如下: drop rule 规则名 ,.n 例题例题【任务5.22】删除ch_chengji 对象。 drop rule ch_chengji数据完整性总结数据完整性总结完整性类型约束类型描述域完整性default当使用inse

温馨提示

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

评论

0/150

提交评论