数据库技术与应用第5章 习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章数据库完整性与安全性
1. 什么是数据库的完整性什么是数据库的安全性两者之间有什么区别和联系
解:
数据库的完整性是指数据库中数据的正确性、有效性和相容性,其目的是防止不符合语义、不正确的数据进入数据库,从而来保证数据库系统能够真实的反映客观现实世界。
数据库安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。
数据的完整性和安全性是两个不同的概念,但是有一定的联系:
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
2. 什么是数据库的完整性约束条件完整性约束条件可以分为哪几类
解:
完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。静态列级约束是对一个列的取值域的说明,包括以下几个方面:①数据类型的约束,包括数据的类型、长度、单位、精度等;②对数据格式的约束;③对取值范围或取值集合的约束;④对空值的约束;⑤其他约束。静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有:①实体完整性约束;②参照完整性约束;③函数依赖约束。动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:①修改列定义时的约束;
②修改列值时的约束。动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
3. 试述DBMS如何实现完整性控制。
解:
为了维护数据库的完整性,DBMS提供了以下三种机制:
①完整性约束条件定义完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件。SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。这些完整性一般由SQL的DDL语义来实现。它们作为数据库模式的一部分存入数据字典中。
②完整性检查方法检查数据是否满足已定义的完整性约束条件称为完整性检查。一般在INSERT、UPDATE、DELETE语句执行后开始检查,也可以在事务提交时检查。检查这些操作执行后数据库中的数据是否违背了完整性约束条件。
③违约处理若发现用户操作违背了完整性约束条件,应采取一定的措施,如拒绝(NOACTION)执行该操作,或级连(CASCADE)执行其它操作,进行违约处理以保证数据的完整性。
4. 现有以下四个关系模式:
,其中供应商编号为主码;供应商(供应商编号,姓名,电话,地点).
零件(零件编号,零件名称,颜色,重量),其中零件编号为主码;
工程(工程编号,工程名称,所在地点),其中工程编号为主码;
供应情况(供应商编号,零件编号,工程编号,数量),其中供应商编号,零件编号,工程编号为主码
用SQL语句定义这四个关系模式,要求在模式中完成以下完整性约束条件的定义:
①定义每个模式的主码;
②定义参照完整性;
③定义零件重量不得超过100千克。
解:
CREATE SCHEMA Supplier_schema
CREATE TABLE Supplier
( Sno CHAR(5) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Phone CHAR(13),
Address CHAR(30)
);
CREATE SCHEMA Part_schema
CREATE TABLE Part
( Pno CHAR(7) PRIMARY KEY,
Pname CHAR(20) NOT NULL,
Color CHAR(10),
Weight SMALLINT CHECK(Weight <=100)
);
CREATE SCHEMA Project_schema
CREATE TABLE Project
( Jno CHAR(7) PRIMARY KEY,
Jname CHAR(20) NOT NULL,
Jaddress CHAR(30)
);
CREATE SHEMA SPJ_shema
CREATE TABLE SPJ
( Sno CHAR(5),
Pno CHAR(7),
Jno CHAR(7),
Quantity SMALLINT,
PRIMARY KEY (Sno, Pno, Jno),
FOREIGN KEY (Sno) REFERENCES Supplier(Sno),
FOREIGN KEY (Pno) REFERENCES Part(Pno),
FOREIGN KEY (Jno) REFERENCES Project(Jno)
);
5. 在关系数据库系统中,当操作违反实体完整性、参照完整性和用户自定义的完整性约束条件时,一般是如何分别进行处理的。.
解:
(1) 按实体完整性规则自动进行检查。包括:
①检查主码值是否唯一,如果不唯一则拒绝插入或修改。
②检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。
(2) 按参照完整性检查,违约处理的策略如下:
①拒绝(NO ACTION)执行。不允许该操作执行,该策略一般设置为默认策略。