第5章数据库完整性

合集下载

(完整版)第五章_数据库完整性(习题)

(完整版)第五章_数据库完整性(习题)

(完整版)第五章_数据库完整性(习题)一、选择题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。

数据库系统概论第五版课后习题答案

数据库系统概论第五版课后习题答案

第1章绪论1 .试述数据、数据库、数据库系统、数据库管理系统的概念。

答:( l )数据( Data ) :描述事物的符号记录称为数据。

数据的种类有数字、文字、图形、图像、声音、正文等。

数据与其语义就是不可分的。

解析在现代计算机系统中数据的概念就是广义的。

早期的计算机系统主要用于科学计算,处理的数据就是整数、实数、浮点数等传统数学中的数据。

现代计算机能存储与处理的对象十分广泛,表示这些对象的数据也越来越复杂。

数据与其语义就是不可分的。

500这个数字可以表示一件物品的价格就是 500元,也可以表示一个学术会议参加的人数有 500人,还可以表示一袋奶粉重 500克。

( 2 )数据库( DataBase ,简称 DB ) :数据库就是长期储存在计算机内的、有组织的、可共享的数据集合。

数据库中的数据按一定的数据模型组织、描述与储存,具有较小的冗余度、较高的数据独立性与易扩展性,并可为各种用户共享。

( 3 )数据库系统( DataBas。

Sytem ,简称 DBS ) :数据库系统就是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。

解析数据库系统与数据库就是两个概念。

数据库系统就是一个人一机系统,数据库就是数据库系统的一个组成部分。

但就是在日常工作中人们常常把数据库系统简称为数据库。

希望读者能够从人们讲话或文章的上下文中区分“数据库系统”与“数据库”,不要引起混淆。

( 4 )数据库管理系统( DataBase Management sytem ,简称 DBMs ) :数据库管理系统就是位于用户与操作系统之间的一层数据管理软件,用于科学地组织与存储数据、高效地获取与维护数据。

DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立与维护功能。

解析 DBMS就是一个大型的复杂的软件系统,就是计算机中的基础软件。

目前,专门研制 DBMS的厂商及其研制的 DBMS产品很多。

第5章sql数据库完整性约束

第5章sql数据库完整性约束
CHECK约束是限制用户输入某一列的数据取值,即该 列只能输入一定范围的数据。 CHECK约束可以作为表定义的一部分在创建表时创建, 也可以添加到现有表中。表和列可以包含多个CHECK约束。 允许修改或删除现有的CHECK约束。 在现有表中添加CHECK约束时,该约束可以仅作用于 新数据,也可以同时作用于已有的数据。默认设置为 CHECK约束同时作用于已有数据和新数据。当希望现有数 据维持不变,则使用约束仅作用于新数据选项。
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,

第5章 完整性约束定义

第5章 完整性约束定义

2. 实体完整性

实体完整性是指保证表中所有的行唯一。实体完整性要求表中 的所有行都有一个唯一标识符。这个唯一标识符可能是一列, 也可能是几列的组合,称之为主键。也就是说,表中主键在所 有行上必须取值唯一。强制实体完整性的方法有:索引、 UNIQUE约束、PRIMARY KEY约束或 IDENTITY属性 。
参照完整性也叫引用完整性。参照完整性总是保证主关键字 (被引用表)和外部关键字(引用表)之间的参照关系。它涉 及两个或两个以上表数据的一致性维护。
2
3. 参照完整性

5.4.2

数据完整性实施方法
1. 声明型数据完整性 声明型数据完整性一般在对象创建时定义,由SQL Server强制 实施,通常使用约束、缺省值和规则来实现。实现基本数据完 整性的首选方法是使用声明型数据完整性。 声明型数据完整性作为数据库对象说明的一部分在语法中实现, 在CREATE TABLE和ALTER TABLE定义中使用CONSTRAINT、 DEFAULT等语句限制表中的值。使用这种方法实现数据完整性 简单且不易出错,系统直接将实现数据完整性的要求定义在表 和列上。 过程型数据完整性是指由某个过程引发而实施的数据完整性。 一般先写出实施数据完整性的条件,再写出强制该条件所执行 的用于保证数据完整性的脚本。通常由触发器和存储过程实现。 过程型数据完整性也可以在客户机和服务器上使用其它编程语 言和工具实现。
3

2. 过程型数据完整性

5.4.3 约束
1.约束的定义和类型

约束是SQL Server提供的自动保持数据库完整性的一种方法 。


列级约束:列级约束是行定义的一部分,只能够应用在一列上。
表级约束:表级约束的定义独立于列的定义,可以应用在一个表 中的多列上。

第5章 数据库完整性

第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章数据库完整性

第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版第五版教材课后习题答案详解pdf

数据库系统概论王珊第5版第五版教材课后习题答案详解pdf

内容说明王珊《数据库系统概论》(第5版)是我国高校采用较多的权威教材之一,无论指定参考书是否为该教材,对该教材的课后习题加以练习和掌握,非常有助于考生的复习和备考。

本册以王珊《数据库系统概论》(第5版)为依据,对课后习题进行了详细的分析与解答,并对相关重要知识点进行了延伸和归纳。

明立考试(公众号)本文档的内容参考了部分网络资料及图书资料,是出于传递更多信息之目的,并不代表故意侵犯原作者或出版人的版权和利益,如果原作者或出版人对本文档有任何异议,请与作者联系,会在第一时间处理!内容说明 (1)声明 (2)目录 (3)第1章绪论 (5)课后习题 (5)参考答案 (6)第2章关系数据库 (12)课后习题 (12)参考答案 (14)第3章关系数据库标准语言SQL (18)课后习题 (18)参考答案 (19)第4章数据库安全性 (22)课后习题 (22)参考答案 (23)第5章数据库完整性 (26)课后习题 (26)参考答案 (27)第6章关系数据理论 (29)课后习题 (29)参考答案 (31)第7章数据库设计 (34)课后习题 (34)参考答案 (35)第8章数据库编程 (39)课后习题 (39)参考答案 (40)第9章关系查询处理和查询优化 (42)课后习题 (42)参考答案 (43)第10章数据库恢复技术 (46)课后习题 (46)参考答案 (48)第11章并发控制 (51)课后习题 (51)参考答案 (53)第12章数据库管理系统 (59)课后习题 (59)参考答案 (60)第13章数据库技术发展概述 (63)课后习题 (63)参考答案 (64)第14章大数据管理 (65)课后习题 (65)参考答案 (66)第15章内存数据库系统 (68)课后习题 (68)参考答案 (69)第16章数据仓库与联机分析处理技术 (71)课后习题 (71)参考答案 (72)第1章绪论课后习题1.试述数据、数据库、数据库管理系统、数据库系统的概念。

《数据库系统概论》(王珊)第五版课后习题答案

《数据库系统概论》(王珊)第五版课后习题答案

第二章关系数据库1 .试述关系模型的三个组成部分。

答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

2 .试述关系数据语言的特点和分类。

答:关系数据语言可以分为三类:关系代数语言。

关系演算语言:元组关系演算语言和域关系演算语言。

SQL:具有关系代数和关系演算双重特点的语言。

这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。

3 (略)4 .5 . 述关系模型的完整性规则。

在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?答:实体完整性规则是指若属性 A 是基本关系R 的主属性,则属性 A 不能取空值。

若属性(或属性组)F 是基本关系R 的外码,它与基本关系S 的主码Ks 相对应( 基本关系R 和S 不一定是不同的关系),则对于R 中每个元组在 F 上的值必须为:或者取空值(F 的每个属性值均为空值);或者等于S 中某个元组的主码值。

即属性 F 本身不是主属性,则可以取空值,否则不能取空值。

6.设有一个SPJ 数据库,包括S,P,J,SPJ 四个关系模式:1)求供应工程J1 零件的供应商号码SNO:πSno(σJno=‘J1’(SPJ))2)求供应工程J1 零件P1 的供应商号码SNO:πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))3)求供应工程J1 零件为红色的供应商号码SNO :πSno(πSno,,Pno(σJno=‘J1‘ (SPJ))∞πPno(σCOLOR= ’红‘(P)))4)求没有使用天津供应商生产的红色零件的工程号JNO :πJno(SPJ)- πJNO(σcity=‘天津’∧Color= ‘红‘(S∞ SPJ∞ P)5)求至少用了供应商S1 所供应的全部零件的工程号JNO:πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ)7.试述等值连接与自然连接的区别和联系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

要修改参照关系中某些元组的主码值, 而被参照关系中没有任何元组的外码 值等于被参照关系修改后的主码值
An Introduction to Database System 29
允许修改主码策略 违约反应 (1)
修改的关系是被参照关系:与删 除类似
级联修改 受限修改 置空值修改
An Introduction to Database System 30
违约反应:可有三种策略 级联删除(CASCADES) 受限删除(RESTRICTED) 置空值删除(NULLIFIES)
这三种处理方法,哪一种是正确的,要依应 用环境的语义来定
20
An Introduction to Database System
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20));
CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) PRIMARY KEY (Sno ));
An Introduction to Database System 8
实体完整性定义 举例 例2:将SC表中的Sno,Cno属性组定义为码
CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) );
级联删除
将参照关系中外码值与被参照关系中要删除元 组主码值相对应的元组一起删除
受限删除
当参照关系中没有任何元组的外码值与要删除 的被参照关系的元组的主码值相对应时,系统 才执行删除操作,否则拒绝此删除操作
An Introduction to Database System
21
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
5.1.1 实体完整性定义
关系模型的实体完整性在CREATE TABLE中用 中用PRIMARY KEY 定义。 定义。 关系模型的实体完整性在 中用
单属性的码: 单属性的码: 定义为列级约束条件 定义为表级约束条件 多属性的码: 多属性的码: 定义为表级约束条件
表中的Sno属性定义为码: 属性定义为码: 例1:将Student 表中的 : 属性定义为码
An Introduction to Database System
6
第五章 数据库完整性
5.1 5.2 5.3 5.4 5.5 5.6 5.7 实体完整性 参照完整性 用户定义的完整性 完整性约束命名子句 域中的完整性限制 触发器 小结
An Introduction to Database System 7
完整性:能否真实地反映现实世界
An Introduction to Database System 2
完整性控制机制
1.提供定义完整性约束条件的机制 2.提供完整性检查的方法 3.违约处理
An Introduction to Database System
3
完整性约束条件定义
完整性约束条件:数据模型的组成部分, 约束数据库中数据的语义 DBMS应提供定义数据库完整性约束条件, 并把它们作为模式的一部分存入数据库 中
置空值删除 删除被参照关系的元组,并将参照关系 中与被参照关系中被删除元组主码值相 等的外码值置为空值。
An Introduction to Database System
22
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
例3:要删除Student关系中Sno=950001的元组, 而SC关系中有4个元组的Sno都等于950001。 级联删除:将SC关系中所有4个Sno=950001的元组 一起删除。如果参照关系同时又是另一个关系的被 参照关系,则这种删除操作会继续级联下去 受限删除:系统将拒绝执行此删除操作。
16
1. 外码是否可以接受空值的问题
例1:在职工-部门数据库中, EMP EMP关系包含有外码Deptno Deptno 某元组的这一列若为空值,表示这个职 工尚未分配到任何具体的部门工作 和应用环境的语义是相符
An Introduction to Database System 17
1. 外码是否可以接受空值的问题 例2:学生-选课数据库
An Introduction to Database System
24
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题
出现违约操作的情形 需要在参照关系中插入元组,而被参 照关系不存在相应的元组 违约反应 受限插入 递归插入
An Introduction to Database System 25
An Introduction to Database System
10
B+树索引 树索引
25 3 51
3 15 30
51 68 79
3
7
15 20 25
30 41
51 54 65 68 69 71 76
79 84 93
11
An Introduction to Database System
第五章 数据库完整性
An Introduction to Database System 13
5.2.2参照完整性检查和违约处理 参照完整性检查和违约处理
表5.1 可能破坏参照完整性的情况及违约处理
被参照表( 被参照表(例Student) ) 可能破坏参照完整性 可能破坏参照完整性 删除元组 修改主码值 参照表( 参照表(例 SC) ) 插入元组 修改外码值 可能破坏参照完整性 可能破坏参照完整性 违约处理 拒绝 拒绝 拒绝/级联删除 设置为空值 拒绝 级联删除/设置为空值 级联删除 拒绝/级联删除 设置为空值 拒绝 级联删除/设置为空值 级联删除
Student关系为被参照关系,其主码为Sno。 SC为参照关系,外码为Sno。 SC Sno 若SC的Sno为空值:表明尚不存在的某个学生,或者 某个不知学号的学生,选修了某门课程,其成绩记录 在Grade中, 与学校的应用环境是不相符的,因此SC的 Sno列不能取空值。
An Introduction to Database System 18
An Introduction to Database System 26
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题 例4:向SC关系插入(99001,1,90)元组, 而Student关系中尚没有Sno=99001的学生 受限插入:系统将拒绝向SC关系插入 (99001,1,90)元组 递归插入:系统将首先向Student关系插入 Sno=99001的元组,然后向SC关系插入 (99001,1,90)元组。
5.1 5.2 5.3 5.4 5.5 5.6 5.7 实体完整性 参照完整性 用户定义的完整性 完整性约束命名子句 域中的完整性限制 触发器 小结
An Introduction to Database System 12
5.2.1 参照完整性定义
关系模型的参照完整性在CREATE TABLE中用FOREIGN KEY 短语定义哪些列为 外码,用REFERENCES短语指 明外码参照哪些表的主码。 例3:
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 Course(Cno));
An Introduction to Database System
23
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
置空值删除:将SC关系中所有Sno=950001 的元组的Sno值置为空值。 在学生选课数据库中,显然第一种方法和第 二种方法都是对的。第三种方法不符合应用 环境语义。
An Introduction to Database System
9
5.1.2 实体完整性检查和违约处理
对定义主码的表,当用户要插入一条记录或对主码列进 行更新操作时,要进行实体完整性规则自动检查。 检查主码值是否唯一,若不唯一则拒绝插入或修改; 检查主码的各个属性是否为空,只要有一个为空 就 拒绝插入或修改。 检查方法:全表扫描 B虑以下4方面:
An Introduction to Database System
15
1. 外码是否可以接受空值的问题
外码是否能够取空值:依赖于应用环境的 语义 实现参照完整性:
系统提供定义外码的机制 定义外码列是否允许空值的机制
An Introduction to Database System
允许修改主码策略
级联修改 修改被参照关系中主码值同时,用相同的方法修改 参照关系中相应的外码值。 受限修改 拒绝此修改操作。只当参照关系中没有任何元组的 外码值等于被参照关系中某个元组的主码值时,这 个元组的主码值才能被修改。 置空值修改 修改被参照关系中主码值,同时将参照关系中相应 的外码值置为空值。
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题 受限插入 仅当被参照关系中存在相应的元组,其主码 值与参照关系插入元组的外码值相同时,系 统才执行插入操作,否则拒绝此操作。 递归插入 首先向被参照关系中插入相应的元组,其主 码值等于参照关系插入元组的外码值,然后 向参照关系插入元组。
相关文档
最新文档