第五章(数据库完整性)
数据库第五章习题及答案
数据库第五章习题及答案本文档为数据库第五章的习题及答案,帮助读者巩固数据库相关知识。
习题1. 数据库的优点有哪些?数据库具有以下优点: - 数据共享:多个用户可以同时访问和共享数据库中的数据。
- 数据一致性:数据库提供事务管理能力,保证了数据的一致性。
- 数据持久性:数据在数据库中是永久存储的,不会因为系统关机或程序结束而丢失。
- 数据冗余度低:数据库通过规范化设计,减少了数据的冗余性,提高了数据的存储效率。
- 数据独立性:数据库支持数据与应用程序的独立性,提高了系统的灵活性和维护性。
- 数据安全性:数据库提供了用户权限管理和数据备份机制,保证了数据的安全性。
2. 数据库的三级模式结构是什么?数据库的三级模式结构包括: - 外模式(视图层):外模式是用户所看到的数据库的子集,用于描述用户对数据库的逻辑视图。
每个用户可以有不同的外模式来满足自己的需求。
- 概念模式(逻辑层):概念模式是全局数据库的逻辑结构和组织方式,描述了数据的总体逻辑视图。
概念模式独立于具体的应用程序,是数据库管理员的角度来看待数据库的。
- 内模式(物理层):内模式是数据库的存储结构和物理组织方式,描述了数据在存储介质上的实际存储方式。
3. 数据库的完整性约束有哪些?数据库的完整性约束包括: - 实体完整性约束:确保表的主键不为空,每个实体都能够唯一标识。
- 参照完整性约束:确保外键的引用关系是有效的,即外键值必须等于被引用表中的主键值或者为空。
- 用户定义完整性约束:用户可以自定义额外的完整性约束,如检查约束、唯一约束、默认约束等。
4. 数据库的关系模型有哪些特点?数据库的关系模型具有以下特点: - 数据用二维表的形式进行组织,表由行和列组成,每一行表示一个实体,每一列表示一个属性。
- 表与表之间通过主键和外键建立关联关系,形成关系。
- 关系模型提供了一种数据独立性的设计方法,使得应用程序与数据的逻辑结构相分离,提高了系统的灵活性和可维护性。
(完整版)第五章_数据库完整性(习题)
(完整版)第五章_数据库完整性(习题)一、选择题1.完整性检查和控制的防范对象是( ),防止它们进入数据库。
安全性控制的防范对象是(),防止他们对数据库数据的存取。
A.不合语义的数据 B。
非法用户 C.不正确的数据 D.非法操作2.找出下面SQL命令中的数据控制命令().A。
GRANT MIT C.UPDATE D.SELECT3.下述SQL命令中,允许用户定义新关系时,引用其他关系的主码作为外码的是()。
A。
INSERT B。
DELETE C.REFERENCES D. SELECT4.下述SQL命令的短语中,不用于定义属性上约束条件的是()。
A.NOT NULL短语 B。
UNIQUE短语 C.CHECK短语 D。
HAVING短语二、填空题1.数据库的完整性是指数据的正确性和相容性.2.关系模型的实体完整性在CREATE TABLE中用 primary key 关键字来实现。
3.检查主码值出现不唯一和有一个为空违约情况时,则DBMS拒绝插入或修改。
4.关系模型的参照完整性在CREATE TABLE中用 foreign key关键字来实现。
5.当参照完整性检查出现违约情况时,则DBMS可以采用拒绝、级联和设置为空策略处理。
6.参照完整性的级连操作的关键字是cascade .7.在CREATE TABLE中定义属性上的约束条件,包括not null 、unique 和 check。
8.在CREATE TABLE中定义属性上的约束条件,检查列值唯一用unique 关键字。
9.关系模型的元组上的约束条件的定义,在CREATE TABLE中用check关键字来实现。
10.在Sno(学号)列上创建约束,要求Sno的值在18至22岁之间,约束名Sno_CK。
请写出对应的完整性命名子句constraintSno_CK primary key check(sno between 18 and 22)。
1.A C ;BD 2. A 3。
第5章sql数据库完整性约束
5.2.4 默认值(DEFAULT)约束
默认约束是指在用户未提供某些列的数据时,数据库 系统为用户提供的默认值。从而简化应用程序代码和提高 系统性能。 表的每一列都可包含一个DEFAULT定义。可以修改或 删除现有的DEFAULT定义,但必须首先删除已有的 DEFAULT定义,然后通过新定义重新创建。 1.利用Management Studio定义(删除)default约束 步骤1:右键要建立default约束的表选择“修改”。 步骤2:在弹出的窗口中对应字段的“默认值或绑定”处 输入默认值。 步骤3:点击保存即可。
PRIMARY KEY约束在表中定义一个主键,唯一的标 识表中的行。一个表只能有一个PRIMARY KEY约束。
当向表中的现有列添加PRIMARY KEY约束时,SQL Server将检查列中现有的数据以确保现有数据遵从主键的 规则,即无空值、无重复值。 每个表都应有一个主键。主键可以是一列或列组合。
CREATE TABLE kc_new (5-4)
(课程号 CHAR(4) NOT NULL CONSTRAINT pk_kch1 PRIMARY KEY, 课程名 CHAR(16) NOT NULL CONSTRAINT ix_kcm1 UNIQUE,
学分 SMALLINT,
数据库系统概论第五章完整性
一、选择题1.实体完整性要求主属性不能取空值,这一点可通过( )来保证。
A .定义外部键B .定义主键C .用户定义的完整性D .由关系系统自动答案:B2. ( )定义了对参照关系的外部属性值域的约束。
A .实体完整性规则B .用户定义的完整性规则C .参照完整性规则D .以上均不是答案:C3.在如下2个数据库的表中,若雇员信息表EMP 的主键是雇员号,部门信息表DEPT 的主键是部门号。
若执行所列出的操作,哪个操作不能执行( )EMP DEPTA .从雇员信息表EMP 中删除行(’010’,’’王利,’01’,’1200’)B .在雇员信息表EMP 中插入行(’102’,’赵丽’,’01’,’1500’)C .将雇员信息表EMP 中雇员号=’010’的工资改为1600元D .将雇员信息表EMP 中雇员号=’101’的部门号改为’05’答案:D4.关系数据库中,实现主码标识元组的作用是通过( )A .实体完整性规则B .参照完整性规则C .用户自定义的完整性D .属性的值域答案:A5.在关系数据库中,实现“表中任意两行不能相同”的约束是靠( )A .外码B .主码C .属性D .列答案:B6.关系数据库中,实现表与表之间的联系是通过( )A .实体完整性规则B .参照完整性规则C .用户自定义的完整性D .值域答案:B雇员号 雇员名 部门号 工资001 张红 02 2000 010 王利 01 1200056 马明 02 1000101 赵丽 04 1500 部门号 部门名 主任 01 业务部 李林02 销售部 江平 03 服务部 周明 04 财务部 陈胜7.根据关系模式的完整性规则,一个关系中的“主键”()A.不能有两个B.不能成为另一个关系的外部键C.不允许为空D.可以取空值答案:C8.在关系模型中,实现“关系中不允许发现相同的元组”的约束是通过()A.候选键B.主键C.外键D.一般键答案:B二、填空题1.为了维护数据库中数据的完整性,在对关系数据库执行插入时首先应检查__________规则。
第五章-完整性约束
第五章-完整性约束⽬录1. 概述数据库的完整性指数据的正确性(correctness)和相容性(compat-ability)。
正确性:指数据符合现实语义。
相容性:指同⼀对象在不同关系表中的数据是符合逻辑的。
为了维护数据库的完整性,数据库管理系统(DBMS)必须实现如下功能:定义完整性约束在SQL标准中定义了⼀系列定义完整性约束的语句。
完整性检查检查数据是否符合完整性约束条件的机制成为完整性检查。
完整性检查通常在INSERT、UPDATE、DELETE语句执⾏后开始检查,也可在事务提交时检查。
违约处理在DBMS发现⽤户的操作违背了完整性约束条件,将采取⼀定的操作。
关系数据库管理系统使得完整性控制成为其核⼼⽀持的功能,从⽽能为所有⽤户和应⽤提供⼀致的数据库完整性。
数据库完整性主要分为:实体完整性、参照完整性和⽤户定义完整性。
在下⽂中,我将逐⼀介绍上述三类完整性,并且还会介绍⼀些SQL中定义的⼀些特性。
2. 实体完整性定义实体完整性⽰例:CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY, -- 在列⼀级定义主码Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)PRIMARY KEY(Sno) -- 在表⼀级定义主码);实体完整性检查和违约处理使⽤PRIMARY KEY短语定义关系的主码后。
每当⽤户插⼊或更新记录时,DBMS都会⾃动进⾏实体完整性检查:检查主码是否唯⼀,若不唯⼀便拒绝插⼊或修改。
检查主码的各个属性是否为空,若存在为空便拒绝插⼊或修改。
3. 参照完整性关系模型的参照完整性在创建表时使⽤FOREIGN KEY短语定义参照关系。
定义参照完整性⽰例:CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT,PRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno), -- 定义表级参照完整性FOREIGN KEY (Cno) REFERENCES Student(Cno) -- 定义表级参照完整性);参照完整性检查如你所知,参照完整性将两个表中相应的元组联系起来。
第5章 数据库完整性
第5章数据库安全性(2课时)数据库的数据保护主要包括数据的安全性和数据的完整性。
数据的安全性是为了保护数据库防止恶意的破坏和非法访问,防范对象是非法用户和非法操作。
数据库的完整性是指数据的正确性和相容性,是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据,防范对象是不合语义的、不正确的数据。
举例说明数据的完整性(三种完整性各一例)。
为维护数据库的完整性,DBMS必须具备三个功能:1 提供定义完整性约束条件的机制完整性约束条件也称为完整性约束规则,是数据库必须满足的语义约束条件。
SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。
这些完整性一般由SQL的DDL语句来实现。
它们作为数据库模式的一部分存入数据字典中。
2 提供完整性检查的方法DBMS中检查数据是否满足完整性约束条件的机制称为完整性检查。
一般在INSERT、UPDA TE、DELETE语句执行后开始检查,也可以在事务提交时检查。
检查这些操作执行后数据库中的数据库是否违背了完整性约束条件。
3 违约处理DBMS若发现用户的操作违背了完整性约束条件,就采取一定的动作,如拒绝(NOACTION)执行该操作,或级联(CASCADE)执行其他操作,进行违约处理以保证数据的完整性。
目前商用的DBMS产品都支持完整性控制,即完整性定义、检查控制和违约处理都是由DBMS来实现,不必由应用程序来完成,从而减轻了应用程序员的负担。
5.1 实体完整性是关系的两个不变性之一,关系的主属性的取值不能相同,主属性不能取空值,保证在一个关系中不存在两个完全相同的元组。
5.1.1 实体完整性定义关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。
对单属性构成的码有两种说明方法:一种是定义为列级约束条件;一种是定义为表级约束条件。
对多个属性构成的码只有一种说明方法:定义为表级约束条件。
第5章数据库完整性
4. 修改被参照关系中主码的问题
两种策略 不允许修改主码 允许修改主码 违约操作 要修改被参照关系中某些元组的主码值,而 修改被参照关系中某些元组的主码值 中某些元组的主码值, 参照关系中有些元组的外码值正好等于被参 照关系要修改的主码值,如修改Student学号; 照关系要修改的主码值,如修改 学号; 学号
受限插入:系统将拒绝向 关系插入 关系插入( 受限插入:系统将拒绝向SC关系插入(99001, , 1,90)元组. , )元组. 递归插入:系统将首先向 递归插入:系统将首先向Student关系插入 关系插入 Sno=99001的元组,然后向 关系插入 的元组, 的元组 然后向SC关系插入 (99001,1,90)元组. , , )元组.
级联修改 修改被参照关系中主码值同时, 修改被参照关系中主码值同时,用相同的方法修改 参照关系中相应的外码值; 参照关系中相应的外码值; 受限修改 拒绝此修改操作. 拒绝此修改操作.只当参照关系中没有任何元组的 外码值等于被参照关系中某个元组的主码值时, 外码值等于被参照关系中某个元组的主码值时,这 个元组的主码值才能被修改; 个元组的主码值才能被修改; 置空值修改 修改被参照关系中主码值, 修改被参照关系中主码值,同时将参照关系中相应 的外码值置为空值; 的外码值置为空值;
实体完整性
表中的Sno, Cno定义为码 例:将SC表中的 表中的 定义为码
CREATE TABLE SC ( Sno CHAR(7) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), );
实体完整性
实体完整性检查和违约处理
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题
数据库应用基础第五章数据完整性
5.2 约束的类型
1 PRIMARY KEY 约束 2 FOREIGN KEY 约束 3 UNIQUE 约束 4 CHECK 约束 5 DEFAULT 约束
13
约束是一种强制数据完整性的 book_id borrower_id lend_date back_date
标准机078制9 。 960651
[[CONSTRAINT constraint_name] {PRIMARY KEY
所在列的数据类型
[CLUSTERED|NONCLUSTERED]
创建约[C束LU的S列|TUE的RN名EIQD称|UNEONCLUSTERED] |[FOREIGN KEY] REFERENCES新建约束的名称
ref_table [(ref_column)]
(3)引用完整性 引用完整性用于在输入或删除记录
时,例:保对持于表之Lib间ra已ry定_D义B数的据关库系中。的
book_info 表和 class 表,引用完整性 基于 book_info 表中的外键 (class_id) 与 class 表中的主键 (class_id) 之间 的关系 。
8
1 数据完整性的类型
{(column_name[,...])}
24
② FOREIGN KEY 约束
ALTER TABLE table_name
被FOREIGN
ADD CONSTRAINT constrainKtE_Yn约a束m参e 照的表的名
FOREIGN KEY {(column_nam称e[,...])} REFERENCES ref_table {(column_name[,...])} [ON DELETE {CASCADE|NO ACTION}] [ON UPDATE {CASCADE|NO ACTION}]
第五章 数据库完整性
例2:将SC表中的SNO、cno属性组定义为码 create table sc (sno char(9) not null, cno char(4) not null, grade smallint, primary key(sno,cno) )
8
5.1.2 实体完整性的违约处理
对于实体完整性的检查,包括:
在子表中修改外码(也是主属性)的策略
6. 在参照关系(子表)中修改外码(同时是主码 属性 )。与在参照关系中插入元组类似,可以 有2种策略: 受限修改 递归修改 RDBMS在实现参照完整性时: 需要向用户提供定义主码、外码的机制。 向用户提供按照自己的应用要求选择处理依 赖关系中对应的元组的方法。
6
5.1 实体完整性
5.1.1 定义实体完整性 例1:将student表中的sno属性定义为码 create table student (sno char(9) primary key, sname char(20) not null, ssex char(2), sage smallint, sdept char(20) )
26
5.4 完整性约束命名子句
1. 完整性约束命名子句 Constraint <完整性约束条件名><完整性约 束条件> 例5.10 建立学生登记表 student,要求学号在 90000—99999 之间,姓名不能取空值,年 龄小于30,性别只能是“男”或者“女”
5
数据库完整性控制机制
DBMS完整性控制机制: 1. 提供定义完整性约束条件的机制:提供定义数 据完整性约束条件的方法,完整性约束条件作为 模式的一部分存入数据库中; 2. 提供完整性检查的方法:进行完整性检查,检 查数据是否满足约束条件; 3. 进行违约处理:若有违反,采取相应措施(拒 绝、报告、改正)处理。 完整性子系统:DBMS中执行完整性控制的子系统。 其功能为监督事务的执行,测试其是否违反完整性 约束条件;若有违反,则分情况进行预定的处理。
05_数据库完整性
全表扫描.依次判断表中每条记录的主码值与 将插入记录上的主码值(或修改的新主码值) 是否相同.十分耗时. 在主码上自动建立索引(如B+树索引).可大 大提高效率.
5.2 参照完整性
5.2.1 参照完整性定义
在CREATE TABLE中用FOREIGN KEY短语来定 义哪些列为外码,用REFERENCES短语指明这 些外码参照哪些表的主码. 见课本P154 [例3]
定义触发器(续)
INSERT,UPDATE和DELETE三个选项是指定在表或视图 上执行哪些数据修改语句时将激活触发器的关键字.必须 至少指定一个选项.在触发器定义中允许使用以任意顺序 组合的这些关键字.如果指定的选项多于一个,需用逗号 分隔这些选项. AS后是触发器要执行的操作. CREATE TRIGGER 权限默认授予定义触发器的表所有者, sysadmin 固定服务器角色成员以及 db_owner 和 db_ddladmin 固定数据库角色成员,并且不可转让.
ALTER TABLE <表名> DROP < 完整性约束条件名>
5.6 触发器(Trigger)
触发器是用户定义在关系表上的一类由事件驱动的 特殊过程.一旦定义,任何用户对表的增,删,改 操作均由服务器自动激活相应的触发器,在DBMS 核心层进行集中的完整性控制.触发器类似于约束, 但是比约束更加灵活,可实施比FOREIGN KEY约 束,CHECK约束更为复杂的检查和操作,具有更 精细和更强大的数据控制能力.
定义触发器(续)
当你创建一个触发操作时,通常需说明所指的是触发语句 作用之前还是之后的列值.由于此种原因,我们用两个取 有特殊名字的虚拟表格来测试触发语句的作用:deleted 和inserted(在内存中,触发器完成运行后,这些表就不 能再访问). 这些表和指定触发器的表具有相同的结构. deleted表保 存受delete和update影响的行的副本.inserted表保存在 insert和update之后添加到触发器中的行的副本.
数据库系统概论第五章数据库的完整性PPT课件
02 数据完整性的实现方式
实体完整性
实体完整性定义
确保表中每条记录的唯一性,通常通过主键约 束来实现。
主键约束
主键是表中的一个或多个字段的组合,其值唯 一标识表中的每条记录。
主键的作用
确保表中数据的唯一性,防止重复记录的出现。
数据库完整性技术面临的挑战和机遇
数据量爆炸式增长
01
随着大数据时代的来临,数据库完整性面临数据量爆炸式增长
带来的存储、处理和管理挑战。
法规遵从与隐私保护
02
随着法规对数据保护的要求日益严格,数据库完整性需满足法
规遵从和隐私保护的需求。
技术创新与市场机遇
03
数据库完整性技术的发展将带来新的市场机遇,推动相关产业
参照完整性定义
维护数据库表之间的关系,确保引用数据的 一致性和准确性。
级联更新和删除
当父表中的数据发生变化时,自动更新或删 除子表中的相关数据。
外键约束
通过在子表中设置外键来引用父表的主键, 确保子表中数据与父表数据的一致性。
更新和删除规则
定义当父表中的数据发生变化时,如何处理 子表中的相关数据。
视图完整性
THANKS FOR WATCHING
感谢您的观看
视图完整性定义
基于一个或多个表的查询结果 集创建视图,并确保该结果集
的完整性。
视图的作用
提供了一个虚拟表,可以基于 现有表的数据进行查询和操作 。
视图的限制
通过在视图上定义约束来确保 数据的完整性和准确性。
视图与数据操作
对视图进行查询、更新、插入 和删除操作时,必须遵守视图
数据库系统概论版PPT课件
掌握DBMS完整性控制机制的三个方面,即完 整性约束条件的定义、检查和违约处理。
用SQL语言定义关系模式的完整性约束条件。 包括定义主码、参照完整性;定义与应用有 关的完整性。
难点:
如何实现完整性的策略,以确保数据的正确 与有效。较复杂的是参照完整性的实现机制。
3
数据库完整性
数据库的完整性
16
参照完整性检查和违约处理
[练习]对表SC和Course,可能破坏参照完 整性的操作情况
SC表增加一个元组 修改SC表的一个元组 从Course表删除一个元组 修改Course表中一个元组的Cno属性值
17
参照完整性检查和违约处理
可能破坏参照完整性的情况及违约处理
被参照表 (例如Student)
数据的正确性和相容性 数据的完整性和安全性是两个不同概念
数据的完整性 防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据
数据的安全性 防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作
4
数据库完整性(续)
为维护数据库的完整性,DBMS必须:
提供定义完整性约束条件的机制 提供完整性检查的方法 违约处理
9
实体完整性定义(续)
[例2]将SC表中的Sno,Cno属性组定义为码
CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/);
20
在主表中修改主码例
例:将S关系中Sno=950001的元组中Sno 值改为960123。设SC关系中有4个元组 的Sno=950001
第五章-完整性控制
默认策略
级联(CASCADE)操作
设置为空值(SET-NULL)
对于参照完整性,除了应该定义外码,还应定 义外码列是否允许空值
参照完整性检查和违约处理(续)
1、在被参照关系中删除元组的问题 2、在参照关系中插入元组时的问题 3、在参照关系中,修改外码的问题 4、修改被参照关系中主码的问题
参照完整性的常见实现机制包括:
外键(Foreign Key)
检查(Check) 触发器(Trigger) 存储过程(Stored Procedure)
5.2.1 参照完整性定义(续)
在输入或删除记录时,可以用来保持所有表之间定
义的关系,以确保键值在所有表中一致。 关系模型的参照完整性定义
完整性定义(续)
一条完整性规则可以用一个五元组 (D,O,A,C,P) 表示:
(1)D(Data) 约束作用的数据对象; (2)O(Operation) 触发完整性检查的数据库操作,即当用户 发出什么操作请求时需要检查该完整性规则,是立即检查 还是延迟检查; (3)A(Assertion) 数据对象必须满足的断言或语义约束,这 是规则的主体; (4)C(Condition) 选择A作用的数据对象值的谓词; (5)P(Procedure) 违反完整性规则时触发的过程。
违约处理
如果发现用户的操作请求使数据违背了完整性约束条件, 则采取一定的动作来保证数据的完整性。
违约处理(续)
违反实体完整性规则和用户定义的完整性规则的操 作:
一般是拒绝执行 违反参照完整性的操作:
拒绝执行
接受这个操作,同时执行一些附加的操作,以保证数 据库的状态正确
第五章 数据库完整性
《数据库》第五章 数据完整性与约束
必须与引用表中指定的列的值匹配。
15
Inspur Education
▪ 外键约束
–外键约束相关的概念:
oracle– 中外是键其常:他外表用键的约主约束 键定 列束义。中的的用引用法了其他表的的列或列集,一般
– 引用键:外键引用的其他表的唯一键或主键。 – 从表或子表:包含外键的表。此表的值依赖于引用表的唯一
–实例:在已创建的表dept_20中添加
oracleemp中lo常yee用_id约和束h的ir用e_d法ate 列的组合外键约
束A并LTE启R T用ABL:E dept_20
ADD CONSTRAINT fk_empid_hiredate FOREIGN KEY (employee_id, hire_date) REFERENCES job_history(employee_id, start_date)
▪ 唯一性约束
–实例:为已存在的warehouses表的
oraclwear中eh常ous用e_i约d,束wa的re用hou法se_name列,添加名
whAL_TuERnTqA为BLE的wa唯reh一ous性es 约束
ADD CONSTRAINT wh_unq UNIQUE (warehouse_id, warehouse_name)
25
Inspur Education
▪ 检查性约束
–检查性(check)约束即要求每一行的一列或
oracl多e列中的常值用,必约须束满的足用指定法条件。
–检查约束的主要好处是具有非常灵活的完整性 规则的能力。
26
Inspur Education
数据库(安全4-完整5_more)
存取控制
定义存取权限
– 存取权限
• 存取权限由两个要素组成
– 数据对象 – 操作类型
存取控制
– 定义存取权限
• 定义一个用户可以在哪些数据对象上进行
哪些类型的操作
• 在数据库系统中,定义存取权限称为授权
(Authorization)
• 授权定义经过编译后存放在数据字典中
两种存取控制的方法
1. 自主存取控制
–
动态关系约束
完整性约束条件
对象状态 动态 动态列级约束 动态元组约束 动态关系约束 ④ ⑤ ⑥ 静态列级约束 静态元组约束 静态关系约束 ① ② ③
静态
列
元组
关系
对象粒度
完整性约束条件
静态列级约束
– 静态列级约束是对一个列的取值域的说明,
这是最常见最简单同时也最容易实现的一类
完整性约束
完整性约束条件
数据加密
数据加密
– 防止数据库中数据在存储和传输中失密的有 效手段
加密的基本思想
– 根据一定的算法将原始数据(术语为明文, Plain text)变换为不可直接识别的格式(术 语为密文,Cipher text)
数据加密功能通常也作为可选特征,允
许用户自由选择。 数据加密与解密程序会占用大量系统资 源。 应该只对高度机密的数据加密。
库系统主要的性能指标之一
数据库的数据保护包括:
数据的安全性 数据的完整性 两方面内容。
安全性
什么是数据库的安全性 – 数据库的安全性是指保护数据库,防止因用 户非法使用数据库造成数据泄露、更改或破 坏。
数据库的安全性和计算机系统的安全性,
包括操作系统、网络系统的安全性是紧 密联系、相互支持的,因此首先讨论计 算机系统安全性的一般问题。
第五章王珊,萨师煊版《数据库系统概论》讲义及课后习题答案
完整性约束条件分类
六类完整性约束条件
•
静态列级约束 静态元组约束 静态关系约束 动态列级约束 动态元组约束 动态关系约束
• • • • •
完整性约束条件(续)
对象状态 动态 动态列级约束 ④ 静态列级约束 ① 动态元组约束 ⑤ 动态关系约束 ⑥
静态
静态元组约束 静态关系约束 ② ③
列
元组
关系
对象粒度
4. 修改被参照关系中主码的问题
• 两种策略 (1)不允许修改主码 (2)允许修改主码
允许修改主码策略
• 违约操作 ♦要修改被参照关系中某些元组的主码值, 而参照关系中有些元组的外码值正好等 于被参照关系要修改的主码值 ♦要修改参照关系中某些元组的主码值, 而被参照关系中没有任何元组的外码值 等于被参照关系修改后的主码值
允许修改主码策略
例:将Student关系中Sno=950001的元组中Sno 值改为960123。而SC关系中有 4个元组的 Sno=950001 – 级联修改:将SC关系中4个Sno=950001元组 中的Sno值也改为960123。如果参照关系同时 又是另一个关系的被参照关系,则这种修改操 作会继续级联下去。
一般是拒绝执行
• 违反参照完整性的操作:
– 拒绝执行 – 接受这个操作,同时执行一些附加的操作,以保证 数据库的状态正确
三、参照完整性的实现
例:职工-部门数据库包含职工表EMP和部门表DEPT
1 DEPT关系的主码为部门号Deptno 2 EMP关系的主码为职工号Empno, 外码为部门号Deptno 称DEPT为被参照关系或目标关系,EMP为参照关系
3.在参照关系中插入元组时的问题
• 受限插入 – 仅当被参照关系中存在相应的元组,其主码值 与参照关系插入元组的外码值相同时,系统才 执行插入操作,否则拒绝此操作。 • 递归插入 – 首先向被参照关系中插入相应的元组,其主码 值等于参照关系插入元组的外码值,然后向参 照关系插入元组。
数据库系统概论第5版(王珊、萨师煊)课后答案第5章数据库完整性
数据库系统概论第5版(王珊、萨师煊)课后答案第5章数据库完整性第5章数据库完整性1.什么是数据库的完整性?答: 数据库的完整性是指数据的正确性和相容性。
2.数据库的完整性概念与数据库的安全性概念有什么区别和联系?答: 数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garba : e In Garba : e out )所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
3.什么是数据库的完整性约束条件?答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。
一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
常见的静态关系约束有:实体完整性约束;参照完整性约束;函数依赖约束。
4.关系DBMS 的完整性控制机制应具有哪些功能?答: DBMS 的完整性控制机制应具有三个方面的功能:1)定义功能,即提供定义完整性约束条件的机制;2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;3)违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
5.关系DBMS 在实现参照完整性时需要考虑哪些方面?答:关系DBMS 在实现参照完整性时需要考虑以下几个方面:1)外码是否可以接受空值。
2)被参照关系中删除元组或修改主码时,若使参照关系在被参照关系中找不到与之相等的属性值,系统可选择的作法有三种:拒绝执行(默认策略)、级联操作、设置为空值。
3)参照关系中插入或修改元组时,若使参照关系在被参照关系中找不到与之相等的属性值,系统可选择的作法有三种:拒绝执行(默认策略)、级联操作(CASCADE)、设置为空值。
DB06-完整性
SMALLINT,
只能在表级定义主码
PRIMARY KEY (Sno,Cno)
5.2.2 实体完整性检查和违约处理
• 插入记录或对主码列进行更新操作时,RDBMS按照
实体完整性规则自动进行检查。包括:
1. 唯一性:检查主码值是否唯一,如果不唯一则拒绝插 入或修改。可采用全表扫描法或索引法。 2. 非空性:检查主码的各个属性是否为空,只要有一个 为空就拒绝插入或修改。
2014年12月10日 第五章 数据库完整性 27
思考题
1.多选题
有效性和相容性,防止错误的数据进入数据库造
成无效操作。
– 正确性是指数据的合法性,例如,数值型数据中只能包 含数字而不能包含字母;
– 有效性是指数据是否属于所定义的有效范围,例如,学
生成绩的取值范围为0~100的整数; – 相容性是指数据的一致性。
2
2014年12月10日
第五章 数据库完整性
完整性和安全性的区别
13
可能破坏参照完整性的情况
学 号 Sno
200215121 200215122 200215128 200215123 200515125
姓 名 性 别 Sname Ssex
李勇 刘晨 王敏 张立 男 女 女 男
学号 Sno
200215121 200215121 200215121 200215122 200215126 200215122 200215126
SMALLINT CHECK (Sage >=15 AND Sage <=25 ), CHAR(20)
)
2014年12月10日 第五章 数据库完整性 21
第五章 数据完整性
RDBMS在实现参照完整性时: CREATE TABLE SC –需要向用户提供定义主码、外码的机制; (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, –向用户提供按照自己的应用要求选择处理依 Grade SMALLINT, 赖关系中对应的元组的方法; PRIMARY key (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) –一般地,当对参照表和被参照表的操作违反 ON DELETE CASCADE 了参照完整性,系统选用默认策略,即拒绝执 ON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) 行。如果想让系统采用其它的策略则必须在创 ON DELETE ON ACTION 建表的时候显式说明。 ON UPDATE CASCADE,
–完ቤተ መጻሕፍቲ ባይዱ性:真实地反映现实世界
An Introduction to Database System
二、DBMS的完整性控制机制
1. 定义功能 一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。 2. 检查功能
检查用户发出的操作请求是否违背了完整性约束条件
例:银行数据库 中“借贷总金额应平 衡”的约束就应该是 延迟执行的约束
An Introduction to Database System
[例6] 建立部门表DEPT,要求部门名称Dname列取值唯一, 部门编号Deptno列为主码。
CREATE TABLE DEPT (Deptno NUMERIC(2) NOT NULL, Dname CHAR(9) UNIQUE, Location char(10), PRIMARY key (Deptno) );
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
Theory of Database
计算机与信息工程分院-计算机系-马新娜
定义触发器(续) 定义触发器 续
计算机与信息工程分院-计算机系-马新娜
数据库原理
Theory of Database
第五章 数据库完整性
1
Theory of Database
计算机与信息工程分院-计算机系-马新娜
数据库完整性
数据库的完整性
数据的正确性和相容性
数据的完整性和安全性是两个不同概念
数据的完整性
防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义的、不计算机与信息工程分院-计算机系-马新娜
定义触发器(续) 定义触发器 续
[例2](续)
CREATE TRIGGER Update_C AFTER UPDATE ON Course FOR EACH ROW AS BEGIN IF (new.credit<> old.credit) THEN INSERT INTO C_log VALUES(o,new.credit,CURRENT_date); END IF; END;
17 Theory of Database
计算机与信息工程分院-计算机系-马新娜
5.2 触发器
5.2.1 定义触发器 5.2.2 激活触发器 5.2.3 删除触发器
18
Theory of Database
计算机与信息工程分院-计算机系-马新娜
5.2.3 删除触发器
删除触发器的SQL语法: DROP TRIGGER <触发器名> ON <表名>; 触发器必须是一个已经创建的触发器,并且只能由具有相 应权限的用户删除。 [例21] 删除课程表上的触发器Insert_C DROP TRIGGER Insert_C ON Course;
完整性约束定义机制 完整性检查机制 违背完整性约束条件时RDBMS应采取的动作
21
Theory of Database
[例2](续)
CREATE TRIGGER Insert_C AFTER INSERT ON Course FOR EACH ROW AS BEGIN INSERT INTO C_log VALUES( o,new.Credit,CURRENT_date); END;
13 Theory of Database
14 Theory of Database
/*触发事件是UPDATE */
计算机与信息工程分院-计算机系-马新娜
5.2 触发器
5.2.1 定义触发器 5.2.2 激活触发器 5.2.3 删除触发器
15
Theory of Database
计算机与信息工程分院-计算机系-马新娜
5.2.2 激活触发器
19
Theory of Database
计算机与信息工程分院-计算机系-马新娜
第五章 数据库完整性
5.1 完整性规则 5.2 触发器 5.3 小结
20
Theory of Database
计算机与信息工程分院-计算机系-马新娜
5.3 小结
数据库的完整性是为了保证数据库中存储的数据 是正确的 RDBMS完整性实现的机制
数据的安全性
保护数据库防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作
2
Theory of Database
计算机与信息工程分院-计算机系-马新娜
数据库完整性(续 数据库完整性 续)
为维护数据库的完整性,DBMS必须:
1.提供定义完整性约束条件的机制 2.提供完整性检查的方法 3.违约处理
8
Theory of Database
计算机与信息工程分院-计算机系-马新娜
定义触发器(续 定义触发器 续)
例如,假设在course表上创建了一个AFTER UPDATE 触发器。如果表有1000行,执行如下语句: update course set credit=5;
如果该触发器为语句级触发器,那么执行完该语句后,触发 动作只发生一次 如果是行级触发器,触发动作将执行1000次
9
Theory of Database
计算机与信息工程分院-计算机系-马新娜
定义触发器(续 定义触发器 续)
6. 触发条件
触发条件为真 省略WHEN触发条件
7. 触发动作体
触发动作体可以是一个匿名PL/SQL过程块 也可以是对已创建存储过程的调用
10
Theory of Database
计算机与信息工程分院-计算机系-马新娜
IF new.credit< 1 THEN new.credit:=1; END IF; END;
11 Theory of Database
计算机与信息工程分院-计算机系-马新娜
定义触发器(续 定义触发器 续)
[例2]定义after行级触发器,当向课程表course插入新课 程后就自动在课程变化表C_log中增加一条相应记录
触发器的执行,是由触发事件激活的,并由数据库服务器 自动执行 一个数据表上可能定义了多个触发器
同一个表上的多个触发器激活时遵循如下的执行顺序:
(1) 执行该表上的BEFORE触发器; (2) 激活触发器的SQL语句; (3) 执行该表上的AFTER触发器。
16
Theory of Database
5
Theory of Database
计算机与信息工程分院-计算机系-马新娜
5.2 触发器
5.2.1 定义触发器 5.2.2 激活触发器 5.2.3 删除触发器
6
Theory of Database
计算机与信息工程分院-计算机系-马新娜
5.2.1 定义触发器
CREATE TRIGGER语法格式
CREATE TRIGGER <触发器名> {BEFORE | AFTER} <触发事件> ON <表名> FOR EACH {ROW | STATEMENT} [WHEN <触发条件>] <触发动作体>
定义触发器(续 定义触发器 续)
[例1] 定义一个BEFORE行级触发器,为表course定义完 整性规则“学分不得低于1,如果低于1,自动改为1”。 create trigger credit1 before insert or update ON course
/*触发事件是插入或更新操作*/ for each row /*行级触发器*/ as begin /*定义触发动作体,是PL/SQL过程块*/
3
Theory of Database
计算机与信息工程分院-计算机系-马新娜
第五章 数据库完整性
5.1 完整性规则 5.2 触发器 5.3 小结
4
Theory of Database
计算机与信息工程分院-计算机系-马新娜
5.1 完整性规则
实体完整性 参照完整性 用户定义的完整性 完整性约束命名字句 域中的完整性限制
计算机与信息工程分院-计算机系-马新娜
激活触发器(续 激活触发器 续)
[例3]执行修改课程的SQL语句,激活上述的触发 器。 Update Course Set credit=2 where cno=‘011'; 执行顺序是: 执行触发器credit1; 执行上面的更新SQL语句; 执行触发器Update_C .
7
Theory of Database
计算机与信息工程分院-计算机系-马新娜
定义触发器(续 定义触发器 续)
定义触发器的语法说明:
1. 创建者:表的拥有者 2. 触发器名 3. 表名:触发器的目标表 4. 触发事件:INSERT、DELETE、UPDATE 5. 触发器类型
行级触发器(FOR EACH ROW) 语句级触发器(FOR EACH STATEMENT)