第8章-数据库-数据完整性约束课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第8章-数据库-数据完整性约束课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 数据 完整性 约束 课件
- 资源描述:
-
1、第第8 8章章 数据完整性约束数据完整性约束8.1 8.1 数据完整性的概念数据完整性的概念8.2 8.2 实现数据完整性实现数据完整性8.3 8.3 系统对完整性约束的检查系统对完整性约束的检查8.4 8.4 删除约束删除约束8.5 8.5 触发器触发器2022年12月16日3时59分18.1 8.1 数据完整性的概念数据完整性的概念o 数据完整性是指数据的正确性和相容性。如数据完整性是指数据的正确性和相容性。如:n 每个人的身份证号必须是唯一的,每个人的身份证号必须是唯一的,n 人的性别只能是人的性别只能是男男或或女女。o 为了维护数据的完整性,为了维护数据的完整性,DBMSDBMS必须要
2、提供一种必须要提供一种机制来检查数据库中的数据。机制来检查数据库中的数据。o 这些加在数据库数据之上的语义约束条件就称这些加在数据库数据之上的语义约束条件就称为为数据完整性约束条件数据完整性约束条件。o DBMSDBMS中检查数据是否满足完整性条件的机制就中检查数据是否满足完整性条件的机制就称为称为完整性检查完整性检查。2022年12月16日3时59分2完整性约束条件的作用对象完整性约束条件的作用对象o列级约束列级约束o元组约束元组约束o关系约束关系约束2022年12月16日3时59分3列级约束列级约束o 主要是对列的类型、取值范围、精度等的约束,主要是对列的类型、取值范围、精度等的约束,包括
3、:包括:n 对数据类型的约束对数据类型的约束:数据类型、长度、精度等:数据类型、长度、精度等例:例:snosno char(8)char(8)n 对数据格式的约束对数据格式的约束:Sno:Sno:2010201001011 10101年年专业专业班号班号序列号序列号n 对取值范围的约束对取值范围的约束:如学生的成绩取值范围为:如学生的成绩取值范围为0 0100100。n 对空值的约束对空值的约束:列:列是否是否允许允许有有空空值值。2022年12月16日3时59分4元组约束元组约束o元组约束是元组中各个字段之间的联元组约束是元组中各个字段之间的联系的约束,如:系的约束,如:n 开始日期小于结束
4、日期开始日期小于结束日期n 订货数量小于等于库存数量订货数量小于等于库存数量n 最低工资不能低于规定的最低值最低工资不能低于规定的最低值2022年12月16日3时59分5关系约束关系约束o是指若干元组之间、关系之间的联系是指若干元组之间、关系之间的联系的约束。比如的约束。比如:n 学号的取值不能重复也不能取空值学号的取值不能重复也不能取空值n 学生修课表中学号的取值受学生表学生修课表中学号的取值受学生表中学号取值的限制等中学号取值的限制等。2022年12月16日3时59分6实现数据完整性的方法实现数据完整性的方法o 可以在服务器端完成,也可以在客户端可以在服务器端完成,也可以在客户端编程实现。
5、编程实现。o 在在服务器端服务器端实现数据完整性的方法主要实现数据完整性的方法主要有两种有两种:n 声明数据完整性声明数据完整性n 触发器触发器o 在在客户端客户端实现数据完整性主要是用前端实现数据完整性主要是用前端开发工具,在应用程序中编写代码保证开发工具,在应用程序中编写代码保证。2022年12月16日3时59分78.2 8.2 实现数据完整性实现数据完整性o 设有如下两张表:设有如下两张表:CREATE TABLE CREATE TABLE 职工表职工表(职工编号职工编号 CHAR(7)NOT NULL,CHAR(7)NOT NULL,职工名职工名 CHAR(10)NOT NULL,CH
6、AR(10)NOT NULL,工作编号工作编号 CHAR(8),CHAR(8),工资工资 SMALLINT,SMALLINT,电话电话 CHAR(8),CHAR(8),身份证号身份证号 CHAR(18)CHAR(18)2022年12月16日3时59分8CREATE TABLE CREATE TABLE 工作表工作表(工作编号工作编号 CHAR(8)NOT NULL,CHAR(8)NOT NULL,最低工资最低工资 SMALLINT,SMALLINT,最高工资最高工资 SMALLINT SMALLINT)1.1.实体完整性约束实体完整性约束o实体完整性是用实体完整性是用PRIMARY KEYPR
7、IMARY KEY来保证来保证。注意:注意:o每个表只能有一个每个表只能有一个PRIMARY KEYPRIMARY KEY约束;约束;o用用PRIMARY KEYPRIMARY KEY约束的列的取值必须是约束的列的取值必须是不重复的(对由多列构成的主键,是不重复的(对由多列构成的主键,是这些主键列组合起来取值不重),并这些主键列组合起来取值不重),并且不允许有空值且不允许有空值。2022年12月16日3时59分9添加主键约束添加主键约束ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 PRIMARY KEY PR
8、IMARY KEY(,n n)2022年12月16日3时59分10示例示例ALTER TABLE ALTER TABLE 职工表职工表 ADD CONSTRAINT PK_EMP ADD CONSTRAINT PK_EMP PRIMARY KEY PRIMARY KEY(职工编号)(职工编号)ALTER TABLE ALTER TABLE 工作表工作表 ADD CONSTRAINT PK_JOB ADD CONSTRAINT PK_JOB PRIMARY KEY PRIMARY KEY(工作编号)(工作编号)2022年12月16日3时59分112.2.唯一值约束唯一值约束o 用用UNIQUEU
9、NIQUE约束实现,用于限制一个列或者是约束实现,用于限制一个列或者是多个列的组合取值不重复。多个列的组合取值不重复。o 用在事实上具有唯一性的属性列上,比如身用在事实上具有唯一性的属性列上,比如身份证号码、驾驶证号码等份证号码、驾驶证号码等。注意。注意:o 有有UNIQUEUNIQUE约束的列允许有一个空值;约束的列允许有一个空值;o 在一个表中可以定义多个在一个表中可以定义多个UNIQUEUNIQUE约束;约束;o 可以在一个列或多个列上定义可以在一个列或多个列上定义UNIQUEUNIQUE约束;约束;2022年12月16日3时59分12在创建表时定义在创建表时定义UNIQUEUNIQUE
10、约束约束CREATE TABLE CREATE TABLE 表名(表名(列名列名 类型类型 CONSTRAINT CONSTRAINT 约束名约束名 UNIQUE UNIQUE(,n n),)或者:或者:CREATE TABLE CREATE TABLE 表名(表名(列名列名 类型类型,CONSTRAINT CONSTRAINT 约束名约束名 UNIQUE UNIQUE(,n n)2022年12月16日3时59分13添加添加UNIQUEUNIQUE约束约束ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 UNIQ
11、UE UNIQUE(,n n)2022年12月16日3时59分14示例示例创建表时定义创建表时定义o 例例2.2.为为“身份证号身份证号”列添加唯一值约束。列添加唯一值约束。CREATE TABLE CREATE TABLE 职工表(职工表(身份证号身份证号 CHAR(19)CHAR(19)UNIQUEUNIQUE,)或:或:CREATE TABLE CREATE TABLE 职工表(职工表(身份证号身份证号 CHAR(19),CHAR(19),UNIQUE(UNIQUE(身份证号身份证号),)2022年12月16日3时59分15示例示例添加约束添加约束ALTER TABLE ALTER TA
12、BLE 职工表职工表 ADD CONSTRAINT UN_EMP ADD CONSTRAINT UN_EMP UNIQUE UNIQUE(身份证号)(身份证号)2022年12月16日3时59分16复合唯一约束示例复合唯一约束示例o 例例3.3.设设authorsauthors表,其中表,其中有有au_fnameau_fname和和au_lnameau_lname两个列,现要限制这两个列组合起来不重复。两个列,现要限制这两个列组合起来不重复。CREATE TABLE authors(CREATE TABLE authors(au_fnameau_fname VARCHAR(20),VARCHAR
13、(20),au_lnameau_lname VARCHAR(20)VARCHAR(20)UNIQUE(au_fnameUNIQUE(au_fname,au_lnameau_lname),-作为列级约束定义作为列级约束定义)2022年12月16日3时59分17复合唯一约束示例复合唯一约束示例CREATE TABLE authors(CREATE TABLE authors(au_fnameau_fname VARCHAR(20),VARCHAR(20),au_lnameau_lname VARCHAR(20),VARCHAR(20),UNIQUE(au_fnameUNIQUE(au_fname,
14、au_lnameau_lname),-作为表级约束定义作为表级约束定义)182022年12月16日3时59分复合唯一约束示例复合唯一约束示例o在已创建好的表上添加唯一值约束:在已创建好的表上添加唯一值约束:ALTER TABLE authorsALTER TABLE authors ADD CONSTRAINT ADD CONSTRAINT UN_NameUN_Name UNIQUE(UNIQUE(au_fnameau_fname,au_lnameau_lname)2022年12月16日3时59分193.3.参照完整性参照完整性o参照完整性(引用完整性)用参照完整性(引用完整性)用FOREIG
15、N KEYFOREIGN KEY约束保证约束保证.o定义定义FOREIGN KEYFOREIGN KEY约束时要注意:约束时要注意:n 外键列引用的列必须是有外键列引用的列必须是有PRIMARY PRIMARY KEYKEY约束或约束或UNIQUEUNIQUE约束的列约束的列,通常,通常是有是有PRIMARY KEYPRIMARY KEY约束约束的列的列。2022年12月16日3时59分20添加外键约束添加外键约束ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 FOREIGN KEY FOREIGN KEY()
16、REFERENCES REFERENCES 引用表名(引用表名()ON DELETE ON DELETE CASCADE|NO ACTION CASCADE|NO ACTION ON UPDATE ON UPDATE CASCADE|NO ACTION CASCADE|NO ACTION o ON DELETEON DELETE:级联或限制删除;:级联或限制删除;o ON UPDATEON UPDATE:级联或限制更新。:级联或限制更新。2022年12月16日3时59分21删除示例删除示例2022年12月16日3时59分22SnoSnameSsexSageSdept08111010811101
17、李勇李勇 男男2121计算机系计算机系08111020811102刘晨刘晨 男男2020计算机系计算机系08111030811103王敏王敏 女女2020计算机系计算机系08111040811104张小红张小红 女女1919计算机系计算机系08211010821101张立张立 男男2020信息管理系信息管理系08211020821102吴宾吴宾 女女1919信息管理系信息管理系08211030821103张海张海 男男2020信息管理系信息管理系SnoCnoGrade0811101C001 960811101C002 800811101C003 840811101C005 620811102C
18、001 920811102C002 900811102C004 840821102C001 760821102C004 850821102C005 730821102C007 NULL0821103C001 500821103C004 8008111020811102刘晨刘晨 男男2020计算机系计算机系0811102C001 920811102C002 900811102C004 84ON DELETE CASCADEON DELETE CASCADEON DELETEON DELETE NO ACTION NO ACTION08111020811102刘晨刘晨 男男2020计算机系计算机系
19、0811102C001 920811102C002 900811102C004 84更新示例更新示例2022年12月16日3时59分23SnoSnameSsexSageSdept08111010811101李勇李勇 男男2121计算机系计算机系08111020811102刘晨刘晨 男男2020计算机系计算机系08111030811103王敏王敏 女女2020计算机系计算机系08111040811104张小红张小红 女女1919计算机系计算机系08211010821101张立张立 男男2020信息管理系信息管理系08211020821102吴宾吴宾 女女1919信息管理系信息管理系0821103
20、0821103张海张海 男男2020信息管理系信息管理系SnoCnoGrade0811101C001 960811101C002 800811101C003 840811101C005 620811102C001 920811102C002 900811102C004 840821102C001 760821102C004 850821102C005 730821102C007 NULL0821103C001 500821103C004 8008111020811102刘晨刘晨 男男2020计算机系计算机系0811102C001 920811102C002 900811102C004 84ON
展开阅读全文