数据库试题及答案37811.docx
《数据库试题及答案37811.docx》由会员分享,可在线阅读,更多相关《数据库试题及答案37811.docx(48页珍藏版)》请在冰豆网上搜索。
![数据库试题及答案37811.docx](https://file1.bdocx.com/fileroot1/2022-11/17/395dcfb9-0a94-43ec-be29-07dd7a2c884b/395dcfb9-0a94-43ec-be29-07dd7a2c884b1.gif)
数据库试题及答案37811
第一节概述
关系(数据)模型3要素:
数据结构、数据操作、完整行约束(实体完整性和引用完整性)。
数据库语言SQL功能:
数据定义语言,数据查询语言,数据操纵语言,数据控制语言。
关系数据库设计的两种基本技术:
实体-联系(E-R)方法和规范化方法。
数据库系统的特点:
数据的高度结构化,数据的高共享性,程序与数据的高独立性。
程序与数据的高独立性包括:
逻辑数据独立性和物理数据独立性(指的是与应用程序的独立性)。
数据库系统的三级模式结构:
外模式,逻辑模式和内模式。
DBMS的数据控制功能:
数据的安全性保护,数据的完整性检查,并发控制和数据库恢复。
DBMS组成:
硬件,数据库,软件,人。
主码∈候选码∈超码。
关系规则:
规则1:
第一范式规则,不存在多值属性
规则2:
基于内容存取行
规则3:
行唯一性原则
关系代数的基本运算:
选择,投影,并,差,笛卡尔积。
扩展运算:
交,自然连接,除和赋值。
第二节sql语句
Ø找出在Brooklyn所有支行都有账户的客户
selectdistinctS.customer_name
fromdepositorasS
wherenotexists(
(selectbranch_namefrombranchwherebranch_city='Brooklyn')
except
(selectR.branch_namefromdepositorasT,accountasR
whereT.account_number=R.account_numberandS.customer_name=T.customer_name))
Ø例如,找出所有在Perryridge支行中只有一个存款账户的客户.
selectT.customer_name,(casewhen(工龄>='35')then90%elsethen0end)asbl
fromdepositorasT
whereunique(selectR.customer_namefromaccount,depositorasR
whereT.customer_name=R.customer_nameand
R.account_numer=account.account_numberand
account.branch_name='Perryridge')
Ø例如,找出那些平均存款账户余额大于$1200的支行的平均存款账户余额
selectbranch_name,avg_balance
from(selectbranch_name,avg(balance)fromaccountgroupbybranch_name)
asbranch_avg(branch_name,avg_balance)
whereavg_balance>1200
1.组成部分:
DDL,DML(交互式操纵语言),完整性,视图定义,事务控制,嵌入式和动态SQL,授权。
第三节数据库设计(ER和规范化方法)
1.映射基数和参与约束的复合表示
Ø箭头()表示最多一个:
0..1
Ø线段()表示多个:
0..*
Ø单线()表示部分参与:
0..*
Ø双线(=)表示完全参与:
1..*
2.三元联系中,只能使用一个箭头。
不然会出现如下混淆情况:
(1)每一个来自于A的实体至多只能和B和C实体组合中的一个联系
(2)每一个来自于A和B的实体组合至多只能和一个来自于C的实体联系,同时,每一个来自于A和C的实体组合至多只能和一个来自于B的实体联系
3.将联系转化为关系。
M-N生成3个表,N-1联系靠到N一方(主键由多的一方确定,因此靠N方),1-1任何一方。
4.规范化
(1)函数依赖(X→Y,X确定Y值唯一):
在R(U)中,如果X→Y,并且对于X的任何真子集X,都有X/→Y,则称Y对X完全函数依赖。
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
因为S#→SName。
传递函数依赖:
在R(U)中,如果X→Y,(Y⊈X),Y/→X,Y→Z,则称Z对X传递函数依赖。
(2)范式:
第一范式:
不存在多值属性和内部结构
第二范式:
若R∈INF,且每一个非主属性完全函数依赖于键,则R∈2NF。
第三范式:
若R∈2NF,且每一个非主属性不传递的函数依赖于键,则R∈3NF。
非主属性DH部分依赖于键
DH传递依赖于S#
BCNF:
R∈1NF,且每一个决定因素都包含键,则R∈BCNF。
(3)关系分解
无损连接概念:
如果对分解后的新关系进行自然连接得到的元组的集合与原关系完全一致。
无损连接的充分必要条件:
R1∩R2→(R1-R2)或R1∩R2→(R2-R1)。
如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的,如果不成立,还不能断定不保持函数依赖
设关系模式R,其中U={A,B,C,D,E},F={A→BC,C→D,BC→E,E→A},则分解ρ={R1(ABCE),R2(CD)}A→BC,BC→E,E→A都在R1上成立(也就是说每一个函数依赖左右两边的属性都在R1中),C→D在R2上成立,因此给分解是保持依赖的。
第四节查询优化
1.查询优化的可能性,查询处理的过程。
2.查询优化器的目标是:
选择最有效的查询执行计划以存取相关数据和回答查询
查询优化的最终目的是:
提高查询效率,缩短查询请求的响应时间
3.三类查询优化器的基本原理:
穷尽优化法,两段优化方法,启发式方法
4.从from读起,再读where变选择,再读select投影。
第五节完整性约束(方法:
非过程性的方法和过程性的方法)
1. 破坏完整性
S被参照表
R参照关系
插入元组
会
删除元组
会
修改元组
会
会
2.CREATETABLES
(S#CHAR(8)NOTNULLUNIQUE,
SGCHAR
(1)CONSTRAINTS_SGCHECK(SGIN(‘F’,‘M’)),
SASMALLINT,PRIMARYKEY(S#),FOREIGNKEYSAReferencesTABLET,
CHECK(SG=‘F’ORSNNOTLIKE‘Ms.%’));
3.ALTERTABLE<表名>
[ADD<新列名><数据类型>[列完整性约束][,<新列名><数据类型>[列完整性约束]]
[,<表完整性约束>]
]
[DROPCONSTRAINT<完整性约束名>]
[ALTERCOLUMN<列名><数据类型>]
4.触发器包含三个要素:
触发事件(条件),触发时机,触发动作
5.createtriggerbefore/afterinsertof列名on表名referencingold/newrow/tableasR
Foreachrow/statementwhen(条件)beginatomic…end;
第六节数据库系统的安全模型
1.数据库安全性:
保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
不合法的使用的操作包括了对数据库的查询与修改。
2.自主访问控制:
(DAC)由客体的属主对自己的客体进行管理,由属主自己决定是否将自己的客体访问权或部分访问权授予其他主体。
强制访问控制:
(MAC)用户(或其他主体)与文件(或其他客体)都被标记了固定的安全属性(如安全级、访问权限等),在每次访问发生时,系统检测安全属性以便确定一个用户是否有权访问该文件。
3.自主存取控制:
用户对于不同的数据对象有相应的存取权限,而且用户还可以将其拥有的存取权限转授给其他用户。
三个要素:
用户,数据对象,存取权限.灵活性:
转授权限.问题:
“无意泄露”,问题原因:
数据本身并无安全性标志
强制存取控制:
每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。
对于任意一个对象,只有具有合法许可证的用户才可以存取。
5.grantselect/ALLPRIVILIGESontablettouser1/public;
Revokeselect/ALLPRIVILIGESontabletfromuser1/public/角色名;
Createrole角色名R1;GRANTR1TOU1,U2,U3;REVOKER1FROMU2;
6.审计分为:
用户级审计和系统级审。
AUDIT/ONAUDITALTER,UPDATEONSC.
7.数据加密的两种方法:
替换方法和置换方法。
8.★统计数据库中的安全性问题:
可能存在着隐蔽的信息通道,使得可以从合法的查询中推导出不合法的信息。
解决办法:
1规定任何查询至少涉及N个以上的记录2规定两个查询的相交数据项不能超过M个3规定任一用户的查询次数不能超过1+(N-2)/M。
第七节索引
1.稀疏索引和稠密索引相比:
1.定位一条记录的时候较慢.2占用空间较小,所需的插入和删除时的维护开销也较小.
2.数据库索引设计的最重要目标就是要减少读数据所需的磁盘访问次数。
3假定叶子节点可以包含三个索引项,高层索引节点可以包含三个节点指np。
例:
插入62
4.位图的限定条件:
1.属性不能太多,2。
表结构不能被修改
5.创建索引的原则:
(1)在select操作占大部分的表上创建索引;
(2)在where子句中出现最频繁的列上创建索引;
(3)在选择性高的列上创建索引
(4)复合索引的主列应该是最有选择性where限定条件最常用的列,并以此类推第二列……。
(5)小于5M的表,最好不要使用索引来查询,表越小,越适合用全表扫描。
6.聚簇索引:
索引的叶节点就是数据节点。
而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。
聚簇索引的创建:
一张表只能创建一个,依赖最常使用的查询类型来决定应该使用聚簇索引,不同的数据库产品创建聚簇索引的方法不同。
聚簇的优点:
当所需要的行彼此很靠近的时候,很多需要读取的行可能位于同一个页面,这样,可以节省处理I/O操作的时间,因此查询可以更有效地执行。
非聚簇索引没有此优点
一、选择题
1.DBS是采用了数据库技术的计算机系统,它是一个集合体,包含数据库、计算机硬件、软件和(C)。
A.系统分析员B.程序员C.数据库管理员D.操作员
2.数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A)。
A.DBS包括DB和DBMSB.DBMS包括DB和DBS
C.DB包括DBS和DBMSD.DBS就是DB,也就是DBMS
3.下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是(D)。
I.人工管理阶段II.文件系统阶段 III.数据库阶段
A.I和IIB.只有IIC.II和IIID.只有I
4.下列四项中,不属于数据库系统特点的是(C)。
A.数据共享B.数据完整性C.数据冗余度高D.数据独立性高
5.数据库系统的数据独立性体现在(B)。
A.不会因为数据的变化而影响到应用程序
B.不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序
C