数据库期末复习
填空 1. 数据库技术经历了 人工处理、文件系统、数据库系统 三个阶段
2. SQL语言集 数据定义、数据查询、数据 操纵、数据控制 功能于一体。
3. E-R图的主要元素是 实体型、属性、联系
4. 关系系统的完整性控制包括 实体完整性、参照完整性、用户定义的完整性
5. 数据库系统一般包括数据库、数据库管理系统、应用系统、数据库管理员与用户
6. 数据独立性分为 逻辑独立性、物理独立性
7. E-R图一般是在数据库设计的 概念设计 阶段使用
8. 使某个事务永远处于等待状态,而得不到执行的现象称为 活锁
9. 子查询的条件依赖于父查询,这类查询称为 嵌套查询
10. 关系代数运算中,专门的关系运算有 选择 、投影 、连接 和除运算
11. 死锁是指事务永远不会释放它们所占用的锁,死锁的两个事物都将无限期等待下去。
简答 1、数据库管理系统的主要功能有哪些?
数据库定义功能,数据操纵功能,数据库的事务管理和运行管理,数据组织、存储和管理,通信功能,数据库的建立和维护功能。
2、试述关系模型的三个组成部分。 数据结构,操纵与完整性约束,存储结构
3、举例说明关系参照完整性的含义: R为参照关系,S为被参照关系,即关系R中属性的取值必须是关系S中K列中存在的值
4、数据库设计包含的六个阶段,简述每个阶段的任务 ①需求分析:分析用户的需求,包括数据、功能和性能需求等;②概念结构设计:主要采用E-R模型进行设计,包括画E-R图,③逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换,④物理结构设计:主要是为所设计的数据库选择合适的存储结构和存取路径,⑤实施:包括编程、测试和试运行,⑥运行和维护:系统的运行与数据库的日常维护。
5、什么是事务,事务具有哪四个特性? 构成单一逻辑工作单元的操作集合。 ①原子性:事务中包括的所有操作要么都做,要么都不做②一致性:事务必须使数据库从一个一致性状态变到另一个一致性状态③隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的④持续性:事务一旦提交,对数据库的改变是永久的
6、并发操作会带来那三类不一致性?什么样的并发调度是正确的调度?
①丢失更新,②读脏数据,③不可重复读 。只有可串行性调度才是正确的调度方式
7、数据模型的三个要素分别是什么? ①数据结构②数据操作③数据约束条件
8、在学生、课程和选修三个关系模式中,选修关系的学号和课程号都是外码,请从实体完整性和参照完整性(规则)角度分析说明选修关系中这两个外码的取值情况 学生(学号,处名,性别,专业号,年龄) 课程 (课程号,课程名,学分) 选修(学号,课程号,成绩)
答:实体完整性角度看:学号和课程号都是学生和课程之间的关系,主属性不能取重复的值,也不可以为空值,从参考完整性看:选修关系引用的学号,课程号是存在实体
9、试述数据库系统的组成: 硬件,软件,数据库,用户
10、什么是基本表?什么是视图?它们之间的区别是什么?
基本表:本身独立存在的表,一个表可以带若干索引,索引也存放在存储文件中 视图:一个表或者几个基本表导出的表,是一个虚表。
基本表和视图都是表,但基本表是实际存储数据库的表,视图是虚表,它是从基本表或其他视图中导出的表
11、数据库的三级模式结构包括哪三级模式和哪两级映像?为什么这两级映像可以保证数据库中的数据有较高的逻辑独立性和物理独立性?
三级模式:外部模式,概念模式,内部模式 两级映像:外模式/模式映像,模式/内模式映像
如果数据库的模式需要改变,只需对外模式/模式映像作相应修改,可使外模式和应用程序尽可能保持不变,保证数据与程序的逻辑独立性。如果数据库为了某种需要改变内模式,可对模式/内模式映像作相应改变,可使模式尽可能保持不变,保证数据与程序的物理独立性
12、请叙述1NF、2NF、3NF的定义。
如果一个关系模式R,每个关系r的属性值都是不可再分的原子值,则称R为第一范式,若R属于1NF,且每一个非主属性都完全函数依赖于候选码,则称R为第二范式,关系模式R属于2NF,且每个非主属性都不传递依赖于候选码,则称R为第三范式
13、什么是数据库的安全性?,什么是数据库的完整性?两者的区别是什么
数据库的安全性:保护数据库以防止不合法的使用所造成的数据泄露、更改或者破坏数据库的完整性,完整性:数据库中数据的正确性和相容性,即为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出
14、需求分析阶段的设计目标是什么?调查的内容是什么?
目标:通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能
调查内容: ①组织机构的调查,②业务流程调查,③系统的信息要求和处理要求④企业的限制和目标
15、什么是封锁,基本的封锁类型有儿种?试述他们的含义
封锁: 事务T对某个数据对象操作之前,先向系统发出请求,对其加锁 基本的封锁类型:X锁 S锁
X锁(排它锁),又称为写锁。若事务T对数据对象A上X锁,则只允许T读取和修改A,不允许其他任何事务再对A进行加锁和操作,直至T释放A上的锁,从而保证在事务T释放A的锁之前,其它事务不能再读取和修改数据对象A
S锁(共享锁),又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的锁
16、什么是数据转储、静态转储和动态转储?
数据转储: DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程
静态转储:在系统中无运行事务时进行的转储操作 动态转储:转储期间允许对数据库进行存取或修改,即转储和用户事务可以并发执行
转储还可分为: 海量转储:是指每次转储全部数据库 增量转储:指每次只转储上一次转储后更新的数据
17、RDBMS在实现参照完整性时需要考虑哪此方面?
①外码的取值规则②参考表中增加元组③参考表中修改一个元组的外码④被参照表中删除一个元组⑤被参照表中修改一个元组的主码
18、什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?
逻辑独立性表示一旦模式发生变化, 无需改变外模式或应用程序能力,物理独立性表示不会因为内模式发生改变而导致概念模式发生改变的能力。因为两层映像保证了数据库具有较高的数据独立性。
19. 数据库系统的特点: ①面向全组织的复杂的数据结构 ②数据的冗余度小,易扩充 ③具有较高的数据和程序的独立性
④统一的数据控制功能,数据共享程度高
20. 故障的的种类 ①事务内部的故障:是非预期的,不能由应用程序处理的;②系统故障(软故障):是指造成系统停止运转的任何事件,使得系统要重新启动;③介质故障(硬故障):如磁头损坏、磁头碰撞,瞬时强磁场干扰等。④计算机病毒:是一种人为的故障或破坏
21. 日志文件的作用:①事务故障恢复和系统故障恢复必须用日志文件。②在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。③
22. 什么是日志文件?为什么需要日志文件? 答:日志文件是用来记录事务对数据库的更新操作的文件。
设立日志文件的目的是:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
23. 登记日志文件时为什么必须先写日志文件,后写数据库?
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成一个。
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是最多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,再写数据库的修改。
24. 数据库的运行和维护主要包括哪些内容 答: ①数据库的转储和恢复 ②数据库的安全性、完整性控制
③数据库性能的监督、分析和改造 ④数据库的重组织与重构造
25. 简述规范化理论的优缺点 优点:规范化理论可以减少插入异常、删除异常、数据冗余度高等问题。
缺点:它可能使得查询效率降低,编程工作难度加大,另外分割表时要适可而止,保持适当的数据冗余有助于提高数据的存取效率
26. 写一个用户自定义函数Fun_Score,输入的一个参数为整数,当此参数值小于60时,返回不合格;60到74时,返回合格;75到84时,返回良;85到100时,返回优
CREATE FUNCTION dbo.Fun_Score(@FI_Score int) RETURNS Varchar(30)
AS BEGIN DECLARE @FS_RETURN Varchar(30)
IF @FI_Score > 84 IF @FI_Score > 74 IF @FI_Score > 59 ELSE RETURN('合格')
RETURN('优') RETURN('良') RETURN('合格') RETURN('不合格') END
27. 编写一下触发器,完成功能:如果一个教师还有课上,则不能删除教师的基本信息
create trigger before_delete on Teacher_info for each row
declare numrows INTEGER;
begin /* 检测是否授课 */
select count(*) into numrows
from T_授课 where
:new.FI_ID = T_授课.FI_ID;
if (:new.FI_ID is not null and numrows <> 0) then
raise_application_error(-20007, ‘不能删除,因为相关老师还在上课.' );
end if;
28. 试述实现数据库安全性控制的常用方法和技术? 用户标识和鉴别 存取控制 视图机制 审计 数据加密
29. 视图的作用有哪些? ①视图能够简化用户的操作 ②视图使用户能以多种角度看待同一数据 ③视图对重构数据库提供了一定程度的逻辑独立性 ④视图能够对机密数据提供安全保护
30. 查询计算机系年龄在20岁以上(含20), 31. 查询score表中,既选修了’ c05103’又选修了’ c05108’的学生
且姓刘的所有同学的姓名。 select studentno from score
Select Sname where courseno = 'c05103'
From Student intersect
where Sdept = ‘CS’ and select studentno from score
Sage >= 20 and where courseno = 'c05108'
Sname like ‘刘%’
32. 查询student表中,男性且姓许的同学
select * FROM student WHERE sex = '男'
intersect select * from student where sname like '许%'
33. 为student增加一个出生日期的字段,名为d_csrq。 alter table student add d_csrq datetime
数据:数据是描述事物的符号记录,具有多种形式的,可以是文本、图表、图形、图像、声音、语言、视频等
数据库:长期存储在计算机内、有组织的、可共享的数据集合。数据库中的 数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据库系统:在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。
数据库管理系统:是位于用户与操作系统之间的具有数据定义、数据操纵、数据库的运行管理、数据库的建立和维护功能的一层数据管理软件。
数据模型是对现实世界进行抽象的工具,用于描述现实世界的数据、数据联系、数据语义和数据约束等方面内容。数据模型分成概念模型和逻辑模型两大类。前者的代表是实体联系模型,后者的代表是层次、网状、关系和面向对象模型。关系模型是当今的主流模型,面向对象模型是今后发展的方向。
一、有一个“学生-课程”数据库(stu_c),数据库中包括三个表:
(1)“学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为: Student(Sno,Sname,Ssex, Sage,Sdept) Sno 为关键字,类型char(8)。
(2) “课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,可记为: Course(Cno,Cname,Cpno,Ccredit) Cno为关键字, 类型char(8)。 (3) “学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为:SC(Sno,Cno,Grade) (SNO, CNO) 为关键字。用SQL语句完成下列操作:
(1)用SQL语句实现SC表的创建,要求定义相应的主键和外键约束
Create table SC( Sno char(8), Cno char(8), Grade int, Primary key (Sno,Cno) )
(2)“学生”表上以学生姓名和年龄建立一个唯一性索引(升序)
Create unique index stusno ON student(sname,sage);
(3)在以上三个表中查询Ccredit为5并且Grade大于60的学生的学号、姓名和性别。
SELECT DISTINCT student.Sno,student.Sname,student.Ssex FROM student,Course,SC
where student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Course.Ccredit=5 AND SC.Grade > 60
(4)统计每个学生所修课程的全部学分(不及格课程不统计)
Select student.Sno, student.Sname, Course. Cname,课程.学分 from 学生 join 学生选课on学生.学号=学生选课.学号join课程on课程.课程号=学生选课.课程号 where 学生选课.成绩>=60
(5)修改“李立”同学的数据库成绩位75分
update学生选课set成绩=75 where学号in (select 学号from学生where姓名='李立') and课程号in (select课程号from课程where课程名='数据库')
(6)删除“数据库”课程的选课信息(条件是其先修课不及格)
delete from 学生选课 where 课程号=any (select 课程号 from 课程 where 课程名='数据库')and学号in(select学号from学生选课where成绩<60 and课程号in(select先修课号from课程where 课程名='数据库')
(7)年龄大于23岁的女学生的学号和姓名;
select 学号,姓名 from 学生 where年龄>23 and 性别='女'
(8)“李小波”所选修的全部课程名称;
select课程.课程名 from 学生join 学生选课 on 学生.学号=学生选课.学号 join 课程 on 课程.课程号=学生选课.课程号 where 学生.姓名='李小波'
(9)所有成绩都在80分以上的学生姓名及所在系;
select学号,姓名,所在系 from 学生 where 学号 in ((select distinct 学生.学号from 学生 inner join 学生选课 on 学生.学号=学生选课.学号 where 学生选课.成绩> 80) except (select distinct 学生.学号 from 学生 inner join 学生选课on 学生.学号=学生选课.学号where学生选课.成绩<80))
(10)英语成绩比数学成绩好的学生
select 学生.学号,学生.姓名,成绩 as 英语 into temp1 from 学生 inner join 学生选课 on 学生.学号=学生选课.学号
inner join 课程 on 课程.课程号=学生选课.课程号 where 课程.课程名='英语',
select 学生.学号,学生.姓名,成绩 as 数学 into temp2 from 学生 inner join 学生选课 on 学生.学号=学生选课.学号
inner join 课程 on 课程.课程号=学生选课.课程号 where 课程.课程名='数学',
select temp1.学号,temp1.姓名,temp1.英语,temp2.数学 into temp3 from temp1 left join temp2 on temp1.学号=temp2.学号
select学号,姓名 from temp3 where 英语>数学
(11)“操作系统”课程得最高分的学生姓名、性别、所在系;
select 姓名,性别,所在系 from 学生 inner join 学生选课 on 学生.学号=学生选课.学号
inner join 课程 on 课程.课程号=学生选课.课程号 where 课程名= '操作系统' and 成绩=
(select max(成绩) from 学生选课 where 课程号in (select 课程号 from 课程 where 课程名='操作系统'))
(12)至少选修两门以上课程的学生姓名、性别;
select 姓名,性别 from 学生 where 学号 in (select 学号 from 学生选课 group by 学号 having count (学号)>=2)
(13) 创建视图,显示每个学生的学号,姓名,选课门数, 补考门数
select 学号,count(学号) as 选课门数 into temp1 from 学生选课 group by 学号 select 学号,count(学号) as 补考门数 into temp2 from 学生选课 where 成绩<80 group by 学号
select 学生.学号,学生.姓名,选课门数, 补考门数 from 学生 join temp1 on 学生.学号=temp1.学号 inner join temp2 on temp1.学号= temp2.学号
(14)查找选课包括“李丽”所有选课的学生
select 课程.课程号 into temp1 from 学生 inner join 学生选课 on 学生.学号=学生选课.学号
inner join 课程 on课程. 课程号=学生选课. 课程号 where 学生.姓名='李丽'
select学生选课.学号,学生选课.课程号,成绩 into temp2 from temp1 left join学生选课 on temp1.课程号=学生选课.课程号
select 学号,姓名 from 学生 where 学号 in (select 学号 from temp2 group by 学号 having count(学号)=(select count(*)from temp1))
(15)删除修课表
drop table 学生选课
设有一教师工资管理系统的E-R图如图所示(回答问题时只用图中字符属性)
3. 3.试使用E-R图转换为关系模型的原则,将教师工资管理系统的E-R图转换为关系模型
答案 : 教师(编号、姓名、性别、职称、所在系) 工资(编号、工资总额、补贴、福利、奖金、教师编号、水电费、房租费)
或 Teacher( Bh 、Xm 、Xb 、Zc 、Szm ) Wages( Bh 、Gz 、Bt 、Fl 、Jj 、Jsbh 、Sd 、Fz )
4. 写出下列问题的SQL语句
(1).将本题中3小题的关系模型转换为数据库的基本表
(2).查询教师姓名中有“中”字符的教师姓名、工资总额的记录
(3).查询女副教授的姓名、工资总额的记录
(4).在表中增加一教师记录“012 王中一 男 教授 计算机”
(5).在表中删除一教师记录“012 王中一 男 教授 计算机”
(6).将所有教师的姓名,工资总额按工资总额的降序排序
4(1)答案:
create table teacher ( create table wages (
bh char(3) not null, bh char(3) not null,
xm char(10) not null, jsbh char(10),
xb char(2), gz decimal(7,2),
zc char(10), .。。
szx char(10) ) fz decimal(5,2)
(2) select teacher.xm , wages.gz from teacher, wages where teacher.bh = wages.jsbh AND teacher.xm like ‘%中%’
(3) select teacher.xm , wages.gz from teacher, wages where teacher.bh = wages.jsbh AND teacher.xb = ‘女’ AND teacher.zc = ‘副教授’
(4) Insert into teacher ( bh , xm ,xb , zc ,szm ) values ( ‘012’ ,‘王中一’ , ‘男’ , ‘教授’ , ‘计算机’ )
(5) delete from teacher where bh = ‘012’
(6) select teacher.xm , wages.gz from teacher, wages
where teacher.bh = wages.jsbh order by wages.gz DESC