(仅供参考,欢迎指正)
一、选择题(每题1分,共10分)
1.数据库系统与文件系统的主要区别在于( )。
A. 数据结构化程度高
B. 数据共享性差
C. 数据冗余度高
D. 数据独立性低
答案:A。
数据管理技术确实经历了人工管理、文件系统和数据库系统三个阶段。
对比维度 人工管理阶段 (20世纪50年代中期前) 文件系统阶段 (50年代后期至60年代中期) 数据库系统阶段 (60年代后期以来) 数据管理者 用户(程序员) 文件系统 数据库管理系统(DBMS) 面向对象 某一特定应用程序 某一特定应用 整个组织/现实世界(多应用) 数据共享 无共享,冗余度极大 共享性差,冗余度大 共享性高,冗余度小 数据独立性 不独立,完全依赖程序 独立性差 独立性高(物理独立 & 逻辑独立) 数据结构化 无结构 记录内有结构,整体无结构 整体结构化,用数据模型描述 数据控制能力 应用程序自己控制 应用程序自己控制 由DBMS统一提供安全性、完整性、并发控制和恢复 1.人工管理阶段
这个阶段计算机主要用于科学计算,还没有出现专门管理数据的软件。
数据不保存:计算任务完成后,数据空间会被释放,通常不长期保存。
程序与数据绑定 :数据由应用程序自己管理,程序员需要在代码中设计数据的存储结构和存取方法。一组数据严格对应一个程序,无法被其他程序使用。
无独立性:数据的逻辑或物理结构一旦改变,必须修改对应的应用程序。
2.文件系统阶段
随着磁盘等直接存取设备出现,操作系统开始提供文件系统来专门管理数据。
数据可长期保存:数据可以"文件"的形式长期保存在磁盘上。
程序与数据初步分离:文件的存取操作由文件系统完成,减轻了程序员的负担。
仍存在根本缺陷:
共享性差,冗余度高 :文件是基于特定应用创建的,即使不同程序需要部分相同数据,也必须创建各自的文件,导致数据大量重复。
数据独立性差:文件的逻辑结构通常仍嵌入在应用程序代码中,两者修改时会相互影响。
数据整体无结构 :文件内部(记录)有结构,但文件之间是孤立的,不能反映数据之间的整体联系。
3.数据库系统阶段
为满足大规模数据管理和多应用共享的需求,出现了数据库管理系统(DBMS),这是数据管理技术的飞跃。
数据结构化 :这是与文件系统的本质区别。数据按某种数据模型(如关系模型)组织,不仅描述数据本身,还描述数据之间的联系,形成一个结构化的整体。
高共享、低冗余:数据面向整个系统设计,可被多个应用共享使用。这大大减少了数据冗余,并避免了因冗余可能导致的数据不一致问题。
高独立性 :通过DBMS的三级模式结构和二级映射功能,实现了物理独立性 (存储结构改变不影响应用)和逻辑独立性(逻辑结构改变不影响部分应用),极大减少了维护工作量。
统一的数据控制:DBMS提供了专业的数据控制功能,包括数据的安全性保护、完整性检查、并发控制和数据库恢复,保障了数据的安全可靠。
简单来说,这三个阶段的演进路径是:数据从程序的附属品 (人工管理),变成了由系统软件管理的独立文件 (文件系统),最终进化为由专业系统统一管理的、结构化的、可共享的数据资源(数据库系统)。
2.在关系模型中,实现"关系中不允许出现相同元组"的约束是通过( )实现的。
A. 实体完整性
B. 参照完整性
C. 用户定义完整性
D. 主码约束
答案:D。
解析:主码是在一个关系(即一张表)中,能够唯一标识每一个元组(即每一行)的一个属性(字段)或属性组。
主码通过其唯一性 和非空性,强制保证了表中任意两个元组在主码属性上的值都不相同,从而确保了元组的唯一性。
实体完整性 :这是一个更上层的完整性规则 ,它规定 了"主码不能取空值"。可以理解为,实体完整性规则是通过主码约束这个具体手段来实现的。题目问的是具体"实现"的机制,而非规则本身。
参照完整性:它约束的是不同表之间的关联关系(外码与主码的匹配),与防止同一表内出现重复元组无关。
用户定义完整性:这是针对特定应用语义的约束(如年龄大于0),也不是用于保证元组唯一性的通用机制。
3.SQL中,用于删除表中所有数据但保留表结构的语句是( )。
A. DELETE
B. DROP
C. TRUNCATE
D. REMOVE
答案:C。
解析:
DELETE 语句虽然不带WHERE子句时也能删除所有数据并保留表结构,但它是DML操作,逐行删除并记录日志,因此性能较低,且可能触发触发器。
DROP 语句会删除整个表,包括表结构和所有数据,不符合"保留表结构"的要求。
TRUNCATE 语句用于快速删除表中的所有数据,但完全保留表结构(包括列定义、索引、约束等)。它是一种DDL操作,通常比DELETE更高效,因为它不记录逐行删除,并且重置表的存储空间。
REMOVE 不是标准SQL语句,在主流数据库(如MySQL、Oracle、SQL Server等)中不支持。
SQL语言中两大最基本的操作类别,其根本区别在于操作对象不同。
类别 中文全称 操作对象 主要功能 常见命令关键字 DDL 数据定义语言 数据库、表本身的结构 创建、修改、删除数据库对象(如库、表、视图、索引等) CREATE,ALTER,DROP,TRUNCATE,RENAMEDML 数据操纵语言 表中的数据/记录 对表中的数据进行增、删、改、查 SELECT,INSERT,UPDATE,DELETE
MySQL、Oracle、SQL Server、DB2、PostgreSQL等,都属于关系数据库管理系统。IMS是层次型数据库。
4.在数据库安全性控制中,授权和收回权限的SQL语句是( )。
A. GRANT 和 REVOKE
B. ALLOW 和 DENY
C. PERMIT 和 FORBID
D. AUTHORIZE 和 CANCEL
答案:A。
5.若关系模式R(A,B,C)中存在函数依赖A→B和B→C,则R最高属于( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF
答案:B。
L:A。
R:C。
LR:B。
候选码:A。
主属性:A。非主属性:B,C。
不存在非主属性对候选码的部分依赖,满足2NF。
存在非主属性对候选码的传递依赖,违反3NF。
所以,R最高属于2NF。
6.数据库逻辑结构设计阶段的主要任务是( )。
A. 将E-R图转换为关系模式
B. 设计用户子模式
C. 建立数据字典
D. 设计存取路径
答案:A。
解析:
在数据库设计流程中,逻辑结构设计阶段 的核心任务是将独立于具体DBMS的概念模型 (通常是E-R图)转换 为某个特定DBMS所支持的数据模型(如关系模型)的过程。
将E-R图转换为关系模式 :这是最主要且核心的任务。该任务需要定义出关系数据库中的表、表的属性、主码、外码等,确保概念模型被正确地映射为关系模式。
设计用户子模式 :这属于外模式设计,它是在逻辑模式的基础上,根据特定用户或应用程序的视图需求来定制,并非逻辑结构设计阶段的主要任务。
建立数据字典 :这是需求分析阶段的主要成果。数据字典用于在项目早期全面定义和描述系统中的所有数据项,为后续设计提供依据。
设计存取路径 :这属于物理设计阶段的任务,主要涉及为关系模式设计索引、聚簇等存储和访问机制,以优化性能。
7.事务的持久性是指( )。
A. 事务中包括的所有操作要么都做,要么都不做
B. 事务一旦提交,对数据库的改变就是永久的
C. 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D. 事务必须是使数据库从一个一致性状态变到另一个一致性状态
答案:B。
A指的是原子性。
C指的是隔离性。
D指的是一致性。
8.解决并发操作带来的数据不一致性问题通常采用( )。
A. 恢复技术
B. 封锁技术
C. 存取控制技术
D. 加密技术
答案:B。
封锁技术 是数据库管理系统实现并发控制 最主要、最核心的技术。其基本思想是,事务在对数据进行操作(读/写)前,先向系统申请对其加锁 。通过锁的互斥规则(如共享锁、排他锁)来控制多个事务对同一数据对象的访问顺序,从而避免产生脏读、不可重复读、幻读等数据不一致问题。
恢复技术 用于在系统发生故障(如断电、软硬件错误)后,将数据库恢复到某个一致的状态 。它解决的是故障 导致的数据破坏问题,而非并发导致的不一致。
存取控制技术 (如授权
GRANT和收回REVOKE)属于数据库安全性范畴,用于确保只有合法用户才能访问其被允许的数据,防止非法访问和恶意破坏。加密技术 同样属于数据库安全性范畴,用于保护数据的机密性,防止数据在存储或传输过程中被窃取而泄露。
9.关系代数中,从两个关系的笛卡尔积中选取满足连接条件的元组的操作称为( )。
A. 选择
B. 投影
C. 连接
D. 除
答案:C。
选择(Selection) 是对单个关系进行水平筛选,选取满足条件的元组,不涉及多个关系。
投影(Projection) 是对单个关系进行垂直筛选,选取指定的属性列。
连接(Join) 操作正是从两个关系的笛卡尔积中选取满足给定连接条件的元组,它是关系代数中最常用的双目操作之一。
除(Division) 是一种特殊的操作,用于解决"包含所有"类型的查询,与笛卡尔积和连接条件无关。
10.数据库恢复的基本原理是( )。
A. 备份与复制
B. 冗余
C. 审计
D. 加密
答案:B。
冗余是数据库恢复最核心、最根本的理论基础。它的思想是:在正常运行期间,系统有意存储超出其本身运行所必需的额外数据。当故障发生后,就可以利用这些提前存储的冗余数据,将数据库"重做"或"回滚"到故障前的某个一致性状态。
备份与复制 是一个具体的实现手段或操作,是创建"冗余"数据的主要方法之一,但并非原理本身。
审计 是一种安全性 技术,用于记录和检查用户对数据库的所有操作,目的是追责和监控,与恢复数据无关。
加密 是一种安全性技术,用于保护数据的机密性,防止数据被非法读取,与恢复数据无关。
(附加题)11.有一个网络数据库应用系统,其中一台计算机A存有DBMS软件、所有用户数据和应用程序,其余各节点作为终端通过通信线路向A发出数据库应用请求,这种方式属于( )。
A. 集中式数据库体系结构
B. 主从式数据库体系结构
C. 客户机/服务器数据库体系结构
D. 分布式数据库体系结构
答案:A。
解析:
各数据库系统体系结构的特点及区分:
1.集中式数据库体系结构
特点:所有数据、DBMS和应用程序都驻留在单台计算机上,用户通过终端(通常为哑终端)访问系统,终端仅负责输入和输出,无独立处理能力。
区分:单一主机完成所有处理,终端无智能,存在单点故障和扩展性限制。
2.客户机/服务器数据库体系结构
特点:系统分为客户端和服务器。服务器运行DBMS,负责数据管理和处理;客户端运行应用程序,提供用户界面并发送请求给服务器。
区分:客户端和服务器分工明确,通过网络交互,支持多客户端并发访问。
3.并行数据库体系结构
特点:利用多个处理器和存储设备并行执行数据库操作,以提高性能和可用性。常见架构包括共享内存、共享磁盘和无共享。
区分:紧密耦合的多处理器系统,专注于高速并行处理,常用于大数据和高并发场景。
4.分布式数据库体系结构
特点:数据物理分布在多个节点上,每个节点可能运行独立的DBMS,但逻辑上是一个整体,支持局部自治和全局协作。
区分:数据分布透明,节点通过网络连接,可独立处理局部查询,协作处理全局查询。
5.云数据库体系结构
特点:数据库以服务形式(DBaaS)在云平台上提供,具备弹性扩展、按需付费和高可用性,底层通常采用分布式和并行技术。
区分:基于云基础设施,通过互联网访问,服务化、可伸缩,运维由云服务商负责。
二、判断题(每题1分,共10分)
1.数据库系统的三级模式结构是指模式、内模式和外模式,其中模式是全局逻辑结构。 ( )
答案:√
2.视图是一个虚表,其数据并不实际存储,而是来自基本表。 ( )
答案:√
3.SQL语言中,INSERT语句用于修改表中的数据。 ( )
答案:×
4.数据库完整性约束包括实体完整性、参照完整性和用户定义完整性。 ( )
答案:√
5.若关系模式R∈3NF,则R一定属于BCNF。 ( )
答案:×
解析:BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF
6.数据库设计步骤中,概念结构设计阶段独立于具体的数据库管理系统。 ( )
答案:√
7.封锁协议中的两段锁协议是保证并发调度可串行化的必要条件。 ( )
答案:×
8.数据库系统的数据独立性包括逻辑独立性和物理独立性。 ( )
答案:√
9.函数依赖A→B表示属性A的值可以唯一确定属性B的值。 ( )
答案:√
10.数据库安全性控制中,自主存取控制(DAC)是通过角色和权限实现的。 ( )
答案:√
三、分析题(15分)
给定关系模式R(A, B, C, D, E),其函数依赖集F={AB→C, C→D, D→E}。
(1)求出R的所有候选码。(5分)
解:
L:A,B。
R:E。
LR:C,D。
所以R的所有候选码为AB。
(2)判断R最高属于第几范式,并说明理由。(5分)
解:R最高属于第二范式。
理由如下:
R的所有候选码为AB。
主属性为:A,B。
非主属性:C,D,E。
不存在非主属性部分依赖于候选码,满足2NF。
存在非主属性传递依赖于候选码,D和E对于候选码的传递函数依赖,违反3NF。
所以R最高属于第二范式。
(3)若R不属于3NF,请将其分解为3NF,要求分解既具有无损连接性又保持函数依赖。(5分)
解:
由于R不满足3NF,需要分解。
首先求出最小函数依赖集:
F={AB→C, C→D, D→E}已经是最小依赖(右边单一属性,左边无多于属性,无冗余依赖)。
将每个函数依赖组成一个关系模式:
R1(A,B,C)对应AB→C;
R2(C,D)对应C→D;
R3(D,E)对应D→E。
检查候选码,R1中包含候选码AB。
无需合并具有相同左部的关系模式。
分解结果为R1(A,B,C),R2(C,D),R3(D,E)。
验证无损连接性,由于包含候选码AB在R1中,所以分解具有无损连接性。
验证保持函数依赖:AB→C在R1中,C→D在R2中,D→E在R3中,所有依赖均保持。
每个关系模式均为3NF:
R1:候选码AB,满足BCNF(也是3NF);
R2:候选码C,满足BCNF;
R3:候选码D,满足BCNF。
因此,分解满足要求。
四、设计题(25分)
某图书馆管理系统需要管理以下信息:
-
图书:书号,书名,作者,出版社,库存数量
-
读者:读者号,姓名,性别,年龄,联系方式
-
借阅:读者号,书号,借书日期,还书日期
其中,每本图书可以被多个读者借阅,每个读者可以借阅多本图书。借阅记录中,借书日期和还书日期记录每次借阅情况。
要求:
(1)根据上述语义,画出E-R图,并注明联系类型和实体属性。(10分)
解:
(2)将E-R图转换为关系模式,并指出每个关系模式的主码和外码(如果有)。(10分)
解:
①图书(书号,书名,作者,出版社,库存数量)
主码:书号。外码:无。
②读者(读者号,姓名,性别,年龄,联系方式)
主码:读者号。外码:无。
③借阅(读者号,书号,借书日期,还书日期)
主码:(读者号,书号,借书日期)。外码:读者号,书号。
注意此处借阅的主码,题目不明确,但是实际中可能存在同一个人同一本书借阅多次的情况,所以(读者号,书号)不一定能唯一确定一条借阅记录,(读者号,书号,借书日期)作为主码更可靠一些。
(3)在转换后的关系模式中,用下划线标出主码,用波浪线标出外码。(5分)
解:
五、应用操作题(40分)
设有以下三个关系模式:
-
学生(学号,姓名,性别,年龄,所在系)
-
课程(课程号,课程名,先行课,学分)
-
选修(学号,课程号,成绩)
用关系代数和SQL语句完成下列查询:
(1)查询选修了课程名为"数据库原理"的学生的学号和姓名。(关系代数,5分)
(2)查询年龄在20岁以下的学生姓名和所在系。(SQL,5分)
sql
select 姓名,所在系 from 学生
where 年龄<20;
(3)查询选修了课程号"C001"且成绩在90分以上的学生姓名和成绩。(SQL,5分)
sql
select s.姓名,sc.成绩 from 学生 s,选修 sc
where s.学号=sc.学号 and sc.课程号='C001' and sc.成绩>90;
(4)查询每个学生的学号、姓名和其选修课程的平均成绩(只统计有成绩的学生)。(SQL,5分)
sql
select s.学号,s.姓名,avg(sc.成绩) as 平均成绩
from 学生 s,选修 sc
where s.学号=sc.学号
group by s.学号,s.姓名;
(5)将学生"李勇"的年龄改为21岁。(SQL,5分)
sql
update 学生
set 年龄=21
where 姓名='李勇';
(6)创建视图V_CS,显示计算机系(CS系)学生的学号、姓名和选修的课程名及成绩。(SQL,5分)
sql
create view V_CS(学号,姓名,课程名,成绩) as
select s.学号,s.姓名,c.课程名,sc.成绩
from 学生 s,课程 c,选修 sc
where s.学号=sc.学号 and sc.课程号=c.课程号 and s.所在系='计算机系';
(7)授予用户U1对学生表的查询权限。(SQL,5分)
sql
grant select on table 学生 to U1;
(8)定义学生表的完整性约束:学号为主码,性别只能取'男'或'女',年龄在15到45之间。(SQL,5分)
sql
/*定义表的时候就加以限制*/
create table 学生 (
学号 varchar(15) primary key,
姓名 varchar(15),
性别 varchar(15) constraint c1 check(性别 in ('男','女')),
年龄 int constraint c2 check(年龄 between 15 and 45),
所在系 varchar(15)
);
/*或,表创建完成后单独添加约束*/
alter table 学生 add constraint pk_xuehao primary key(学号);
alter table 学生 add constraint ck_xingbie check(性别 in('男','女'));
alter table 学生 add constraint ck_nianling check(年龄 between 15 and 45);



