资讯动态

数据库系统概论习题精讲:关系代数、SQL与范式高频考点解析

发布时间:2026/10/27 20:03:09 来源:尧图企业网站定制
简介这份文档是《数据库系统概论》第五版王珊版的课后习题参考答案面向高校计算机及相关专业学生、考研复习者与数据库入门自学者用于对照教材章节完成习题自测与知识点梳理。资源包共1个doc文件约588KB按教材章节组织答案覆盖关系数据库、关系代数、SQL语言等核心内容。文档中既有关系模型三要素、关系数据语言分类、实体完整性与参照完整性规则等概念题的规范作答也包含SPJ数据库上的关系代数表达式与SQL查询语句示例如供应商与零件查询、等值连接与自然连接的区别、用基本运算表达交连接除等便于读者对照教材逐章核对思路、理解解题过程。目前已有1724人学习下载适合需要课后练习答案与复习提纲的读者参考使用。1. 从一道“送分题”翻车说起这场考试到底考什么每年期末和考研复试前总有人栽在看似最简单的题上。比如“关系模型由哪三部分组成”不少人张口就答“表、行、列”结果一分没有——标准答案是关系数据结构、关系操作集合、关系完整性约束。这就是数据库系统概论这门课的典型考法概念题考精确复述计算题考步骤规范SQL 题考语法细节三者失分逻辑完全不同。这份王珊版第五版习题答案覆盖第 2 到第 7 章从关系代数、SQL、安全性、完整性、关系理论到数据库设计正好对应考试里分值最重的六大模块。想拿高分不能只背答案得先搞清楚每类题阅卷人按什么给分概念题按关键词踩点关系代数题按运算顺序和结果属性给分SQL 题按子句完整性和结果正确性给分。这篇笔记就按这个顺序把高频考点、真题答法和易错点拆开讲适合正在刷课后题、准备期末或复试专业课的人直接拿来练。2. 关系模型与关系代数五个基本运算和除法的答题模板2.1 三个组成部分与三类完整性规则怎么踩点关系模型的三要素是必背内容但真正拉开差距的是完整性规则。实体完整性说的是主属性不能取空值参照完整性说的是外码要么全空、要么等于被参照关系某个元组的主码值。这里有个高频追问参照完整性里外码为什么可以为空答题要点是——外码本身不是主属性时可以取空值表示“尚未确定”的语义如果外码同时是主属性则不能为空。阅卷时“外码不是主属性”这个前提条件必须写出来只写“可以为空”会被扣分。关系数据语言分三类关系代数语言、关系演算语言元组演算和域演算、SQL。共同特点要答“完备的表达能力、非过程化的集合操作语言、功能强、可嵌入高级语言”。这类概念题不要展开举例按原文关键词逐条列多写不加分漏写关键词直接扣。2.2 关系代数五基本运算与“能用基本运算表示”的推导基本运算是并、差、笛卡尔积、投影、选择五种。交、连接、除都可以用这五种表示这是简答题常考点。答题时不要只写结论要给出表示式比如交可以写成 R−(R−S)连接可以写成先笛卡尔积再选择。面试官或阅卷老师最想听的是“为什么这五个是基本的”——因为它们不能再由其他运算导出其余运算都能用它们组合出来。2.3 真题演练SPJ 数据库五连问的逐步写法原料里第 2 章第 6 题是关系代数的经典大题五个小问层层加难。逐题给思路第一问求供应工程 J1 零件的供应商号码πSno(σJnoJ1(SPJ))。先选择后投影顺序不能反投影写在最外层。第二问供应 J1 且零件为 P1 的供应商πSno(σJnoJ1∧PnoP1(SPJ))。两个条件是“与”写在同一个选择里。第三问供应 J1 且零件为红色的供应商需要连接 SPJ 和 P再选择颜色。标准写法是先分别投影出需要的属性再自然连接避免属性列混乱。第四问没有使用天津供应商生产的红色零件的工程号用差集πJno(SPJ) 减去“使用了天津红色零件的工程号”。这是最容易翻车的一问差集左边必须是全部工程号右边是满足条件的工程号方向反了就全错。第五问至少用了 S1 所供应全部零件的工程号用除法πJno,Pno(SPJ) ÷ πPno(σSnoS1(SPJ))。除法题答题模板是“被除数取工程号和零件号除数取 S1 供应的零件号”写的时候把两个投影写清楚阅卷按除号两边是否正确给分。提示关系代数题写完表达式后用一句话说明“先做什么运算、再做什么运算”很多主观题按步骤给分只写结果可能只得一半。2.4 等值连接与自然连接的区别一句话答到点上等值连接是从广义笛卡尔积中选取属性值相等的元组连接条件用“”自然连接是特殊的等值连接要求比较的分量必须是相同属性组并且结果中去掉重复属性列。答题时“去掉重复列”这五个字是采分点漏了就变成普通等值连接。联系在于自然连接一定是等值连接反之不成立。3. SQL 语言建表、查询、更新三类题的固定套路3.1 SQL 五个特点与建表语句的完整性约束SQL 特点五条综合统一DDL、DML、DCL 一体、高度非过程化、面向集合的操作方式、同一种语法两种使用方式自含式和嵌入式、语言简捷易学易用。概念题按这五条背每条后面跟一句解释即可。建表题考的是约束定义。以原料第 3 章第 4 题为例建 S 表时 Sno 要加 UNIQUE建 SPJ 表时 Sno、Pno、Jno 是外码。答题模板CREATE TABLE SPJ ( Sno CHAR(2), -- 供应商号外码引用 S 表 Pno CHAR(2), -- 零件号外码引用 P 表 Jno CHAR(2), -- 工程号外码引用 J 表 QTY INT, -- 供应数量 PRIMARY KEY (Sno, Pno, Jno), FOREIGN KEY (Sno) REFERENCES S(Sno), FOREIGN KEY (Pno) REFERENCES P(Pno), FOREIGN KEY (Jno) REFERENCES J(Jno) );参数说明主码是三个属性的组合因为同一供应商可以向同一工程供应同一零件多次的情况在语义上不允许组合主码保证唯一。外码三个分别指向三张基本表。考试里如果只写列定义不写主码和外码约束分全丢。3.2 查询题从单表到嵌套的四个层次原料第 3 章第 5 题的十一项操作是 SQL 查询的完整训练。按难度分四层单表查询如“找出所有供应商的姓名和所在城市”SELECT SNAME, CITY FROM S。注意列名写全不要用 SELECT *。连接查询如“找出工程项目 J2 使用的各种零件名称及数量”SELECT PNAME, QTY FROM SPJ, P WHERE P.PNOSPJ.PNO AND SPJ.JNOJ2。连接条件不能漏漏了就是笛卡尔积。嵌套查询如“找出没有使用天津产零件的工程号”SELECT DISTINCT JNO FROM SPJ WHERE JNO NOT IN (SELECT DISTINCT JNO FROM SPJ, S WHERE S.SNOSPJ.SNO AND S.CITY天津)。这里 NOT IN 子查询里必须写 DISTINCT否则结果可能重复但逻辑仍对更关键的是子查询的连接条件 S.SNOSPJ.SNO 不能丢。除法类查询如“至少用了 S1 所供应全部零件的工程号”原料给的做法是分两步先查 S1 供应的零件号再查同时使用这些零件的工程。考试里如果 DBMS 不支持深层嵌套分步写是稳妥策略答题时把两步 SQL 都写出来并说明“第一步得到零件集合第二步用 AND 连接多个 IN 条件”。3.3 更新语句UPDATE 和 DELETE 的 WHERE 陷阱原料第 5 题第 8 到 11 小问是更新操作。改颜色UPDATE P SET COLOR蓝 WHERE COLOR红WHERE 不能省省了全表改。删除供应商 S2 及其供应记录要先删 SPJ 再删 S顺序反了会违反参照完整性。插入记录INSERT INTO SPJ VALUES(S2,J6,P4,200)值的顺序必须和表定义列顺序一致。注意DELETE 和 UPDATE 不带 WHERE 是血泪经验里最常见的翻车点考试里即使题目说“全部”也要把 WHERE 条件写清楚或注明“无条件更新全表”。3.4 视图可更新性判断与授权结合考法视图是虚表数据库只存定义不存数据。优点四条简化操作、多角度看待同一数据、逻辑独立性、安全保护。可更新性判断基本表的行列子集视图一般可更新含集合函数、表达式的视图不可更新。原因是对视图的更新要转换成对基本表的更新有些转换不唯一所以不是所有视图都能更新。授权题常和视图结合比如“用户杨兰只能看每个部门最高、最低、平均工资不能看个人工资”先建视图 CREATE VIEW 部门工资 AS SELECT 部门.名称, MAX(工资), MIN(工资), AVG(工资) FROM 职工, 部门 WHERE ... GROUP BY 部门.部门号再 GRANT SELECT ON 部门工资 TO 杨兰。答题时视图定义和 GRANT 两句都要写只写 GRANT 没有视图支撑不得分。4. 安全性与完整性两组概念别答混授权语句逐条对4.1 安全性五类措施与自主/强制存取控制的区别数据库安全性是保护数据防止非法使用造成泄露、更改、破坏。常用方法五条用户标识和鉴别、存取控制、视图机制、审计、数据加密。自主存取控制DAC是给用户授不同数据对象的权限访问时检查权限强制存取控制MAC是给数据对象标密级、给用户授许可证级别系统强制规定只有相应级别才能存取。两者区别答题要点DAC 灵活但粒度靠授权管理MAC 更严格但不够灵活通常结合使用。主体、客体、敏感度标记主体是活动实体用户、进程客体是被动实体文件、表、视图敏感度标记分绝密、机密、可信、公开等级别主体的是许可证级别客体的是密级。这题按定义逐项写不要混用“用户”和“进程”。4.2 GRANT 与 REVOKE 真题逐条拆解原料第 4 章第 7 题七种授权情况逐条给答法用户对两表有 SELECTGRANT SELECT ON 职工, 部门 TO 王明。多表用逗号分隔。有 INSERT 和 DELETEGRANT INSERT, DELETE ON 职工, 部门 TO 李勇。每个职工只对自己记录有 SELECTGRANT SELECT ON 职工 WHEN USER()NAME TO ALL。这里 WHEN 子句是行级控制USER()NAME 表示当前用户名等于记录中的姓名列。对工资字段更新GRANT SELECT, UPDATE(工资) ON 职工 TO 刘星。列级授权把列名写在 UPDATE 括号里。修改表结构GRANT ALTER TABLE ON 职工, 部门 TO 张新。所有权力并可转授GRANT ALL PRIVILEGES ON 职工, 部门 TO 周平 WITH GRANT OPTION。WITH GRANT OPTION 是“可继续授权”的标志漏了这半句扣分。只能看汇总工资先建视图再 GRANT SELECT见上一章写法。撤销权限用 REVOKE格式 REVOKE 权限 ON 对象 FROM 用户。如果原授权带 WITH GRANT OPTION撤销时要加 CASCADE表示转授出去的权限一并收回。这是易错点不加 CASCADE只收回直接授权间接授权还在。4.3 完整性六类约束与 DBMS 三功能完整性是数据的正确性和相容性防范对象是不合语义的数据安全性防范对象是非法用户和非法操作。这个对比是简答高频题两句话都要写。完整性约束分六类静态列级、静态元组、静态关系、动态列级、动态元组、动态关系。静态列级管数据类型、格式、取值范围、空值静态元组管单行内列间关系静态关系管实体完整性、参照完整性、函数依赖动态约束管修改前后状态比如事务一致性。DBMS 完整性控制三功能定义功能、检查功能、违约反应。参照完整性实现要考虑四点外码是否可空、删除被参照元组时的级联/受限/置空、插入时的受限/递归、修改主码的处理。答题时把“级联删除、受限删除、置空值删除”三个术语写全。4.4 建表时定义完整性约束的真题写法原料第 5 章第 6 题要求建职工和部门两表并定义主码、参照完整性、年龄不超过 60。答题模板CREATE TABLE DEPT ( Deptno NUMBER(2) PRIMARY KEY, -- 部门号主码 Deptname VARCHAR(10), Manager VARCHAR(10), PhoneNumber CHAR(12) ); CREATE TABLE EMP ( Empno NUMBER(4) PRIMARY KEY, -- 职工号主码 Ename VARCHAR(10), Age NUMBER(2) CHECK (Age 60),-- 用户定义完整性年龄上限 Job VARCHAR(9), Sal NUMBER(7,2), Deptno NUMBER(2), FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno) -- 参照完整性 );参数说明CHECK 约束写在列定义后FOREIGN KEY 写在表级约束里。考试里如果只写列不写约束完整性分全丢。违反约束的处理实体完整性和用户定义完整性一般拒绝执行参照完整性可能级联、置空或拒绝按题目语义选。5. 关系理论与数据库设计范式判断和 E-R 转换的得分点5.1 函数依赖术语与 1NF 到 4NF 的判断链函数依赖 X→Y 指 X 值相等则 Y 值一定相等。完全函数依赖是 X 的任何真子集都不能决定 Y部分依赖是存在真子集能决定 Y传递依赖是 X→Y、Y→Z 且 Y 不决定 X。候选码是能唯一标识元组的最小属性组主码是选定的候选码外码是引用其他关系主码的属性组全码是所有属性组成码。范式判断链1NF 要求分量不可再分2NF 在 1NF 基础上消除非主属性对码的部分依赖3NF 消除非主属性对码的传递依赖BCNF 要求每个决定因素都包含码4NF 在多值依赖上要求决定因素包含码。答题时先找候选码再看非主属性对码的依赖类型逐级判断。原料第 6 章第 7 题“二目关系必是 3NF 和 BCNF”是经典判断题答“正确”理由是两个属性之间不存在传递依赖决定因素必然包含码。5.2 求最小函数依赖集与候选码的真题步骤原料第 6 章第 2 题给出学生、班级、系、学会四个关系模式要求写最小函数依赖集、判断传递依赖、指出候选码和外码。答题步骤第一步按语义写出所有函数依赖比如学生模式里 Sno→Sname、Sno→Sbirth、Sno→Class、Class→Dept、Dept→Rno。第二步去掉冗余依赖得到最小集。判断冗余的方法是一个依赖能否由其他依赖推出。第三步找传递依赖Sno→Class、Class→Dept且 Class 不决定 Sno所以 Sno 与 Dept 之间是传递依赖。同理 Class 与 Rno 之间也是。第四步候选码学生模式 Sno 是候选码Dept 和 Class 是外码班级模式 Class 是候选码Dept 是外码系模式 Dept 或 Dno 都是候选码学会模式 Mname 是候选码。全码判断没有哪个模式的所有属性都是码所以无全码。提示传递依赖判断时一定要写“Y 不决定 X”这个条件只写 X→Y、Y→Z 会被认为不完整。5.3 数据库设计六阶段与 E-R 图转关系模型设计六阶段需求分析、概念结构设计、逻辑结构设计、物理设计、数据库实施、运行维护。概念设计形成 E-R 图逻辑设计把 E-R 图转成关系模型物理设计定存储和索引。概念模型特点四条真实反映现实、易于理解、易于更改、易于转换。设计策略四种自顶向下、自底向上、逐步扩张、混合策略。E-R 转关系模型的规则实体转表属性转列1:1 联系可以合并到任一端1:n 联系把 1 端主码放到 n 端作外码m:n 联系单独建表并把两端主码作组合主码。原料第 7 章学校 E-R 题里“选修”是 m:n 联系转成选修学号课程号成绩表两个主码组合成主码成绩是联系属性。工厂产品零件题里“产品组成”“零件制造”“零件存储”都是联系转表答题时每个联系单独写一张表并注明主码。5.4 逻辑设计优化与 BCNF 判断的结合考法逻辑设计步骤三步概念模型转一般关系模型、再转特定 DBMS 模型、优化。优化包括确定数据依赖、消除冗余联系、确定范式级别。原料第 7 章第 11 题说各关系模式只有一个码且都是唯一决定因素所以属于 BCNF不会发生更新异常。这类题的答法是先指出候选码再验证每个函数依赖的决定因素是否包含码全部包含则是 BCNF然后说明 BCNF 消除了插入、删除、更新异常。6. 易错点五类最容易丢分的题和纠正答法6.1 参照完整性外码为空的条件答不全错在哪只答“外码可以为空”。为什么错漏了“外码不是主属性”这个前提参照完整性允许空值是有条件的。怎么答对先写实体完整性要求主属性非空再写外码若本身不是主属性则可以取空值表示“尚未确定”若外码同时是主属性则不能为空。6.2 关系代数除法题被除数和除数写反错在哪把“至少用了 S1 全部零件的工程”写成 πPno ÷ πJno,Pno。为什么错除法的语义是“被除数中包含除数所有值的元组”被除数必须包含工程号和零件号除数只包含零件号。怎么答对被除数取 πJno,Pno(SPJ)除数取 πPno(σSnoS1(SPJ))除号方向记牢“大除小”。6.3 SQL 嵌套查询漏写连接条件错在哪子查询里只写 WHERE S.CITY天津没写 S.SNOSPJ.SNO。为什么错没有连接条件子查询和外查询变成笛卡尔积结果集完全错误。怎么答对嵌套查询里只要涉及两张表连接条件必须写在子查询的 WHERE 里写完检查每个表名是否都有对应的连接谓词。6.4 范式判断跳过候选码直接看属性错在哪看到“非主属性”就下结论没先求候选码。为什么错主属性和非主属性是相对候选码而言的候选码求错后面全错。怎么答对先按函数依赖求候选码从入度为 0 的属性开始闭包再区分主属性和非主属性最后逐级判断部分依赖和传递依赖。6.5 REVOKE 漏写 CASCADE 导致转授权限未收回错在哪REVOKE INSERT ON Student FROM 王平没加 CASCADE。为什么错王平曾 WITH GRANT OPTION 把权限转授他人不加 CASCADE 只收回直接授权间接授权仍有效。怎么答对先确认原 GRANT 是否带 WITH GRANT OPTION带了就在 REVOKE 末尾加 CASCADE并在答案里说明“级联收回转授权限”。7. 考前一周怎么用这份答案三遍刷题法和答题检查清单最后阶段不要从头到尾看答案按三遍刷。第一遍按章节过概念题只背关键词比如完整性六类、安全性五措施、SQL 五特点每道题用嘴复述一遍卡壳的做标记。第二遍只做关系代数和 SQL 题拿白纸遮住答案自己写写完对照原料里的表达式重点看运算顺序、连接条件、WHERE 子句有没有漏。第三遍只看标记题和易错点章节把五类易错题的纠正答法默写一遍。答题检查清单可以做成固定动作概念题写完数一数关键词够不够关系代数题写完检查投影在最外层、选择条件有没有漏、差集方向对不对SQL 题写完检查 FROM 后面表名和 WHERE 连接条件是否一一对应、GROUP BY 和聚合函数是否匹配、UPDATE/DELETE 有没有 WHERE范式题写完检查候选码求法、传递依赖的“Y 不决定 X”条件授权题写完检查 WITH GRANT OPTION 和 CASCADE 是否对应。-- 自检示例嵌套查询写完用这个结构核对 SELECT DISTINCT JNO FROM SPJ WHERE JNO NOT IN ( SELECT DISTINCT JNO FROM SPJ, S WHERE S.SNO SPJ.SNO -- 连接条件不能漏 AND S.CITY 天津 -- 选择条件 );这段自检代码的关键是子查询里两个 WHERE 条件缺一不可外层 DISTINCT 防止重复工程号。考试时把这段结构默写出来替换城市和表名就能套用大多数“没有使用某类零件”的题。我自己的习惯是每次考前把易错点章节抄在一张纸上进考场前十分钟只看那张纸因为血泪经验告诉我丢分从来不是因为不会而是因为会的地方少写了一个条件。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑