
简介数据库系统概论期末考试试题完整版面向计算机相关专业学生和数据库备考者用于检验数据库基础、关系模型、SQL语言、事务处理与并发控制等核心知识的掌握情况。压缩包内含一个Word文档整体大小仅为170KB下载后可直接打印或在线查看。目前已有3502人学习使用是期末复习与自测的热门资料。试题涵盖选择题、填空题、判断题、简答题和应用题等常见题型知识点涉及物理数据独立性、数据库系统特点、关系代数运算、数据库设计步骤、数据库管理系统的功能、数据安全性、事务的原子性、一致性、隔离性与持久性、封锁机制以及数据库恢复方法等部分题目附有解析或参考答案方便读者对照查漏补缺。无论用于考前冲刺、日常练习还是教师组卷参考都具有较高的实用价值。1. 数据库系统概论期末考什么从一道反直觉的判断题说起这套「完整word版」期末试题在互联网上流传很广但多数人拿它当题库刷没看懂命题套路。开篇先看一道几乎人人都错的判断题「如果属性X在函数依赖的左右都不出现则候选码中必不包含X」结论是错误——X反而必须包含在候选码里。第一直觉就把你带沟里这正是期末卷的风格选择填空考概念辨析简答考定义准确度应用和综合题集中考闭包计算、候选码、范式分解、ER图转关系模型和SQL。分值分布很稳定选择填空占30到40分判断简答15分左右剩下45分全压在大题上。谁适合背这份题期末考前突击、专升本专业课、考研复试机上问答照这份真题摸清规律都能拿到保底分。2. 关系代数与SQL三大高频题型与答题模板2.1 投影选择连接关系代数表达式的书写顺序关系代数的专门运算几乎每年必考。原题选择题直接问取出满足条件的属性是投影选出满足条件的元组是选择按共同属性值连接两个关系是连接。概念分清只是入门大题真正考的是组合写法。真题让检索「选修了程军老师所授课程之一的学生姓名」标准答案长这样∏SNAME(S ⋈ SC ⋈ σTEACHER程军(C))答题顺序有讲究先写选择把条件落在具体关系上再写自然连接把三张表串起来最后投影出目标列。最容易翻车的写法是先投影再连接把连接属性S#、C#丢掉了后面根本串不上。还有一种等价写法是先做笛卡尔积再选择形式上对但阅卷通常默认自然连接更标准。书写时注意选择和投影的希腊字母要写对选择是σ、投影是∏混淆了整个式子就废了。2.2 嵌套子查询与分组聚合SQL真题的固定套路SQL部分是送分题但每次都有大批人栽在子查询和分组上。先看两道原题都是最经典的考法-- 检索所有比“王华”年龄大的学生姓名、年龄和性别 SELECT SN, AGE, SEX FROM S WHERE AGE (SELECT AGE FROM S WHERE SN 王华); -- 检索选修课程“C2”的学生中成绩最高的学生的学号 SELECT S# FROM SC WHERE C# C2 AND GRADE (SELECT MAX(GRADE) FROM SC WHERE C# C2);这种题的内层子查询先执行外层再拿结果去比较。比年龄那题注意子查询必须返回单值所以条件写AGE (...)而不是AGE ANY(...)成绩最高那题则是「先定课程再套MAX」两个条件一个都不能少。再看两道易错的分组题-- 检索学生姓名、选修课程号和成绩 SELECT SN, C#, GRADE FROM S, SC WHERE S.S# SC.S#; -- 检索选修四门课程的学生总成绩 SELECT S#, SUM(GRADE) FROM SC GROUP BY S# HAVING COUNT(C#) 4;第一道是多表连接题目给了别名就用别名没有别名也要写上表名前缀S.S#SC.S#就是连接条件。第二道是分组题GROUP BY之后过滤组要用HAVING COUNT(C#)4写成WHERE COUNT(C#)4直接报错。记住SUM、COUNT这类聚合函数只能出现在SELECT或HAVING里WHERE行过滤发生在分组之前HAVING组过滤发生在分组之后。2.3 等值连接与自然连接简答题的标准答法这是简答题里的常客原题问「等值连接与自然连接的区别和联系」。直接背这个框架就能拿满第一自然连接一定是等值连接但等值连接不一定是自然连接第二等值连接要求相等的分量不一定是公共属性自然连接要求相等的分量必须是公共属性第三等值连接不除去重复属性自然连接要除去重复属性。答题时先给两者的表达式写法等值连接写R⋈S加条件自然连接写R⋈S然后按上述三点逐条展开。面试官最想听的就是「自然连接是去掉重复属性的等值连接」这一句核心后面全是在解释它。2.4 元组关系演算不会也要能写出框架元组关系演算是很多人的盲区其实套模板就能拿分。原题要求用元组关系演算检索选修了程军老师课程的学生姓名和学号{T(1) | (∃U)(∃V)(∃W)(S(U) ∧ SC(V) ∧ C(W) ∧ T[1]U[1] ∧ U[1]V[1] ∧ V[2]W[1] ∧ W[3]程军)}框架分四段目标属性声明T(1)存在量词遍历涉及的关系连接条件用属性序号对齐最后是选择条件。检索学号时只需要SC和C两个关系因为学号就在SC表里检索姓名才必须多一个S关系把学号换成姓名。考场上一紧张容易漏量词或漏连接条件我的习惯是先写量词清单再逐条写等值条件最后补选择条件顺序不会乱。3. 闭包、候选码与范式分解从计算到BCNF的完整链条3.1 属性闭包迭代三步考场不丢分闭包计算是函数依赖部分的地基候码判断、范式分解全依赖它。原题给过一组典型的函数依赖集F{D→GC→ACD→EA→B}求D、(AC)和(ACD)。标准算法是迭代初始令X等于给定属性集扫描F中每条函数依赖若左边属性已经在当前闭包里就把右边属性加进去重复扫描直到闭包不再变化。用代码表达更清楚def closure(attrs, fds): result set(attrs) changed True while changed: changed False for lhs, rhs in fds: if set(lhs).issubset(result) and not set(rhs).issubset(result): result | set(rhs) changed True return result # 原题验证 fds [(D,G), (C,A), (CD,E), (A,B)] print(closure(D, fds)) # DG print(closure(AC, fds)) # ABC print(closure(ACD, fds)) # ABCDEG关键在迭代顺序算(ACD)时第一轮先由D→G得到ABCDG第二轮才轮到CD→E因为现在C、D、G都在闭包里CD作为左边成立得到E最终ABCDEG。很多人在第一轮就急着找CD→E发现C在但D不在就跳过但闭包计算本来就是多轮过程一轮没变化才停。写完闭包最好反查一遍每个被加入的属性都能找到对应的函数依赖否则就是漏了。3.2 候选码求解L/R/LR/N四类属性判断法候选码大题是期末和面试的双重高频点。先把属性分四类只在函数依赖左边出现的叫L类只在右边出现的叫R类左右都出现的叫LR类左右都不出现的叫N类。规则直接背L类和N类属性必须进入候选码R类属性必不进候选码LR类属性需要逐一代入闭包验证。原题那道判断题说的就是N类X在左右都不出现没有任何依赖能函数决定它它只能靠自己所以候选码必含X。真题求解U{A,B,C,D,E}F{A→BCCD→EB→DE→A}。分好类后逐个算闭包AABCDE成立EABCDE成立组合BC的计算(BC)先得BD再由CD→E得E由E→A得A再加A→BC闭包也是ABCDECD同理。最终候选码是A、BC、CD、E四个。计算组合闭包时最容易漏的是链路BC→B→D→CD→E→A这条链一旦走通就全通了。验证LR类属性时只要有一个组合闭包能覆盖全集这个组合就是一个候选码但要注意子集不能再是候选码BC成立了单B和单C都不成立才合格。3.3 范式分解消灭部分依赖再消灭传递依赖范式题占综合题半壁江山原题给了完整的日产量例子。关系R职工编号日期日产量车间编号车间主任规定每个职工每天只有一个日产量、每个职工只属一个车间、每个车间只有一个主任。先写函数依赖职工编号日期→ 日产量 职工编号 → 车间编号 车间编号 → 车间主任关键码是职工编号日期。判断范式从1NF开始逐级查这里非主属性车间编号、车间主任对码是部分依赖因为单独职工编号就能决定它们所以R只是1NF不是2NF。分解成2NF要消除部分依赖拆成R1职工编号车间编号车间主任和R2职工编号日期日产量。注意R1里的主码变成职工编号R2的主码还是职工编号日期外键职工编号维系联系。再进3NF检查R1职工编号→车间编号→车间主任存在传递依赖所以R1不是3NF继续拆成R11职工编号车间编号和R12车间编号车间主任。到这里全部模式都是3NF而且决定因素都是候选码也满足BCNF。整个分解过程就是先拆部分依赖、再拆传递依赖每拆一步重写一遍函数依赖集别在原关系上跳步。3.4 Armstrong公理证明合并规则的推导模板综合题偶尔会直接考证明原题让证明合并规则若X→Z且X→Y则X→YZ。Armstrong公理只用增广律和传递律就能完成因为 X→Y对两边同时增广X得 X→XY 因为 X→Z对两边同时增广Y得 XY→YZ 由 X→XY 和 XY→YZ根据传递律得 X→YZ证明题的关键是写清每一步用了哪条公理括号标注是采分点。增广的对象要选对第一步两边增广X第二步两边增广Y这样才能让XY作为中间桥梁。这类证明题型还有自合规则、分解规则本质都是增广和传递的组合。答题时先写已知条件再写每一步推导和依据最后落结论。4. ER图转关系模型主键外键一次数清4.1 实体转模式七个实体对应七个关系ER图转关系模型送分也容易丢分核心就三条规则实体各转一个关系模式属性照搬1:N联系在N端实体转出的模式里加外键M:N联系单独转一个模式主键是两端实体主键的组合。规则看着简单考场上栽在细节一是联系上的属性不能丢要并入单独转出的联系模式里二是外键标在哪个表里要想明白。原题里有一个经典的复杂案例七个实体加八个联系转换后正好十个关系模式。七个实体本身就转出七个模式剩下三个来自M:N和M:N:P联系。4.2 联系转模式1:N、M:N、M:N:P的三种处理把联系分类是第一步。1:N联系里「1」端的主键放进「N」端模式中做外键比如「交通管理大队管辖警察」警察模式里加外键大队编号。M:N联系单独建表主键是两端主键的组合比如「驾驶员与车辆的违章」「车辆与车主的被盗」。M:N:P三元联系同样单独建表主键是三个实体主键的组合联系自带的属性也放这张表里。原题里违章和事故就是两个M:N:P联系违章违章编号时间地点违章行为处理结果车辆牌号驾驶证号警号这里主键是违章编号三个外键分别是车辆、驾驶员、警察的主键。4.3 真题演练车辆管理系统的10个模式与13个外键原题完整给出了这个车辆管理信息系统的转换结果直接可背制造商制造商编号名称地址 交通管理大队大队编号地址区域电话 警察警号姓名性别出生年月大队编号 车主身份证号姓名地址电话 车辆车辆牌号型号发动机号座位数登记日期制造商编号保险公司编号车主身份证号 驾驶员驾驶证号姓名性别地址准驾车型发证日期保险公司编号 保险公司保险公司编号名称地址电话 违章违章编号时间地点违章行为处理结果车辆牌号驾驶证号警号 事故事故编号时间地点事故简要处理结果车辆牌号驾驶证号警号 被盗被盗编号被盗时间被盗地点找回时间找回地点车主身份证号车辆牌号主键总数10个因为10个关系模式每个都恰有一个主键。外键总数13个数法是看每个模式里除了主键之外、参考了别的表主键的属性警察1个车辆3个驾驶员1个违章3个事故3个被盗2个合计13。这类题最后总问「主键外键总数」做题时先标下划线再标波浪线数完检查一遍别漏了车辆表里同时有三个外键。4.4 局部ER图合并学生选课与教师任课的关系模型另一道ER真题考设计流程先画学生选课局部ER图再画教师任课局部ER图合并成全局ER图最后转关系模型。合并时最容易丢分的是消除冲突学生实体里有「单位」属性单位又是一个独立实体这种情况要统一成实体课程在选课和任课两个局部都出现合并后只保留一个课程实体。最终关系模型长这样单位单位名电话 教师教师号姓名性别职称单位名 课程课程编号课程名单位名 学生学号姓名性别年龄单位名 讲授教师号课程编号 选修学号课程编号注意这里的联系全部下沉成了外键教师和课程属于单位所以单位名分别并入讲授和选修是M:N单独成表。全局ER图合并的考察点在「消重」和「统一」答出两张局部图的关键实体和联系再说明合并规则就有大半分数。5. 易错点并发控制、视图与闭包的五个失分题5.1 视图可串行化与冲突可串行化结论错反例在哪原题判断「view可串行化的调度一定也是conflict可串行化的调度」很多考生直接判对因为觉得视图可串行化听起来范围更小更严格。实际上恰好相反视图可串行化比冲突可串行化更宽它只要求在初始读取、最终读取和最终写入上与某个串行调度等价允许盲写操作存在冲突可串行化要求的是通过交换非冲突操作达成等价。所以看法是冲突可串行化一定视图可串行化反过来不成立。答题模板先写「结论错误」再给出反例说明存在盲写的调度就是反例一句话就够拿分。5.2 S锁权限加锁后能读不能改封锁那题的正确选项是事务T可以对A加S锁读A但不能修改A其他事务只能再对A加S锁不能加X锁。错选A的人最多因为「共享」两个字让人以为S锁也能写。记住锁的相容矩阵S锁与S锁相容、S锁与X锁不相容、X锁与任何锁都不相容。T自己对A加了S锁如果再修改A就要升级为X锁但升级意味着排斥其他S锁所以不允许。做这类题只要把S理解成「只读共享」X理解成「独占读写」永不出错。5.3 无损连接初始表填a还是b_ij无损连接判断的第一步是构造初始二维表规则是行对应分解后的关系模式列对应全体属性若第j个属性属于第i个关系模式填a_j否则填b_ij。很多人把不在当前关系中的属性也填成a整个表全a判断直接失真。真题R(U)分解成R1(A,B,C)、R2(C,D)、R3(D,E)初始表就是三行分别含ABC、CD、DE其余位置填b_ij。然后逐条扫函数依赖AB→C时没有两行的AB取值相同跳过C→D时R1和R2的C列都是a3于是把R1的D列从b14改成a4D→E时R1、R2的D列都是a4把R1的E列改成a5。此时R1那行全部是a分解就是无损连接。做题时按「找同左→改右列」的节奏推进最后检查是否有一行全a。5.4 候选码判定左右都不出现的属性必须入码这道判断题全场错误率最高。「属性X在函数依赖的左右都不出现」考生的直觉是X跟任何依赖都没关系候选码里可有可无。错就错在正因为没有任何函数依赖能决定XX的闭包只能从自身开始而候选码必须能函数决定全部属性所以X必须作为候选码的一部分出现。答题时按四类属性法来L类必取、R类必弃、LR类逐个验、N类必取。原题给的F{AB→CC→DD→E}里没有N类属性但换一组依赖后N类就冒出来了审题先做分类。5.5 操作异常插入异常与删除异常的语义配对规范化中的异常考过两道选择题删除操作异常指不该删除的数据被删除插入操作异常指应该插入的数据未被插入。错选的同学把「异常」理解成「操作报错」选了「应该删除的数据未被删除」。用例子记一个关系里学生信息和选的课绑在一起删除选课记录时把学生整个信息也删掉了这就是删除异常新生还没选课插不进关系里这就是插入异常。答题时先判断语义是数据没了还是数据进不来再对应选项能选准。6. 考场四步法与押题方向大题不慌的答题节奏6.1 范式大题的完整流程依赖→码→范式→分解所有范式大题按四步走第一步把题干的业务规则改写成函数依赖有传递链条的拆开写别合并写成复合依赖第二步用四类属性法求候选码候选码不唯一就把所有候选码都列出来第三步按1NF、2NF、3NF、BCNF逐级判断每一级都要写依据存在局部依赖所以不是2NF存在传递依赖所以不是3NF第四步分解先消部分依赖再消传递依赖每分解一次就把新模式的函数依赖重写一遍。SQL题也有一套固定节奏先确认涉及几张表、连接条件是什么再写WHERE行过滤最后考虑GROUP BY和HAVING。时间分配建议选择填空控在20分钟简答15分钟综合题优先做范式分解和ER转换各留20分钟SQL最后写因为SQL只要连接条件对就有分。6.2 押题方向与易混对比从这份题看最可能继续考的方向有三个无损连接判断、BCNF逐步分解、M:N:P三元联系转关系模型。并发控制部分要会看图判断异常类型两个事务读同一值后各自修改写回是丢失修改一个事务读了另一个事务回滚前的值是读脏数据同一事务两次读同一数据结果不同是不可重复读。原题那份T1读A100改200后回滚、T2读200的图就是读脏数据。安全性部分重点背GRANT句式GRANT SELECT ON TABLE Student TO U1;五个易混点考前过一遍外码是被参照表主键的副本主键是自身表唯一标识视图只存定义不存数据S锁可读不可写物理数据独立性针对存储结构改变逻辑数据独立性针对全局逻辑结构改变应用题里如果问应用程序要不要改看变的是存储还是逻辑模式。我自己当年考场的血泪经验闭包计算第一轮发现没变化太早停手少推一步丢一整道大题。从那以后每道范式题我都强制走一遍「分属性类→求闭包→找全候选码→逐级判范式」的流程闭包每轮都推到循环条件不成立才停手。这套流程能让你在考场上少踩一半坑希望帮到你。本文还有配套的精品资源点击获取