数据库复习专升本.docx
- 文档编号:5758752
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:14
- 大小:64.38KB
数据库复习专升本.docx
《数据库复习专升本.docx》由会员分享,可在线阅读,更多相关《数据库复习专升本.docx(14页珍藏版)》请在冰豆网上搜索。
数据库复习专升本
一、题型及分值
1、填空题(10小题,10分)
2、选择题(10小题,20分)
3、问答与分析题(4小题,30分)
4、综合题(2小题,40分)
二、知识要点
(一)关系模型的基本概念
【例1】学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是_____________。
【例2】层次模型不能直接表示()。
A.1:
1联系B.1:
n联系
C.m:
n联系D.1:
1和1:
n联系
【例3】在三大传统的数据模型中,具有严格的数学理论基础的是________模型。
【例4】数据库的数据独立性包括逻辑独立性和___________。
(二)关系代数运算
【例1】五种基本关系代数运算是(A)。
A.∪,-,×,π和σ B.∪,-,∞,π和σ
C.∪,∩,×,π和σ D.∪,∩,∞,π和σ
【例2】在关系代数中,除法运算由基本运算符(C)组成。
A、∪,-,π和σ B、-,∞和π
C、-,×和πD、∪,∞,π和σ
【例3】设关系R和S,R∩S的运算等价于(B)。
A.S-(R-S)B.R-(R-S)
C.(R-S)∪SD.R∪(R-S)
【例4】在关系代数中,连接运算∞由基本运算符(C)组成。
A、∪,-,π和σ B、-和π
C、×和σD、∪,π和σ
【例5】设关系R和S的属性个数分别为r和s,则(R×S)操作结果的属性个数为_________,元组个数为___________。
【例6】设有如下关系:
关系代数表达式R÷S的运算结果是______________。
【例7】已知有如下三个关系
STUDENT(学号,姓名,性别,年龄,专业)
GRADE(学号,课程号,成绩)
COURSE(课程号,课程名,学分,课时)
现有如下表达式:
π学号,姓名(STUDENT)
(π学号,课程号(GRADE)÷π课程号(COURSE)))。
请用汉语句子写出该表达式表达的查询,并写出与该表达式对应的SQL语句。
答:
(1)选修了全部课程的学生的学号和姓名。
(2)selectsno,sname
Fromstudent
Wherenotexists
(select*
Fromcourse
Wherenotexists
(select*
Fromsc
Wheresno=student.snoandcno=o))
(三)数据库的完整性
1、关系的三类完整性约束。
2、触发器。
【例1】关系模式的三类完整性约束条件分别是______________、参照完整性约束和用户定义完整性约束。
【例2】在SQLServer中,在视图上可以定义_________类型的触发器。
【例3】试举例说明在视图上创建insteadof触发器能够使得视图具备可更新功能。
答:
如果一个视图涉及到计算列,那么该视图为不可更新视图。
/*创建books表*/
createtablebooks
(
bookKeyintidentity(1,1),
bookNamenvarchar(10)notnull,
Colornvarchar(10)notnull,
ComputedColas(bookName+Color),
Pagesint
)
/*在books表上创建视图,包含基表中所有列*/
createviewuv_books
asselectbookKey,bookName,Color,ComputedCol,Pages
frombooks
视图uv_books包含计算列,为不可更新视图。
/*在视图uv_books上创建insteadof触发器*/
createtriggertr_uv_books
onuv_books
insteadofinsert
as
begin
insertintobooks
selectbookName,Color,Pagesfrominserted
end
/*往视图uv_books上插入一行代码,完成对基表的插入*/
insertintouv_books(bookKey,bookName,Color,ComputedCol,Pages)
values(4,'数据库原理','黄色','白色',200)
从而验证了视图uv_books为可更新视图。
【例4】已知S(sno,sname,ssex,sdept,sage),SC(sno,sname,cno,grade)。
请编写一个触发器,当S表中的sname字段值发生变化时,SC对应的sname字段值也相应改变。
createtriggertrgInS
onS
afterupdate
as
begin
ifupdate(sname)
begin
updateSC
setsname=(selectsnamefrominserted)
wheresno=(selectsnofrominserted)
end
end
(四)SQL语句
1、数据查询及更新
2、索引
3、视图
4、存储过程、游标
【例1】有职工表EMP和部门表DEPT如图所示,其中有下划线的属性为主键,有波浪线
的属性为外键。
下面操作不能正确执行的是()
A.检索部门号为“D05”的职工号
B.将EMP表中职工“李路”的部门号改为空值
C.删除职工“崔浩”的记录
D.在EMP表中插入记录(“E18”,“D05”,“王莹”)
部门号部门名
D01研发部
D02市场部
D03人事部
D04财务部
EMPDEPT
职工号部门号职工名
E01D03李路
E25D01武明
E19D04崔浩
E32D01李颖
【例2】已知两个关系如下:
R
A
B
C
1
b1
c1
2
b2
c2
3
b1
c1
S
D
E
A
d1
e1
1
d2
e2
1
d3
e1
2
假设R的主键是A,S的主键是D,在关系S的定义中包含外键子句:
“FOREIGN KEY(A) REFERENCES R(A)”,
下列SQL语句不能成功执行的是( )
A.DELETE FROM R WHERE A=2
B.DELETE FROM R WHERE A=3
C.DELETE FROM S WHERE A=1
D.DELETE FROM S WHERE A=2
【例3】什么是存储过程?
存储过程有哪些优点?
答:
存储过程是用户完成某项特定任务的一组预编译好的SQL语句。
优点:
(1)模块化编程;
(2)快速执行;(3)减少网络通信量。
(4)预防SQL语句的注入攻击。
【例4】什么是物化视图?
试分析物化视图与普通视图的区别。
答:
物化视图指的是存放SQL语句对应查询结果的视图。
区别:
(1)普通视图只存放视图的定义,物化视图存放的是实际的查询数据;
(2)使用物化视图的查询效率高于普通视图;
(3)物化视图需要占用较大的存储空间;
(4)当基表中的数据发生变化时,需要刷新物化视图。
【例5】一个SQL语句原则上可产生或处理一组记录,而主语句一次只能处理一个记录,为此必须协调两种处理方式,这是通过使用___游标__机制来解决的。
(五)关系数据理论
1、函数依赖、完全函数依赖、部分函数依赖、传递函数依赖
2、三大范式
3、反范式设计
【例1】在关系数据库中,从关系规范化的意义看,如果关系R中的非主属性对码有传递函数依赖,那么R最高是______范式。
【例2】设有关系模式R(A,B,C,D),其上的函数依赖集合F={B→A,BC→D},则R最高是
_____范式。
【例3】在关系模式:
选课(学号,课程号,考试次数,成绩)中,假设一个学生可以参加多门课程的多次考试。
该关系模式的码是__________。
【例4】关系数据库的规范化理论主要解决的问题是()。
A、如何构造合适的数据逻辑结构
B、如何构造合适的数据物理结构
C、如何构造合适的应用程序界面
D、如何控制不同用户的数据操作权限
【例5】一个只满足1NF的关系模式,可能存在哪些方面的问题?
答:
数据冗余、插入异常、删除异常和修改异常。
【例6】关系模式R(球员编号,篮球比赛场次,进球数,球队名,队长)用来表示我校举行的各系篮球比赛。
规定每个球队只有一名队长。
(1)试说明R不是2NF的理由,并将R分解为2NF的模式集。
答:
关系R的码是(球员编号,篮球比赛场次)。
该关系的函数依赖集如下:
{(球员编号,篮球比赛场次)à进球数,球员编号à球队名,球队名à队长}
即存在非主属性“球员编号”、“队长”对码的部分函数依赖,因此R不是2NF。
将R分解为2NF后的结果如下:
R1:
(球员编号,篮球比赛场次,进球数)
R2:
(球员编号,球队名,队长)
(2)将R分解为3NF模式集。
答:
R1:
(球员编号,篮球比赛场次,进球数)
R2:
(球员编号,球队名)
R3:
(球队名,队长)
【例7】就下图给出的关系R,回答问题:
R
SNO
CNO
CTITLE
SNAME
SLOCA
GRADE
80152
C1
OS
王平
D1
70
80153
C2
DB
高升
D2
85
80154
C1
OS
王平
D1
86
80154
C3
AI
杨洋
D3
72
80155
C4
CL
高升
D2
92
(1)关系R为几范式?
为什么?
(2)是否存在删除操作异常?
若存在,则说明是在什么样情况下发生的?
(3)将它分解成高一级范式,分解后的关系是如何解决分解前可能存在的删除异常问题的?
【例8】已知点评网的后台数据库中存在以下两个关系:
帖子表(帖子ID,帖子标题,会员ID),会员表(会员ID,会员昵称,会员等级)。
请回答以下问题:
已知“帖子ID”为自增列字段,请写出查询最新的10个帖子的标题以及会员昵称的查询语句。
答:
SELECTTOP10N.帖子标题,U.会员昵称,N.会员ID
FROM帖子表NINNERJOIN会员表U
ONN.会员ID=U.会员ID
ORDERBYN.帖子IDDESC
为了提高第一小题的SQL语句的查询速度,您会如何重新设计数据库表?
并说明原因。
答:
当帖子表和会员表中涉及到大量记录时,上述的查询难以满足用户对于网页速度的要求。
为了提高查询速度,考虑“反范式设计”,即在帖子表里面添加冗余字段“会员昵称”,这样就可以通过下面的语句达到同样的查询目的:
SELECTTOP10帖子标题,会员昵称,会员ID
FROM帖子表
ORDERBY帖子IDDESC
【例9】请简述范式对查询的影响。
答:
对查询的利:
(1)减少数据冗余,数据更为紧凑;
(2)表的行数少,排序、索引更为迅速;
(3)由于多表,多个聚集索引成为可能。
对查询的弊:
使得查询数据分离在多张表中,增加了查询的复杂性。
(六)数据库设计
【例1】概念结构设计阶段得到的结果是()。
A.数据字典描述的数据需求B.E-R图表示的概念模型
C.某个DBMS所支持的数据模型D.包括存储结构和存取方法的物理结构
【例2】单个用户使用的数据视图的描述称为()
A.外模式B.概念模式
C.内模式D.存储模式
【例3】在合并分E-R时,需完成消除命名冲突的工作。
使用_视图__机制可以重新定义某些属性名,使其与用户习惯一致。
【例4】试举例说明存储过程能够在一定程度上预防SQL语句的注入攻击问题。
答:
假设数据库中有一个关系student(sno,sname,sage,ssex)。
在连接数据库后,使用字符串拼接的方式查询指定学号的学生信息,其中txtSno.Text代表用户往文本框中输入的学号。
StringsqlStr=“select*fromstudentwheresno=‘”+txtSno.Text.Trim()+“’”;
如果用户往文本框中输入字符串:
‘or‘1’=‘1
该语句将成为select*fromstudentwheresno=‘’or‘1’=’1’
即执行结果为student表中的全部记录。
而如果在student表上创建如下存储过程Pr_Student,其中@sno为接受用户输入的学号信息。
CreateprocedurePr_Student
@snochar(5)
As
Select*fromstudentsno=@sno
然后在应用程序中使用如下语句调用存储过程。
SqlCommandcommand=newSqlCommand("Pr_Student",sqlCon);
command.CommandType=CommandType.StoredProcedure;
command.Parameters.AddWithValue("@sno",sno);
当用户输入字符串‘or‘1’=‘1,将在数据库中查找sno为‘or‘1’=‘1的学生信息,输出结果将为空。
通过上例说明了使用存储过程能够预防SQL语句的注入攻击。
(七)事务和数据库恢复
【例1】事务的ACID特性指的是什么?
【例2】对于事务故障的恢复,恢复子系统将结合日志文件撤销事务,具体做法是:
___向扫描日志文件,对事务中的每个操作执行逆向操作。
【例3】请分析故障子系统对于下图所示的事务所采取的恢复策略。
答:
T1为检查点之前已经提交的事务,因此不执行任何操作。
T2和T4为在检查点后故障点前提交的事务,它们对数据库所做的修改在故障发生时还可能在缓冲区中,尚未写入数据库,因此进行REDO操作。
T3和T5在故障发生时还未完成,因此予以撤销。
【例4】你所在的企业的数据库中拥有一套完整的备份策略:
每周日晚上执行完整备份,每天晚上执行差异备份,每天12点、14点、16点执行事务日志备份。
某个周三的下午13点,用户报告说不能访问数据库。
作为DBA,你检查时发现数据库发生了严重的故障,存储数据库的硬盘无法正确工作。
这时,你会如何处理?
答:
为服务器更换新的硬盘,使用存储在另外一个盘上的备份文件进行故障恢复。
先使用上周日晚的完整备份文件进行还原;再使用周二晚上的差异备份文件进行还原;最后使用当天中午12点的事物日志备份进行还原。
(八)综合题
1、设某商业集团数据库中有三个实体集:
“商店”实体集,其中的属性有商店编号、商店名、地址等;“商品”实体集,其中的属性有商品号、商品名、规格、单价等;“职工”实体集,其中的属性有职工编号、姓名、性别、业绩等。
商店与商品之间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品,有月销售量;商店与职工之间存在着“聘用”联系,每个商店的职工人数应该在20~100人之间,每个职工只能在一个商店工作,商店聘用职工有聘用期和月薪。
试画出E-R图;
答:
(2)将E-R图转换成关系模型。
答:
商店(商店编号,商店名,地址)
职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪)
商品(商品号,商品名,规格,单价)
销售(商店编号,商品号,月销售量)
2、设有学生运动会模型,语义如下:
(1)有若干班级,每个班级包括:
班级号,班级名,专业,人数;
(2)每个班级有若干运动员,运动员只能属于一个班,运动员信息包括:
运动员号,姓名,性别,年龄;
(3)有若干比赛项目,包括:
项目号,名称,比赛地点;
(4)每名运动员可参加多项比赛,每个项目可有多人参加;
(5)要求能够公布每个比赛项目的运动员名次与成绩;
(6)要求能够公布各个班级团体总分的名次和成绩。
解题要求:
画出每个实体及其属性关系、实体间实体联系的E-R图。
答:
2)根据试题中的处理要求:
把E-R图转化为关系数据逻辑模型,包括各个表的名称和属性,并指出每个表的主键和外键。
答:
关系模式如下:
a)班级(班级号,班级名,专业,人数)
主键:
班级号
b)运动员(运动员号,姓名,性别,年龄,班级号)
主键:
运动员号 外键:
班级号
c)项目(项目号,项目名,比赛地点)
主键:
项目号
d)比赛(运动员号,项目号,成绩,名次,得分)
主键:
运动员号,项目号 外键:
运动员号;项目号
3)试用关系代数描述:
检索出参加“跳高”比赛项目的运动员姓名。
答:
π姓名(σ项目名=‘跳高’(运动员
比赛
项目))
4)为“比赛”表中的“成绩”字段添加完整性规则:
成绩的值只能在0-100的范围内。
答:
altertable比赛
addconstraintCK_grade
check(成绩>=0and成绩<=100)
5)试用SQL命令建立“运动员”表,注意主键和外键的说明。
答:
createtable运动员
(运动员号char(4)notnullprimarykey,
姓名varchar(8),
性别char
(2),
年龄tinyint,
班级号char
(2),
constraintsFK_bhforeignkey(班级号)references班级(班级号))
6)试用SQL命令对“运动员”表建立名为“班级_年龄”的索引:
首先按班级号升序排序,若相同班级的按年龄降序排序。
答:
createindex班级_年龄on运动员(班级号,年龄desc)
7)为了加快语句select姓名,年龄from运动员where年龄>=18and年龄<=22的查询速度,你会如何创建索引?
请写出创建索引的语句。
答:
createindex年龄_姓名on运动员(年龄,姓名)
8)试用SQL命令描述:
检索出姓名中含有“敏”字的学生姓名及其所参加比赛项目的名称。
答:
select姓名,项目名
from运动员,比赛,项目
where姓名like“%敏%”
and运动员.运动员号=比赛.运动员号
and项目.项目号=比赛.项目号
9)试用SQL命令描述:
检索出“跳远”比赛中的成绩排在前三名的运动员姓名。
答:
selecttop3姓名
from运动员,比赛,项目
where项目名=“跳远”
and运动员.运动员号=比赛.运动员号
and项目.项目号=比赛.项目号
order by 成绩desc
10)试用SQL命令描述:
统计每个项目的参赛人数、最高成绩、最低成绩,显示列为项目名称、参赛人数、最高成绩、最低成绩。
答:
select项目名,count(*)参赛人数,max(成绩)最高成绩,min(成绩)最低成绩
from比赛,项目
where项目.项目号=比赛.项目号
groupby项目.项目号,项目名
11)试用SQL命令建立名为“项目清单”的视图,视图的列包括:
项目名称、运动员号、比赛地点。
答:
createview项目清单(项目名称,运动员号,比赛地点)
as
select项目名,运动员号,比赛地点
from比赛,项目
where项目.项目号=比赛.项目号
12)试创建一个带输出参数的存储过程pr_xh。
根据输入的运动员的“姓名”,获得指定姓名的运动员的比赛成绩。
createprocedurepr_xh
@姓名char(5),
@成绩tinyintoutput
as
begin
select@成绩=比赛.成绩
from运动员,比赛
where运动员.运动员号=比赛.运动员号
and运动员.姓名=@姓名
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 复习