一、选择题
1.数据库管理系统是数据库系统的核心,它负责有效地组织、存储和管理数据,它位于用户和操作系统之间,属于( A )
A.系统软件
B.工具软件
C.应用软件
D.数据软件
2.下列模式中,用于描述单个用户数据视图的是( C )
A.内模式
B.概念模式
C.外模式
D.存储模式
3.数据模型三要素是指( B )
A.数据结构、数据对象和数据共享
B.数据结构、数据操作和数据完整性约束
C.数据结构、数据操作和数据的安全控制
D.数据结构、数据操作和数据的可靠性
以下关于关系的叙述错误的是( C )
A.关系是笛卡尔积的子集,所以也可以把关系看成是一个二维表
B.关系中每列的分量必须来自同一个域,不同的列也可来自同一个域
C.关系中列的顺序不可以交换
D.关系中元组的顺序可任意
5.关系模式的任何属性( A )
A.不可再分
B.可再分
C.命名在该关系模式中可以不唯一
D.以上都不是
6.在关系R(R#,RN,S#)和S(S#,SN,SD)中,R的主码是R#,S的主码是S#,则S#在R中称为( A )
A.外码
B.候选码
C.主码
D.超码
7.关系数据库管理系统应能实现的专门关系运算包括( B )
A.排序、索引、统计
B.选择、投影、连接
C.关联、更新、排序
D.显示、打印、制表
设有关系R和S,关系代数R∩S还可以表示为( A )
A.R-(R-S)
B.R-(S-R)
C.RU(R-S)
D.S-(R-S)
9.SQL语言是( C )语言
A.层次数据库
B.网络数据库
C.关系数据库
D.非数据库
10.任何一个满足2NF但不满足3NF的关系模式都不存在( B )
A.主属性对码的部分依赖
B.非主属性对码的部分依赖
C.主属性对码的传递依赖
D.非主属性对码的传递依赖
11.设有关系模式R(A,B,C),其函数依赖集:F={A→B,B→C},则关系模式R的规范化程度最高达到( B )
A.1NF
B.2NF
C.3NF
D.BCNF
关系数据库的规范化理论指出,关系数据库中的关系应该满足一定的要求,最起码的要求是达到1NF,即满足( C )
A.关系中的元组不可重复
B.主键属性唯一标识关系中的元组
C.每个属性都是不可分解的
D.每个非主键属性都完全依赖于主键属性
13.数据流图(DFD)是用于描述结构化方法中( A )阶段的工具
A.需求分析
B.概念结构设计
C.逻辑结构设计
D.物理结构设计
14.在关系数据库设计中,设计关系模式是( C )的任务
A.需求分析阶段
B.概念设计阶段
C.逻辑设计阶段
D.物理设计阶段
15.( D )是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位
A.程序
B.命令
C.文件
D.事务
16.一个数据库的外模式( D )
A.只能有一个
B.至少两个
C.最多两个
D.可以有多个
17.在数据库管理系统提供的数据语言中,负责数据定义和数据查询的是( A )
A.数据定义语言DDL
B.数据转换语言
C.数据控制语言
D.数据操纵语言DML
18.同一个关系模式的任两个元组值( A )。
A.不能完全相同
B.可以完全相同
C.必须完全相同
以上都不对
19.在关系模式中,一个候选码( C )。
A.只包含一个属性
B.必须由多个属性组成
C.是能唯一标识关系中元组的属性或属性集
D.以上都不对
20.在SQL的SELECT语句中,能实现投影操作的是( A )。
A.SELECT
B.FROM
C.WHERE
D.GROUPBY
21.下列SQL语句中,( B )不是数据操纵语句。
A.INSERT
B.CREATE
C.DELETE
D.UPDATE
22.在SQL中,修改数据表结构应使用的命令是( A )。
A.ALTER
B.CREATE
C.CHANGE
D.DELETE
23.若关系模式R(A,B,C,D)已属于3NF,下列说法中( B )是正确的。
A.它一定消除了插入和删除异常
B.仍存在一定的插入和删除异常
一定属于BCNF
D.A和C都是
24.E-R图是数据库设计的工具之一,它适用于建立数据库的( A )。
A.概念模型
B.结构模型
C.逻辑模型
D.物理模型
25.“日志”文件用于保存( D )
A.程序运行过程
B.数据操作
C.程序执行结果
D.对数据库的更新操作
二、填空题
1.数据管理的发展主要经历了 人工管理、文件系统阶段、数据库系统阶段 三个发展阶段。
2.关系运算可分为 关系代数 和 关系演算 两大类。
3.关系代数运算可以分为 传统的集合运算 和 专门的关系运算 两大类。
4.在SQL语言中,为了数据库的安全性,设置了对数据的存取进行控制的语句,对用户授权使用 GRANT 语句,收回所授的权限使用 REVOKE 语句。
5.设关系模式R(A,B,C,D),函数依赖集F={CD→AB,C→B},则R的候选码是 CD 它是属于 1NF 范式的关系模式。
6.事务的四个特征分别是 原子性、一致性、隔离性、持久性 。
7. DBMS/数据库管理系统 是位于用户和操作系统之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法。
8.系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态,DBMS的这种能力称为 可恢复性 。
9.关系模型的实体完整性是指 主码的值不能为空或部分为空 。
10.如果关系模式R满足1NF,且每个非主属性都不传递函数依赖于R的主码,则称R是 3NF 的模式。
11.设计全局ER模式时需要消除的冲突有: 属性冲突、命名冲突、结构冲突 。
12. 数据流 表示某加工处理过程的输入或输出数据。
规范化(10分,三小题)
1、设关系模式R(S#,CITY,STATUS,P#,QTY),其中供应商号S#,所在城市CITY,邮编STATUS,零件号P#,数量QTY,假设每个供应商只在一个城市。
求出R的候选码
S#,P#,CITY
写出函数依赖集F,确定R属于几范式
F={S#→CITY,S#→STATUS,CITY→STATUS,{S#,P#}→QTY}
属于1NF。
对R进行规范化
R1(S#,CITY)
R2(S#,P#,QTY)
R3(CITY,STATUS)
2、图书馆为每本书做了一个借阅情况登记表,如下图所示,现在要使用数据库进行管理。
图书号:JSJ0001 书名:计算机软件技术基础 作者:谭浩强 出版社:清华大学出版社 定价:21.00元 | ||||||
图书证号 | 读者姓名 | 身份 | 性别 | 所在系 | 借阅时间 | 还书时间 |
T001 | 李娟 | 学生 | 女 | 计算机系 | 2001.5.6 | 2001.5.20 |
T108 | 王海 | 教师 | 男 | 数学 | 2001.8.9 | 2001.11.2 |
T100 | 张君 | 教师 | 男 | 计算机系 | 2002.3.8 | 2002.2.5 |
T076 | 李丽 | 学生 | 女 | 信息系 | 2002.3.8 | 2002.8.6 |
T522 | 刘强 | 学生 | 男 | 计算机系 | 2002.8.7 | 2002.8.15 |
为该数据库设计属于3NF范式的关系模型,用下划线标明主码。
借书者(图书证号,姓名,身份,性别,所在系)
书籍(图书号,书名,作者,出版社,定价)
借还时间(图书证号,图书号,借阅时间,还书时间)
指出所有关系模型的函数依赖F。
F={图书证号→姓名,图书证号→身份,图书证号→性别,图书证号→所在系,{图书证号,图书号}→借阅时间,{图书证号,图书号}→还书时间,图书号→书名,图书号→作者,图书号→出版社,图书号→定价}
设计分析题(10分)(运动项目管理的数据库)
设计阶段经过的过程及各个阶段的主要任务
需求分析
主要任务:①调查分析用户活动
②收集和分析需求数据,确定系统边界
③编写系统分析报告
概念结构设计
主要任务:通过对用户需求进行综合、归纳与抽象,形成一个独立于任何DBMS的概念模型。
逻辑结构设计
主要任务:是将概念模型转换成特定DBMS所支持的数据模型的过程。
物理结构设计
主要任务:
确定物理结构:存储记录结构的设计、访问方法的设计、数据存放位置的设计、系统配置的设计。
评价物理结构,评价的重点是时间和空间效率。
数据库实现
主要任务:
建立实际数据库结构
装入数据
应用程序编码与调试
数据库试运行
整理文档
数据库运行和维护
主要任务:
维护数据库的安全性与完整性
检测并改善数据库性能
重新组织和构造数据库
运算题(15分)
1.查询T1老师所授课程的课程号和课程名
ΠCNo,CN(sTNo=’T1’(TC)⋈C)
2.查询年龄大于18岁的男同学的学号、姓名和系别
ΠSNo,SN,Dept(s(Age>18) ^ (Sex=’男’)(S))
3.查询’李力’老师所讲授课程的课程号和课程名
ΠCNo,CN(ΠTNo (sTN=’李力’(T)) ⋈TC ⋈ C)
4.查询学号为S1的同学所选课的课程号、课程名和成绩
ΠCNo,CN,Score (sSNo=’S1’(SC)⋈C)
5.查询“钱尔”同学所选课的课程号、课程名和成绩
ΠCNo,CN,Score (ΠSNo(sSN=’钱尔’(S))⋈ SC ⋈ C)
6.查询至少选修“刘伟”老师所授全部课程的学生姓名。
ΠSN (SC÷(ΠCNo(ΠTNo(sTN=’刘伟’(T))⋈TC)) ⋈ S)
7.查询“李思”同学未选修的课程号和课程名。
ΠCNo,CN ((ΠCNo(C) - ΠCNo(ΠSNo(sSN=’李思’(S)) ⋈SC)) ⋈C)
8.查询全部学生都选修了的课程的课程号、课程名。
ΠCNo,CN (ΠCNo,SNo(SC) / ΠSNo(S)⋈ C)
9.查询所有选修了C1和C2课程的学生的学号和姓名
ΠSNo,SN (SC÷ΠCNo(s(CNo=’C1’) v (CNo=’C2’)(C)) ⋈ S)
10.查询选修了全部课程的学生的学号和姓名。
ΠSNo,SN (ΠCNo,SNo(SC)/ ΠCNo(C) ⋈S)
1.设有以下关系R、S和T:
关系R
A | B | C |
1 | 2 | 3 |
2 | 2 | 2 |
5 | 2 | 6 |
关系S
A | B | C |
3 | 2 | 1 |
2 | 1 | 3 |
5 | 2 | 6 |
关系T
A | D |
1 | 3 |
2 | 2 |
3 | 1 |
求R∪S、R∩S、R-S。
R∪S
A | B | C |
1 | 2 | 3 |
2 | 2 | 2 |
3 | 2 | 1 |
2 | 1 | 3 |
5 | 2 | 6 |
R∩S
A | B | C |
5 | 2 | 6 |
R-S
A | B | C |
1 | 2 | 3 |
2 | 2 | 2 |
求出ΠB,C,D(sS.A=T.A(S⋈T))的结果集(用表格表示)。
S.A | T.A | B | C | D |
3 | 3 | 2 | 1 | 1 |
2 | 2 | 1 | 3 | 2 |
2.设有两个关系如下图,试计算:
关系R
B | C |
b | 2 |
a | d |
5 | 8 |
关系S
C | D |
2 | 6 |
d | a |
7 | c |
求R×S
B | R.C | S.C | D |
b | 2 | 2 | 6 |
b | 2 | d | a |
b | 2 | 7 | c |
a | d | 2 | 6 |
a | d | a | a |
a | d | 7 | c |
5 | 8 | 2 | 6 |
5 | 8 | d | a |
5 | 8 | 7 | c |
求R ⋈S
B | C | D |
b | 2 | 6 |
a | d | a |
数据库设计(15分)
画E-R图
书上242页第3题
(2)写出关系模型(主码用下划线、外码用下划波浪线)
SQL应用(25分)第三章题目做过(8小题)
1.设有以下关系模式
(1)学生关系模式Student
序号 | 属性 | 数据类型(长度) | 约束 | 说明 |
1 | Sno | char(10) | 主码 | 学号 |
2 | Sname | nvarchar(10) | 非空值 | 姓名 |
3 | Sgender | nchar(1) | 只能输入“男”或“女”,默认值为“男” | 性别 |
4 | Sbirthday | datetime | 非空值 | 出生日期 |
5 | Stel | char(11) |
| 联系电话 |
6 | Stime | smalldatetime |
| 入学日期 |
(2)课程关系模式Course
序号 | 属性 | 数据类型(长度) | 约束 | 说明 |
1 | Cno | int | 主码 | 课程编号 |
2 | Cname | nvarchar(30) | 非空值 | 课程名称 |
3 | Credit | char(2) | 非空值 | 课程学分 |
(3)成绩关系模式Grade
序号 | 属性 | 数据类型(长度) | 约束 | 说明 |
1 | Cno | int | 主码 | 课程编号 |
2 | Sno | char(10) | 主码 | 学号 |
3 | Grade | int | 成绩输入应在0-100之间 | 成绩 |
使用SQL命令完成下列操作:
/*(1)在数据库中创建Student表*/
createtableStudent(
Snochar(10)primarykey,
Snamenvarchar(10)notnull,
Sgendernchar(1)notnullconstraintstChkcheck(Sgender='男'orSgender='女')default'男',
Sbirthdaydatetimenotnull,
Stelchar(11),
Stimesmalldatetime)
/*创建Course表*/
createtableCourse(
Cnochar(10)primarykey,
Cnamenvarchar(30)notnull,
Creditchar(2))
/*创建Grade表*/
createtableGrade(
Cnochar(10),
Snochar(10),
Gradeintconstraintgrade_chkcheck(Grade>=0 andGrade<=100),
primarykey(Cno,Sno))
/*(2)在Grade表中修改“”课程的成绩,让每位同学的成绩都加分*/
updateGrade
setGrade=Grade+5
whereCno='001'
/*(3)在Student表中新增一行记录:,张婷,女,-07-01,null,-09-01*/
insertintoStudent(Sno,Sname,Sgender,Sbirthday,Stel,Stime)
values('2021080901','张婷','女',1992-07-01,null,2021-09-01)
/*(4)在Grade表中查询成绩为空值的学生学号和课程号*/
selectSno,CnofromGrade
whereGradeisnull
/*(5)查询Student表中所有姓“李”的同学记录信息。*/
select*fromStudent
whereSnamelike'%李%'
/*(6)查询既选修“”课程,又选修“”课程的所有学生姓名*/
selectStudent.SnamefromStudent,GradewhereStudent.Sno=Grade.Sno
andCno='001'andSnamein
(selectSnameFROMStudent,GradewhereCno='003')
/*(7)查询出有二门以上(含两门)课程不及格的学生姓名和学号*/
selectSname,Student.SnofromStudent,GradewhereStudent.Sno=Grade.Sno
andGrade<60 groupbyStudent.Sno,SnamehavingCOUNT(*)>=2
/*(8)创建视图S_View,包括学号、姓名、性别、课程编号、课程名称、成绩*/
createviewS_View(Sno,Sname,Sgender,Cno,Cname,Grade)
asselectStudent.Sno,Sname,Sgender,Course.Cno,Cname,Grade
fromStudent,Course,Grade
whereStudent.Sno=Grade.SnoandCourse.Cno=Grade.Cno
2.库TEST中建立Emp,Works,Comp表。其各自的数据结构如下:
(1)职工表Emp(E#,Ename,Age,Sex,Ecity)
序号 | 列名 | 含义 | 数据类型 | 长度 |
1 | E# | 职工工号 | 字符型(CHAR) | 6 |
2 | Ename | 姓名 | 字符型(VARCHAR) | 8 |
3 | Age | 年龄 | 整数型(SMALLINT) |
|
4 | Sex | 性别 | 字符型(CHAR) | 2 |
5 | Ecity | 籍贯 | 字符型(VARCHAR) | 20 |
(2)工作表Works(E#,C#,Salary)
序号 | 列名 | 含义 | 数据类型 | 长度 |
1 | E# | 职工工号 | 字符型(CHAR) | 6 |
2 | C# | 公司编号 | 字符型(VARCHAR) | 8 |
3 | Salary | 工资 | 货币型(SMALLMONEY) |
|
(3)公司表 Comp(C#,Cname,City)
序号 | 列名 | 含义 | 数据类型 | 长度 |
1 | C# | 公司编号 | 字符型(VARCHAR) | 8 |
2 | Cname | 公司名称 | 字符型(VARCHAR) | 40 |
3 | City | 公司所在城市 | 字符型(VARCHAR) | 20 |
使用SQL命令完成下列操作:
/*(1)根据上述职工表Emp中数据结构的要求,创建Emp表。*/
createtableEmp(
Enochar(6)primarykey,
Enamechar(8),
Agesmallint,
Sexchar(2),
Ecityvarchar(20))
/*(2)修改公司表Comp中Cname中字符长度改为。*/
altertableComp
altercolumnCnamevarchar(60)
/*(3)在职工表Emp中插入信息:E10,赵菌,,女,福建泉州。*/
insertintoEmp(Eno,Ename,Age,Sex,Ecity)
values('E10','赵菌',32,'女','福建泉州')
/*(4)修改公司编号为C23的公司所在城市由“上海”改为“北京”。*/
updateComp
setCity='北京'
whereCno='C23'
/*(5)假设每个职工只能在一个公司工作,检索工资超过元的男性职工工号和姓名。*/
selectEmp.Eno,EnamefromEmp,Works
whereEmp.Eno=Works.Eno
andSex='男'andSalary>5000
/*(6)工号为E6的职工在多个公司工作,试检索至少在E6职工兼职的所有公司工作的职工工号。*/
selectEnofromWorks
whereCnoin(selectCnofromWorkswhereEno='E06')
/*(7)检索联华公司中低于本公司平均工资的职工工号和姓名。*/
selectEmp.Eno,EnamefromEmp,Works,Comp
whereEmp.Eno=Works.Eno
andComp.Cno=Works.Cno
andCname='联华限公司'
andSalary<(selectAVG(Salary)fromWorks,CompwhereComp.Cno=Works.Cno)
/*(8)创建职工工资情况视图EC_VIEW(包括职工姓名,公司名称,工资)。*/
createviewEC_VIEW(Ename,Cname,Salary)
asselectEmp.Ename,Comp.Cname,Works.Salary
fromEmp,Comp,Works
whereEmp.Eno=Works.EnoandComp.Cno=Works.Cno