数据库原理课后答案精析:从E-R图到关系代数与SQL完整性
简介面向高校数据库课程学习者这份课后习题答案解析文档紧密围绕数据库基本原理覆盖基本概念、数据模型、数据独立性、实体关系等核心章节适用于课后复习、期末备考及自学自测场景。文档对第一章名词解释、判断与简答均给出参考解答例如数据库DB、数据库系统DBS、数据库管理系统DBMS的确切定义以及一对一、一对多、多对多联系的判定可帮助读者对照教材查漏补缺。资源为单个doc格式文档压缩包约752KB无需安装额外软件即可阅读目前已有244人学习下载。内容还进一步梳理了概念数据模型与关系模型、模式与外模式、逻辑与物理数据独立性等重难点读者既能借助答案检验知识掌握程度也可通过系统化的知识点总结快速搭建数据库原理认知框架提升对数据管理核心概念的理解与实际应用能力。1. 数据库原理课后答案这份 doc 能帮你拿下考试也能帮你补上理论短板期末考前一周拿这份文档突击数据库原理的人不在少数。它覆盖的不只是名词解释——从 DB、DBMS、DBS 三者的关系到实体联系、E-R 图、关系代数、SQL 的完整性实现基本把教材课后习题里最容易考的那批题都过了一遍。文档按章节组织每道题带参考答案判断题甚至直接给了 1-20 的答案串选择题也标好了选项。适合两类人一类是考前需要快速过一遍概念、背熟标准定义的考生另一类是学完 SQL 但理论部分稀里糊涂想回头把数据模型、三级模式、完整性约束这些概念捋清楚的从业者。它解决的是「书太厚、不知道怎么抓重点」的问题。2. 把第一张概念图刻进脑子实体、属性、关键字与三种联系方式2.1 数据库、数据库系统、数据库管理系统三者到底差在哪文档第一章开头就是三连名词解释数据库DB、数据库系统DBS、数据库管理系统DBMS。这三个概念每年必考难点在于它们之间的包含关系。数据库是「在计算机存储设备上合理存放、相关联、有构造的数据集合」重点在「数据」本身数据库管理系统是「操纵和管理数据库的大型软件由一组计算机程序构成」重点在「软件」数据库系统则是「计算机系统中引进数据库和数据库管理系统后的组成」它是个更大的范畴包含硬件、软件、数据、人员。我一般建议这样记DBS 是最大的圈里面装着 DB 和 DBMSDB 是被管理的数据集合DBMS 是管理工具。选择题第 6 题考的就是这个关系——DBS 包括 DB 和 DBMS选 A。这个包含关系在简答题里也常出现文档 1.3 第 20 题让简述三者的关系回答时一定要突出「数据库由 DBMS 建立和维护用户通过 DBMS 访问数据库」。这里有个容易翻车的细节数据库系统不等于数据库加上数据库管理系统那么简单。严格说DBS 还包括用户最终用户、应用程序员、DBA、硬件环境。但考试答题时按文档的简化表述就够了——先定义 DB再说 DBMS 负责建立维护最后说 DBS 是引进两者后的整体。2.2 属性和关键字从实体集到唯一标识的设计逻辑实体、实体集、属性、关键字这一组概念在 1.5 节工程硕士管理的 E-R 图设计题里会直接用到。实体是「客观存在并可相互区别的个体」比如一个具体的学生张三实体集是「具有一样实体特性实体的集合」比如全体学生属性是「表示实体的特性」比如学号、姓名、专业关键字是「能唯一标识记录的最小字段集」比如学号。这里的关键词是「最小」。学号能唯一标识学生但如果学号 姓名也能标识那关键字仍然是学号因为「最小字段集」要求去掉任何一个属性就无法唯一标识。这个「最小」的含义在选择题和判断题里容易被忽略。文档 1.2 第 4 题「假设干个属性集合就能描述一个对象」判错就是因为单靠属性集合不一定能完整描述对象对象之间的关系和约束同样重要。在画 E-R 图时属性要直接用无向边连到实体联系用菱形框表示实体用方框。文档 1.5 给出的工程硕士管理场景包含五个实体学生、简历、课程、学院、导师。学生实体要画出学号、专业、学院、入学时间、工作单位这些属性简历实体要画简历号、开始时间、结束时间、证明人、单位、担任职务。联系方面学生和简历是 1:n一个学生有多条简历学生和学院是 n:1多个学生属于一个学院学生和课程是 n:m一个学生选多门课一门课被多个学生选。2.3 一对一、一对多、多对多判断联系类型的实操套路实体间联系类型是 E-R 设计题的核心考点。判断方法很简单从 A 方看 B 方再从 B 方看 A 方两个方向都看了才能下结论。一对一1:1是 A 中每个实体在 B 中至多有一个对应反过来也一样一对多1:n是 A 中每个实体对应 B 中任意个实体但 B 中每个实体至多对应 A 中的一个多对多m:n是双方都可以对应任意个。文档 1.3 第 7 题的举例很典型校长和学校是 1:1一个学校一个校长一个校长管一个学校学生和学校是 1:n一个学校多个学生学生和教师是 m:n一个学生被多个教师教一个教师教多个学生。现学现用的话选课场景里学生和课程就是 m:n因为中间要加选课表才能拆成两个 1:n。这个「拆中间表」的思路对后面做数据库设计特别重要成绩表就是学生表和课程表之间的联系表属性是成绩。3. 关系模型与完整性规则判断、选择、简答背后的判定逻辑3.1 关系模型的三要素与判断题里埋的雷第二章 2.1 直接问关系模型的三个组成部分关系数据结构、关系操作、关系完整性约束。文档 1.2 判断题第 13 题「关系模型不仅可以描述实体还可以描述实体及实体集之间的联系」判√这是关系模型相对于层次模型和网状模型的优势——二维表既能表示实体集也能通过公共属性表示联系。判断题里最容易错的是第 1 题「数据库系统的一个主要特点是数据无冗余」判×。数据库不是无冗余而是冗余度小。文档 1.3 第 19 题专门讲了有控制冗余和无控制冗余的区别有控制冗余是设计者为了提高查询效率有意保留的无控制冗余是属性间依赖导致的多余数据后者会降低存储效率。这个区别在简答题里年年出现回答时要抓住「有意保留」和「依赖导致」这个分水岭。第 2 题「数据库管理系统和数据库构成了数据库系统」判×原因前面说过DBS 的范畴更大。第 3 题「数据构造化是数据库和文件系统的根本区别」判√文件系统也有冗余和独立性差的问题但结构化才是分水岭。第 9 题「非过程化语言比过程化语言好」判×语言没有绝对好坏非过程化语言如 SQL易用性高但过程化语言在复杂逻辑处理上更灵活。3.2 三级模式与两级映像数据独立性的原理级理解文档 1.3 第 12 题和第 13 题反复在考三级模式外模式子模式、概念模式模式、内模式存储模式。外模式是用户能看见的局部逻辑结构每个用户一个概念模式是全局逻辑结构只有一个内模式是物理存储结构也只有一个。选择题第 3 题问「用户或应用程序看到的那局部逻辑结构和特征」是外模式选 C子模式注意选项里的「子模式」就是外模式的别称。数据独立性靠两级映像保证外模式/模式映像支持逻辑独立性模式/内模式映像支持物理独立性。逻辑独立性指模式变了比如加个字段外模式和应用程序不用改物理独立性指内模式变了比如换存储引擎、改索引结构模式不用改。文档 1.2 第 17 题「视图对重构数据库提供了一定程度的物理独立性」判×视图是外模式层面的东西它提供的是逻辑独立性。做题时记住这条规律外模式/模式映像——逻辑独立性模式/内模式映像——物理独立性视图——逻辑独立性。3.3 关系代数的套路总结选择、投影、连接、除法怎么用文档 2.6 到 2.13 大篇幅在考关系代数表达式。选择 σ 是筛选行投影 π 是选列连接 ∞ 是两个表按条件拼接除法 ÷ 用于「全部」类查询比如「检索全部学生都选修的课程」。2.12 第 6 题「检索至少选了两门课的学生学号」关系代数写法是πSNO(σ[1][4] ∧ [2]≠[5](SC × SC))这里用 SC 自连接目的是让同一学生的两条选课记录互相配对再筛选课程号不同的配对最后投影学号去重。方括号里的 [1] 是第一个 SC 的学号列[4] 是第二个 SC 的学号列[2] 和 [5] 分别是两个 SC 的课程号列。自连接是关系代数里比较绕的一招多练几次就能掌握规律。2.12 第 7 题「检索全部学生都选修的课程的课程号和课程名」需要用除法先求出所有学生的学号集合 πSNO(S)再求选课事实表 πSNO,CO(SC)两者相除得到满足条件的所有课程号最后连接课程表取课程名。除法的含义是「结果关系中的每个元组都与被除关系的每个元组有过联系」考试遇到「全部」「所有」这类字眼优先考虑除法。4. 从关系代数到 SQL 实战把课后题翻译成能跑的查询4.1 视图与基本表SQL 体系结构和三级模式的对应关系文档 3-3 问 SQL 体系结构和关系数据库模式的关系答案很干脆视图对应外模式基本表对应概念模式模式存储文件对应内模式。SQL 通过 CREATE VIEW 定义视图、CREATE TABLE 定义基本表、存储文件由 DBMS 管理一套语言覆盖三级模式的定义和操纵。视图在 SQL 里是虚表不实际存储数据。文档 3-1 的定义说得很清楚视图是从一个或几个基表导出的表只存放定义信息没有对应数据。这意味着查询视图时实际执行的是视图定义里的 SELECT 语句视图本身不占存储空间。实际操作时我一般会让学生先建基本表再在基本表上创建视图-- 创建基本表 CREATE TABLE Student ( SNO CHAR(12) PRIMARY KEY, SNAME VARCHAR(20) NOT NULL, AGE INT, SEX CHAR(2), CDEPT VARCHAR(30) ); -- 基于基本表创建视图 CREATE VIEW CS_Student AS SELECT SNO, SNAME, AGE FROM Student WHERE CDEPT 计算机;视图的作用有两个层面一是简化查询把常用的复杂连接查询封装成虚表二是提供安全性只暴露需要的列隐藏敏感字段。但要注意视图上的增删改有限制涉及多表连接的视图往往不可更新——这是考试里常考的坑文档 1.2 第 17 题判×也是因为这个逻辑。4.2 用 SQL 实现三类完整性约束从约束定义到违反处理文档 3-4 问 SQL 如何实现完整性约束答案分三块。实体完整性用 PRIMARY KEY 或 UNIQUE 约束实现主键列不能为 NULL也不能重复。参照完整性用 FOREIGN KEY 约束实现外键值要么为 NULL要么等于被参照表的主键值。用户定义完整性用 CHECK 约束、NOT NULL、数据类型、默认值等实现。一个典型的建表练习可以这样写-- 课程表 CREATE TABLE Course ( CO CHAR(6) PRIMARY KEY, CNAME VARCHAR(30) NOT NULL, CDEPT VARCHAR(20), TNAME VARCHAR(20), CREDIT INT CHECK (CREDIT 0) ); -- 选课表外键参照学生表和课程表 CREATE TABLE SC ( SNO CHAR(12), CO CHAR(6), GRADE DECIMAL(5,2), PRIMARY KEY (SNO, CO), FOREIGN KEY (SNO) REFERENCES Student(SNO), FOREIGN KEY (CO) REFERENCES Course(CO), CHECK (GRADE BETWEEN 0 AND 100) );注意 SC 的主键是 (SNO, CO) 联合主键这保证了一个学生对同一门课只有一条成绩记录。外键的引用顺序有讲究必须先建被参照表Student、Course再建参照表SC否则会报错。CHECK 约束在 MySQL 8.0.16 之后才真正生效老版本会把 CHECK 当摆设这个坑值得注意。4.3 把关系代数翻译成 SQL一道典型题的两种写法对照考试里常见「关系代数和 SQL 二选一」的考法文档 2.12 第 3 题「检索学号为 090111 学生所学课程的课程名与任课教师名」就是个好例子。关系代数写法是πCNAME,TNAME(C ∞ σSNO090111(SC))对应 SQL 写法SELECT C.CNAME, C.TNAME FROM Course C JOIN SC ON C.CO SC.CO WHERE SC.SNO 090111;JOIN 的条件是课程号相等WHERE 的过滤条件是学号。如果换成「检索选修了刘老师所授课程的女学生」文档 2.12 第 4 题需要三张表连接SELECT DISTINCT S.SNAME FROM Student S JOIN SC ON S.SNO SC.SNO JOIN Course C ON SC.CO C.CO WHERE S.SEX 女 AND C.TNAME 刘老师;三表连接的执行顺序是先做 Student 和 SC 的连接结果再和 Course 连接。加 DISTINCT 是因为一个学生可能选了刘老师多门课去重后才返回学生名单。在数据库课程设计里这种多表 JOIN 查询是最高频的写法字段别名别省不然混在多个同名字段里特别容易翻车。5. 避坑指南答案文档里最容易被误读的五个高频问题5.1 「视图对重构数据库提供物理独立性」——错在哪现象判断题 1.2 第 17 题很多人看到「视图」和「重构」就认为是对的。 原因视图属于外模式层外模式/模式映像保证的是逻辑独立性。物理独立性靠模式/内模式映像保证跟视图没关系。 解决做题时先定位概念在三级模式中的位置。涉及视图、外模式的改动逻辑独立性涉及存储结构、索引的改动物理独立性。这个定位法能避开大多数判断题陷阱。5.2 「数据库系统特点之一是数据无冗余」——为什么判错现象判断题 1.2 第 1 题把「冗余度小」理解成「无冗余」。 原因数据库设计里允许有控制冗余比如为了查询性能在事实表中冗余存储维度表的名称字段。完全无冗余意味着每次查询都要多表连接性能反而下降。 解决回答这类题时表述要精确——数据库的特点是「冗余度小、避免不一致」不是「无冗余」。如果简答题问你「有控制冗余和无控制冗余的区别」记住前者是设计者有意保存、为了提高效率后者是依赖导致、白占空间。5.3 外键值什么时候可以为空——边界条件要分清现象文档 2.3 问参照完整性里外部关键字属性为什么可以为空很多人答不上来。 原因参照完整性规定外键 F 的值要么取空值要么等于被参照表的主键值。这里有个前提——「属性 F 本身不是主属性」。如果 F 是主键的一部分联合主键的组成列就不能为空。 解决判断顺序分两步先看 F 是不是主属性是则不能为空再看 F 是否引用不存在的元组引用则违反参照完整性。文档里那句「当外部关键字 F 对应的主键 Ks 值为空值时说明 F 暂时没有赋值」本质是允许「还没分配」的中间状态。5.4 关系代数除法什么时候用——「全部」字眼是信号现象2.12 第 7 题「检索全部学生都选修的课程」有人用连接查询硬做结果漏了那些没被任何学生选过的课。 原因连接只能表示「存在」除法的语义是「全部」两者逻辑不等价。用连接做这道题得到的只会是「至少有一个学生选的课」。 解决做题时抓题干关键词。「全部」「所有」「至少选修了全部」优先考虑除法「至少一门」「存在」用连接或子查询。除法在语法层面等价于「不存在某个学生没选这门课」写 SQL 时可以用 NOT EXISTS 双嵌套来替代。5.5 层次模型和网状模型「查询效率高」但为什么被关系模型取代现象简答题 1.3 第 10 题让说三种数据模型的优缺点很多人只答关系模型的优点忽略了层次和网状模型的长处。 原因层次模型用指针组织数据查询路径固定效率高但灵活性差网状模型能直接表示 M:N 联系但结构和编程复杂。关系模型表达能力强、简单易学代价是查询效率不如非关系模型。 解决对比题要写全。答关系模型「查询效率较低」这句别漏后续在解释「数据库为什么还要用索引」时也能对上——关系模型效率缺口正是索引和查询优化器存在的意义。概念模型独立于硬件设备和 DBMS判断题 16 题判√也是同一套逻辑。6. 把习题答案整理成考前速查卡一个值得长期养成的复习习惯文档里的内容再多考试时也不可能翻着看。我的习惯是把每章的判断题答案和简答核心要点压缩成速查卡一页纸一个主题。具体做法是先提取关键结论再用自己的话复述一遍最后标注易错点。比如三级模式这一块我会整理成三行模式层次别名对应 SQL 对象映像外模式子模式视图外模式/模式映像 → 逻辑独立性概念模式模式基本表—内模式存储模式存储文件模式/内模式映像 → 物理独立性关系代数那一块把 σ、π、∞、÷ 四个运算符各自对应的 SQL 关键词列出来σ → WHEREπ → SELECT∞ → JOIN÷ → NOT EXISTS 双嵌套。判断题的 20 个答案背熟之后自己把错题重新做一遍标注错误原因比背答案更管用。这个整理过程本身就是一次主动回忆——比单纯重读文档的记忆效果好得多。从那以后我每次考前复习都强制自己走一遍这个流程先列概念表再列运算符对照最后重做错题。判断题里那些似是而非的表述经过这轮整理之后基本不会再错。希望这份整理思路能帮到你让你的数据库原理复习少走几步弯路。本文还有配套的精品资源点击获取