《数据库》第5章习题答案
- 格式:doc
- 大小:33.00 KB
- 文档页数:3
第5章数据库完整性与安全性1. 什么是数据库的完整性?什么是数据库的安全性?两者之间有什么区别和联系?解:数据库的完整性是指数据库中数据的正确性、有效性和相容性,其目的是防止不符合语义、不正确的数据进入数据库,从而来保证数据库系统能够真实的反映客观现实世界。
数据库安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。
数据的完整性和安全性是两个不同的概念,但是有一定的联系:前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据.2。
什么是数据库的完整性约束条件?完整性约束条件可以分为哪几类?解:完整性约束条件是指数据库中的数据应该满足的语义约束条件。
一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束.静态列级约束是对一个列的取值域的说明,包括以下几个方面:①数据类型的约束,包括数据的类型、长度、单位、精度等;②对数据格式的约束;③对取值范围或取值集合的约束;④对空值的约束;⑤其他约束.静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。
静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常见的静态关系约束有:①实体完整性约束;②参照完整性约束;③函数依赖约束.动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:①修改列定义时的约束;②修改列值时的约束。
动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件.动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
3. 试述DBMS如何实现完整性控制.解:为了维护数据库的完整性,DBMS提供了以下三种机制:①完整性约束条件定义完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件.SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。
第4、5章练习题(数据库的安全性、完整性)一、选择题1.下面哪个不是数据库系统必须提供的数据控制功能。
A.安全性B.可移植性C.完整性D.并发控制答案:B2.保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。
这是指数据的。
A.安全性B.完整性C.并发控制D.恢复答案:A3.数据库的是指数据的正确性和相容性。
A.安全性B.完整性C.并发控制D.恢复答案:B4.在数据系统中,对存取权限的定义称为。
A.命令 B.授权 C.定义 D.审计答案:B5.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的。
A.可靠性B.一致性C.完整性D.安全性答案:D6.下列SQL语句中,能够实现“收回用户ZHAO对学生表(STUD)中学号(XH)的修改权”这一功能的是A.REVOKE UPDATE(XH) ON TABLE FROM ZHAO B.REVOKE UPDATE(XH) ON TABLE FROM PUBLICC.REVOKE UPDATE(XH) ON TABLE STUD FROM ZHAO D.REVOKE UPDATE(XH) ON STUD FROM PUBLIC答案:C 7.把对关系SC的属性GRADE的修改权授予用户ZHAO的SQL语句是A)GRANT GRADE ON SC TO ZHAO B)GRANT UPDATE ON SC TO ZHAOC)GRANT UPDATE (GRADE) ON SC TO ZHAO D)GRANT UPDATE ON SC (GRADE) TO ZHAO 答案:C8.以下( D )不属于实现数据库系统安全性的主要技术和方法。
A. 存取控制技术B. 视图技术C. 审计技术D. 出入机房登记和加锁9.SQL中的视图提高了数据库系统的( D )。
A. 完整性B. 并发控制C. 隔离性D. 安全性10.安全性控制的防范对象是( B ),防止他们对数据库数据的存取。
(完整版)第五章_数据库完整性(习题)一、选择题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.逗号或,2. 33.FLOOR(3+RAND()*(11-3+1))或FLOOR(3+RAND()*9)4.NULL5.ON DUPLICATE KEY二、判断题1.错2.对3.错4.对5.对三、选择题1. D2. B3. D4. A5. C四、简答题1.请简述DELETE与TRUNCA TE的区别。
答:①实现方式不同:TRUNCATE本质上先执行删除(DROP)数据表的操作,然后再根据有效的表结构文件(.frm)重新创建数据表的方式来实现数据清空操作。
而DELETE语句则是逐条的删除数据表中保存的记录。
②执行效率不同:在针对大型数据表(如千万级的数据记录)时,TRUNCATE清空数据的实现方式,决定了它比DELETE语句删除数据的方式执行效率更高。
③对AUTO_INCREMENT的字段影响不同,TRUNCATE清空数据后,再次向表中添加数据,自动增长字段会从默认的初始值重新开始,而使用DELETE语句删除表中的记录时,则不影响自动增长值。
④删除数据的范围不同:TRUNCATE语句只能用于清空表中的所有记录,而DELETE语句可通过WHERE指定删除满足条件的部分记录。
⑤返回值含义不同:TRUNCATE操作的返回值一般是无意义的,而DELETE语句则会返回符合条件被删除的记录数。
⑥所属SQL语言的不同组成部分:DELETE语句属于DML数据操作语句,而TRUNCA TE通常被认为是DDL数据定义语句。
2.请简述WHERE与HA VING之间的区别。
1答:①WHERE操作是从数据表中获取数据,用于将数据从磁盘存储到内存中,而HA VING是对已存放到内存中的数据进行操作。
②HA VING位于GROUP BY子句后,而WHERE位于GROUP BY 子句之前。
③HA VING关键字后可以跟聚合函数,而WHERE则不可以。
通常情况下,HA VING关键字与GROUPBY一起使用,对分组后的结果进行过滤。
第5章 数组和广义表5.1数组一、填空题1. 假设有二维数组A 6×8,每个元素用相邻的6个字节存储,存储器按字节编址。
已知A 的起始存储位置(基地址)为1000,则数组A 的体积(存储量)为 ;末尾元素A 57的第一个字节地址为 。
2. 三元组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 、 和 。
3. 设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为 。
4. 设n 行n 列的下三角矩阵A 已压缩到一维数组B[1..n*(n+1)/2]中,若按行为主序存储,则A[i,j]对应的B 中存储位置为 。
5. 设有一个10阶对称矩阵A 采用压缩存储方式(以行为主序存储:a 11=1),则a 85 的地址为 。
6. 设下三角矩阵A 如果按行序为主序将下三角元素A i j (i ≤j)存储在一个一维数组B[1..n(n+1)/2]中,对任一个三角矩阵元素A ij ,它在数组B 中的下标为 。
二、选择题1. ( )假设有60行70列的二维数组a[1…60, 1…70]以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第32行第58列的元素a[32,58]的存储地址为 。
A .16902B .16904C .14454D .答案A, B, C 均不对 2. ( )对特殊矩阵采用压缩存储的目的主要是为了 。
A .表达变得简单B .对矩阵元素的存取变得简单C .去掉矩阵中多余元素D .减少不必要的存储空间3. ( )对于n 阶对称矩阵,如果以行序或列序放入内存中,则需要 个存储单元。
A .n(n+1)/2B .n(n-1)/2C . n 2D .n 2/24. 有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是 。
第五章一.选择题1.下列关于SQL语言索引(Index)的叙述中,哪一条是不正确的(C)。
A.索引是外模式B.一个基本表上可以创建多个索引C.索引可以加快查询的执行速度D.系统在存取数据时会自动选择合适的索引作为存取路径2.为了提高特定查询的速度,对SC(S#,C#,DEGREE)关系创建唯一性索引,应该创建在哪一个属性(组)上?(A)A.(S#,C#)B. (S#,DEGREE)C. (C#,DEGREE)D. DEGREE3.设S_AVG(SNO,AVG_GRADE)是一个基于关系SC 定义的学号和他的平均成绩的视图。
下面对该视图的操作语句中,(A)是不能正确执行的。
Ⅰ. UODATE S_AVG SET AVG_GRADE=90 WHERE SNO='2004010601'Ⅱ. SELECT SNO,AVG_GRADE FROM S_AVG WHERE SNO='2004010601'A . 仅Ⅰ B. 仅Ⅱ C. 都能 D.都不能4.在视图上不能完成的操作是(C)。
A.更新视图B. 查询C. 在视图上定义新的基本表D. 在视图上定义新视图5.在SQL语言中,删除一个视图的命令是(B)。
A.DELECTB. DROPC. CLEARD. UNION6.为了使索引建的值在基本表中唯一,在创建索引的语句中应使用保留字()。
A.UNIQUEB. COUNTC. DISTINCTD.UNION7.创建索引是为了(A)。
A.提高存取速度B. 减少I/OC. 节约空间D. 减少缓冲区个数8.在关系数据库中,视图(View )是三级模式结构中的(D)。
A.内模式B. 模式C. 存取模式D. 外模式9.视图是一个“虚表”,视图的构造基于(A)。
Ⅰ.基本表Ⅱ. 视图Ⅲ. 索引10.已知关系:STUDENT(Sno,Sname,Grade),以下关于命令”CREATE INDEX S index ON STUDENT(Grade)”的描述中,正确的是(B)。
习题51、 理解并给出下列术语的定义:1)设R(U)是一个属性集U 上的关系模式,X 和Y 是U 的子集。
若对于R(U)的任意一个可能的关系r ,r 中不可能存在两个元组在X 上的属性值相等, 而在Y 上的属性值不等, 则称 X 函数确定Y 或 Y 函数依赖于X ,记作X →Y 。
2) 完全函数依赖在R(U)中,如果X →Y ,并且对于X 的任何一个真子集X ’,都有Y 不函数依赖于X ’ ,则称Y 对X 完全函数依赖,记作Y X F −→−3) 部分函数依赖若X →Y ,但Y 不完全函数依赖于X ,则称Y 对X 部分函数依赖,记作Y X p−→−4) 传递函数依赖在R(U)中,如果X →Y ,(Y ⊆X) , Y →X ,Y →Z , 则称Z 对X 传递函数依赖。
记为:Z X T −→−注: 如果Y →X , 即X ←→Y ,则Z 直接依赖于X 。
5)候选码设K 为R (U,F )的属性或属性组合。
若U K F →, 则K 称为R 的侯选码。
6)主码:若候选码多于一个,则选定其中的一个作为主码。
7)外码:关系模式 R 中属性或属性组X 并非 R 的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key )也称外码8)如果一个关系模式R 的所有属性都是不可分的基本数据项,则R ∈1NF.9)若R ∈1NF ,且每一个非主属性完全函数依赖于码,则R ∈2NF 。
10)如果R(U,F )∈2NF ,并且所有非主属性都不传递依赖于主码,则R(U,F )∈3NF 。
11)关系模式R (U ,F )∈1NF ,若X →Y 且Y ⊆ X 时X 必含有码,则R (U ,F ) ∈BCNF 。
12)关系模式R<U ,F>∈1NF ,如果对于R 的每个非平凡多值依赖X →→Y (Y ⊆ X ),X 都含有码,则R ∈4NF 。
2、 关系规范化的操作异常有哪些?1) 数据冗余大2) 插入异常3) 删除异常4) 更新异常3、 第一范式、第二范式和第三范式关系的关系是什么?4、 已知关系模式R(A,B,C,D,E)及其上的函数依赖集合F={A->D,B->C,E-> A},该关系模式的候选码是什么?候选码为:(E,B)5、 已知学生表(学号,姓名,性别,年龄,系编号,系名称),存在的函数依赖集合是{学号->姓名,学号->性别,学号->年龄,学号->系编号,系编号->系名称},判断其满足第几范式。
《数据库应用与设计》习题参考答案第1章习题参考答案1、答案:数据库是长期储存在计算机设备上、相互关联的、可以被用户共享的数据集合。
2、答案:数据库中的数据共享带来如下好处:低冗余,保证数据的一致性,易于扩充。
但是数据库中的数据共享可能会引起并发访问的冲突,这就需要采用并发控制来避免。
3、答案:因为概念数据模型可以真实地反映现实世界,被人们所理解。
它是创建数据模型的第一个阶段。
4、答案:5、答案:因为多对多联系是一类比较复杂的联系,一般数据库管理系统也不直接支持多对多联系(需要付出更大的代价),所以多对多联系通常需要转换成一对多联系的。
6、答案:存储数据独立性指当改变存储文件的组织方式或存储结构时,应用程序无需修改。
概念数据独立性指当概念文件的结构发生变化时,应用程序无需修改。
这两种数据独立性是通过三层结构获得的。
在三层结构的方案中,CONCEPTUAL-ROUTINE保证了概念数据的独立性,而STORAGE-ROUTINE则保证了存储数据独立性。
7、答案:数据库模式是用数据描述语言对数据库结构的每一层的框架及结构进行的精确定义。
数据库模式分为存储模式(内模式)、概念模式(模式)、外部模式(子模式)。
存储模式(内模式)定义了存储数据库结构,概念模式(模式)定义了概念数据库结构,外部模式(子模式)定义了外部数据库结构。
8、答案:用户程序通过DBMS修改一条记录时所发生的一系列事件如下:(1)用户程序A向DBMS发出修改一条记录的指令,这时,用户程序要给出外部文件名、记录的关键字值和要修改的信息。
(2)DBCS分析所接到的指令,访问对应的外部模式。
(3)DBCS完成外部模式到概念模式的转换,决定访问哪个(些)概念文件。
(4)由DBSS完成概念模式到存储模式的转换,并决定访问哪个(些)存储文件。
(5)DBSS调用修改方法,通过操作系统修改相应的存储文件。
(6)用户程序从系统缓冲区中获得DBMS返回的状态信息。
[习题]已知关系模式R(ABC),F是R上成立的FD集,F={A→B,B→C},试写出F的闭包F+。
+
A→ΦAB→ΦAC→ΦABC→ΦB→ΦC→Φ
A→A AB→A AC→A ABC→A B→B C→C
Φ→Φ
A→B AB→B AC→B ABC→B~
B→C
ABC→C B→BC
A→C AB→C—
AC→C
A→AB AB→AB AC→AB ABC→AB BC→Φ
)
AB→AC AC→AC ABC→AC BC→B
A→AC
A→BC AB→BC AC→BC ABC→BC—
BC→C
A→ABC AB→ABC AC→ABC ABC→ABC BC→BC
5.7 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,C→B},则相对于F,试写出关系模式R的关键码。
并说明理由。
¥
解:R的关键码为ACD,因为从已知的F,只能推出ACD→ABCD。
5.8 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C}
①试写出属性集BD的闭包(BD)+。
②试写出所有左部是B的函数依赖(即形为“B→”)。
解:①从已知的F,可推出BD→BCD,所以BD的闭包(BD)+=BCD。
②由于B+=BC,因此左部是B的FD有四个:
B→Φ,B→B,B→C,B→BC
设关系模式R(ABC),F是R上成立的FD集,F={ A→C,B→C},试分别求F 在模式AB和AC上的投影。
解:πAB(F)=Φ(即不存在非平凡的FD)
πAC(F)={A→C}
*
设关系模式R(ABC),F是R上成立的FD集,F={B→A,C→A},
={AB,BC}是R上的一个分解,那么分解是否保持FD集F并说明理由。
解:已知F={B→A,C→A},而πAB(F)={B→A},πBC(F)=Φ,显然,分解丢失了FD C→A。
设关系模式R(ABC),F是R上成立的FD集,F={B→C,C→A},那么分解={AB,AC}相对于F,是否无损分解和保持FD并说明理由。
解:(1)已知F={B→C,C→A}
而πAB(F)={B→A},πAC(F)={C→A}
显然,这个分解丢失了FD B→C。
(2)用测试过程可以知道,分解相对于F是损失分解。
设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C,A→D,D →C},={ AB,AC,BD}是R的一个分解。
①相对于F,是无损分解吗为什么
~
②试求F在的每个模式上的投影。
③保持F吗为什么
解:①用测试过程可以知道,相对于F是损失分解。
②πAB(F)={A→B},πAC(F)={A→C},πBD(F)=Φ。
③显然,分解不保持FD集F,丢失了B→C,A→D,和D→C等三个FD。
设关系模式R(ABCD),R上的FD集F={A→C,D→C,BD→A},试说明
={AB,ACD,BCD}相对于F是损失分解的理由。
答:据已知的F集,不可能把初始表格修改为有一个全a行的表格,因此相对于F是损失分解。
设关系模式R(ABCD),F是R上成立的FD集,F={AB→CD,A→D}。
①试说明R不是2NF模式的理由。
②试把R分解成2NF模式集。
#
解:①从已知FD集F,可知R的候选键是AB。
另外,AB→D是一个局部依赖,因此R不是2NF模式。
②此时,R应分解成{AD,ABC}是2NF模式集。
设关系模式R(ABC),F是R上成立的FD集,F={ C →B,B → A }。
①试说明R不是3NF模式的理由。
②试把R分解成3NF模式集。
解:①从已知FD集F,可知R的候选键是C。
从 C →B和B →A,可知C → A 是一个传递依赖,因此R不是3NF
模式。
②此时,R应分解为{CB,BA}即为3NF模式集。
设有一个记录各个球队队员每场比赛进球数的关系模式
(
R(队员编号,比赛场次,进球数,球队名,队长名)
如果规定每个队员只能属于一个球队,每个球队只有一个队长。
①试写出关系模式R的基本FD和关键码。
②说明R不是2NF模式的理由,并把R分解成2NF模式集。
③进而把R分解成3NF模式集,并说明理由。
解:(1)根据每个球员只能属于一个球队,可写出FD:队员编号→球队名;
根据每个球队只有一个队长,可写出FD:球队名→队长名;
“每个队员每场比赛只有一个进球数”,这条规则也是成立的,因此还可
以写出FD:(队员编号,比赛场次)→进球数
从上述三个FD可知道,R的关键码为(队员编号,比赛场次)。
(2)从(1)可知,R中存在下面两个FD:
、
(队员编号,比赛场次)→(球队名,队长名)
队员编号→(球队名,队长名)
显然,其中第一个FD是一个局部依赖,因此R不是2NF模式。
对R应该进行分解由第二个FD的属性可构成一个模式,即
R1(队员编号,球队名,队长名);
另一个模式由R的属性集去掉第二个FD属性右边的属性组成,即
R2(队员编号,比赛场次,进球数)。
R1和R2都是2NF模式,因此分解为2NF模式集为{R1,R2}
(3)R2(队员编号,比赛场次,进球数)中FD是
(队员编号,比赛场次)→进球数
|
关键码为(队员编号,比赛场次),可见R2已是3NF。
R1(队员编号,球队名,队长名)中,FD有两个:
队员编号→球队名
球队名→队长名
关键码为队员编号,可见存在传递依赖,因此R1不是3NF模式。
对R1应分解成两个模式:R11(队员编号,球队名),R12(球队名,队长
名)。
这两个模式都是3NF模式。
因此,R分解成3NF模式集为{R11,R12,R2}。
设有关系模式
R(职工名,项目名,工资,部门名,部门经理)
如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。
(
①试写出关系模式R的基本FD和关键码。
②说明R不是2NF模式的理由,并把R分解成2NF模式集。
③进而把R分解成3NF模式集,并说明理由。
解:(1)R的基本FD有三个:
(职工名,项目名)→工资
项目名→部门名
部门名→部门经理
关键码为(职工名,项目名)。
(2)根据(1),R中存在下列两个FD:
(职工名,项目名)→(部门名,部门经理)
¥
项目名→(部门名,部门经理)
其中前一个FD是一个局部依赖,因此R不是2NF模式。
R应分解成两个模式:R1(项目名,部门名,部门经理)
R2(职工名,项目名,工资)
R1和R2都是2NF模式。
(3)R2已是3NF模式。
在R1中,由于存在两个FD:
项目名→部门名
部门名→部门经理
即存在一个传递依赖,因此R1不是3NF模式。
对R1应分解成两个模式:R11(项目名,部门名),R12(部门名,部门经理)。
这两个模式都是3NF模式。
因此,R分解成3NF模式集时,为{R11,R12,R2}。