带过几轮数据库原理的习题课,批作业时总会撞见同一类翻车现场:第一章的题明明全是选择题、填空题、判断题,看起来是全书最"温和"的部分,可卷面发下来,零散扣掉的十几分几乎全集中在这一章。有个同学期末考完跟我聊,说他背了三遍知识点,结果判断题里"数据库系统阶段已经彻底消除了数据冗余"照样打了对勾,简答题问两级映像与数据独立性的关系,写了一整页却没落到分值点上。这类情况太普遍了,原因不在记性,在于概述章的知识点彼此咬合得太紧——数据、数据库、DBMS、数据库系统这四个词,数据管理三阶段,数据模型三要素与三个层次,三级模式与两级映像,语言分类与系统组成,每一条都能单独考,也都容易和相邻概念串味。
这篇内容就是把我这些年整理概述章习题的思路摊开来讲:先把考点分布和题型对应关系摆清楚,再逐个拆那些边界模糊的概念,重点放在三级模式两级映像和 E-R 图这两块最容易失分的地方,最后给出答题模板和错题复盘清单。不管你是刚开课、第一次接触数据库原理、连模式和外模式都分不清的零基础,还是已经过了一遍教材、想在做习题时少丢冤枉分的老手,都能从这里挑到能直接用的东西。里面提到的题,一部分是课堂练习里反复出现的典型题型,一部分是我按常见考法自己改写的模拟题,解析过程会写清楚"为什么这么判",而不是只给答案。
1. 概述章习题的考点分布与得分逻辑
1.1 为什么这章"看着全是背的,一做全是错的"
很多人对第一章有个误解,觉得它就是个名词解释集合,背下来就完事。实际情况恰恰相反,这一章的题目在设计上有个明显特征:单个知识点本身不难,但题目喜欢在两个相邻概念之间设卡。比如"数据库系统与文件系统的根本区别是什么",四个选项里三个都部分正确,只有一个落在"数据结构化"这个根本上;再比如"数据库中的数据独立性是指",选项会把逻辑独立性和物理独立性的定义互相调换。你只记住半句话,就会在两个都眼熟的选项之间反复横跳,最后凭感觉选一个。
真正的得分逻辑在于建立"因果链"而不是"记忆点"。举个具体例子:为什么数据库系统阶段的数据独立性高?因为有了三级模式结构和两级映像。为什么需要三级模式?因为要分别面向用户、面向全局逻辑、面向物理存储这三种不同视角。为什么需要三种视角?因为不同角色的关注点不同——普通用户不关心数据怎么存,DBA 要管全局结构,存储细节要能随时调整而不影响上层。这条链一旦通了,任何关于独立性的题目都能推出来,不用死背。
我在整理习题时习惯把第一章的考点切成五块,每块的失分原因不一样,对症下药才有用。
| 考点板块 | 常见题型 | 分值占比(典型值) | 主要失分原因 |
|---|---|---|---|
| 基本概念与四词辨析 | 选择、填空、判断 | 约 25% | 边界不清,把包含关系搞反 |
| 数据管理三阶段 | 选择、简答 | 约 15% | 只记年代,记不住三个对比维度 |
| 数据模型三层次与三要素 | 选择、填空、简答 | 约 20% | 概念模型与逻辑模型混用 |
| 三级模式两级映像 | 判断、简答、选择 | 约 25% | 映像方向记反,独立性归因错位 |
| 语言分类与系统组成 | 选择、填空 | 约 15% | DDL 与 DML 归属混淆 |
这张表不是让你按分值去押重点,而是提醒你:占比最高的两块恰恰是最需要理解而不是背诵的。基本概念辨析靠的是把四个词的包含关系画成图,三级模式靠的是把映像方向推一遍。相比之下,语言分类那 15% 反而是纯记忆,考前半小时突击都来得及。
1.2 复习顺序:别从第一页开始顺着读
教材第一章的编排顺序是从数据讲起,逐步引出数据库、DBMS、系统,再讲发展阶段,再讲数据模型,最后讲三级模式。这个顺序符合认知逻辑,但不适合做习题时的复习顺序。我的建议是先啃三级模式两级映像这块,理由很实在:它是全章唯一具有"推导性"的内容,掌握了它,数据独立性的所有题目自动解决,还能反过来帮你理解为什么要分三个层次的数据模型;而它又是最容易考简答题的部分,性价比最高。
第二块抓数据模型三层次。这块的难点在于概念模型和逻辑模型的区分,很多人做题时把 E-R 图当成"关系模型的图",一遇到"E-R 图属于哪一层模型"就答错。把概念模型"面向用户、与具体 DBMS 无关"这个定位钉死,后面 E-R 转关系模式的题也就顺了。
第三块才回头看基本概念和三阶段对比。这部分内容量最大但最零散,适合放在掌握了框架之后做填空式记忆。最后收尾的是语言分类和系统组成,属于纯清单型知识,做两遍题就够了。按这个顺序走,做题时会有种"越做越清楚"的感觉;反过来按教材顺序硬背,很容易在第三章就迷糊,因为后面的概念一直在用前面的框架。
还有一个实操层面上的建议:这章的习题不要一次刷完就扔。第一遍做完把错题按上面五块分类标记,隔两天再做第二遍,只看错题所属的那一块,把这块的知识点重新串一次再做题。我带过的学生里,按这个方式复盘两轮的,概述章的客观题基本能压到 95% 以上的正确率。
2. 基本概念辨析:先把四个词的边界划清楚
2.1 数据、数据库、DBMS、DBS 的包含关系
这四个词是概述章出题的富矿,几乎每套卷子都会涉及,而错误率出奇地高。问题出在很多人把它们当成并列概念来记,实际上它们是层层包含的。
数据是最底层的概念,指描述事物的符号记录。这里有个常考点:数据的含义叫语义,数据与其语义是不可分的。作业里出现过这样的判断题——"数据就是数字",当然是错的,文本、图形、图像、音频、视频都是数据。还有一道更隐蔽的:"数据库中存储的是数据,不包括数据之间的联系",这也是错的,数据库不仅要存数据本身,还要存数据之间的联系,这正是它区别于文件系统的地方。
数据库是长期存储在计算机内、有组织、可共享的大量数据的集合。三个限定词——长期存储、有组织、可共享——每个都能单独出题。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并为各种用户共享。
数据库管理系统是位于用户与操作系统之间的一层数据管理软件,是系统软件,不是应用软件。这一点每年都有人错。它的职责是科学地组织和存储数据、高效地获取和维护数据。注意它的位置:在操作系统之上,在应用程序之下。
数据库系统是由数据库、数据库管理系统(及其开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。注意这里没有把"用户"列为必备组成,虽然广义上用户也算,但标准表述里 DBA 是明确列出的。
把这四个词画成包含关系就很清楚:数据库系统 ⊃ 数据库管理系统 ⊃ (管理)数据库 ⊃ 数据。有个高频选择题问"数据库系统的核心是什么",答案是数据库管理系统。还有问"数据库系统与数据库管理系统的关系",正确表述是后者是前者的组成部分。我在习题课上做过统计,这道题的错误率常年维持在 30% 以上,主要错法是把两者当成同义词。
提示:凡是选项里出现"数据库系统就是数据库管理系统"或者"数据库就是数据库系统"这类表述,一律判错。前者是整体与部分,后者差了一个管理系统和应用程序。
2.2 数据管理三阶段:判据不是年代
数据管理技术的发展分三个阶段:人工管理阶段、文件系统阶段、数据库系统阶段。教材上给了时间区间,比如人工管理是 20 世纪 50 年代中期以前,文件系统是 50 年代末到 60 年代中期,数据库系统是 60 年代末以来。很多同学习惯把年代当成判断依据,结果遇到不考年代的题就傻眼。
真正该抓住的是三个对比维度:数据是否长期保存、数据是否有结构、数据是否独立。人工管理阶段没有磁盘这类直接存取的存储设备,数据不保存在计算机里,用完就没了;数据不共享,一组数据只能对应一个程序;数据不具有独立性,程序改了数据表示方式,程序也得改。文件系统阶段有了磁盘,数据可以长期保存,但数据面向某个应用,共享性差、冗余大,记录内部有结构但记录之间没有联系,独立性也差。数据库系统阶段才是真正实现了整体结构化、共享性高冗余低、独立性高。
这个对比维度一旦立住,很多题就变成了套公式。比如"文件系统阶段和数据库系统阶段的本质区别是什么",答"数据结构化",因为文件系统里数据记录内部有结构,但记录之间是孤立的,没有整体结构;数据库里数据是整体结构化的,不仅记录内部有结构,记录之间也有联系。再比如"哪个阶段开始数据可以长期保存",答文件系统阶段,不是数据库系统阶段——这个错误非常典型,因为"长期保存"听起来像是数据库的专利,其实从文件系统就开始了。
还有一类题考各阶段的数据管理方式。人工管理阶段数据由应用程序自己管理,没有专门的软件;文件系统阶段由文件系统管理,应用程序和文件之间通过文件系统交互;数据库系统阶段由 DBMS 统一管理和控制。这三句话对应的是"谁在管数据"这个核心问题,比记年代有用得多。
我建议复习这块时做一张三行四列的表,行是三个阶段,列分别是存储设备、数据管理者、数据共享程度、数据独立性,自己默写一遍再对照教材。默写不出来的格子就是你的盲区,比反复看书效率高得多。
2.3 数据库系统四大特点:别把"冗余低"写成"无冗余"
数据库系统的特点标准表述是四条:数据结构化、数据的共享性高冗余度低且易扩充、数据独立性高、数据由 DBMS 统一管理和控制。这四条本身不难,难在简答题里怎么展开,以及客观题里的细节陷阱。
最大的陷阱在第二条。无数人在判断题里栽在"数据库系统实现了数据的完全无冗余"上。正确理解是:数据库系统降低了冗余,但为了效率会保留必要的冗余。比如为了提高查询速度,可能故意设计一些冗余字段;再比如在分布式环境下,为了提高可用性也会存副本。冗余不是敌人,不受控的冗余才是。"冗余度低"和"无冗余"是两个概念,这个区分在简答题里要写清楚,否则容易被判表述不准确。
第四条展开成四项控制功能也常考,分别是数据的安全性保护、数据的完整性检查、并发控制、数据库恢复。这四项要么考多选,要么考简答的展开。记忆的时候可以按"防外人、防错数、防冲突、防崩溃"来串:安全性防的是不该看的人看了,完整性防的是不合规则的数据进来了,并发控制防的是多人同时操作互相踩踏,恢复防的是系统崩了数据回不来。这四个功能都是由 DBMS 提供的,不是由应用程序自己实现——这点也常出判断题。
第三条"数据独立性高"包括逻辑独立性和物理独立性,具体内容留到第 4 节展开,这里先记住它是由两级映像保证的,不要和应用程序的逻辑结构混为一谈。
另外还有一个容易忽略的点:数据结构化被列为第一条,不是随便排的。它是数据库系统与文件系统的本质区别,也是后面所有特点的基础——正因为数据整体结构化了,才有可能实现高共享、低冗余、高独立性。简答题如果问"数据库系统的主要特点",把结构化放第一句,然后按共享性、独立性、统一管理的顺序展开,这个答题顺序本身就是得分点。
3. 数据模型:三个层次各管一段
3.1 概念模型、逻辑模型、物理模型各自解决什么问题
数据模型这块的习题,出错最多的不是不会画 E-R 图,而是分不清三个层次的模型各自站在谁的视角。这个问题的根源在于教材把它们并列地列出来,容易让人误以为它们只是"三种不同的画法"。
换个说法就好理解了。概念模型是给用户和设计人员看的,它要回答"这个业务里有哪些东西、它们之间有什么关系",完全不考虑用什么数据库、用什么表结构来实现。所以它有几个明确特征:面向现实世界、与具体 DBMS 无关、易于理解、便于交流。E-R 模型就是最典型的概念模型。逻辑模型是给 DBMS 看的,它要回答"数据在数据库里以什么形式组织",包括层次模型、网状模型、关系模型、面向对象模型等。物理模型是给存储系统看的,它要回答"数据在磁盘上怎么摆、怎么建索引、怎么分配存储",面向的是具体的硬件和操作系统。
这三层的判断有个简单口诀:提需求用概念模型,建库用逻辑模型,落地用物理模型。遇到题目问"E-R 图属于哪一层",答案是概念模型;问"关系模型属于哪一层",答案是逻辑模型;问"索引结构属于哪一层",答案是物理模型。
这里有个高频陷阱题:把 E-R 图和关系模型放在一起比较。有人会答"E-R 图是关系模型的一种表示方法",错得离谱。E-R 图不是任何逻辑模型,它是独立于所有逻辑模型之外的、面向概念层的建模工具。正因为它与具体 DBMS 无关,才能作为设计阶段的通用语言,最后再根据不同 DBMS 分别转换成关系模式、层次结构或网状结构。
数据模型的三要素也要单独记牢:数据结构、数据操作、完整性约束。数据结构描述系统的静态特性,是刻画一个数据模型性质最重要的方面,所以它被列在第一位——这点和"数据结构化是数据库系统第一特点"一样,都是因为结构决定了后面的一切。数据操作描述动态特性,包括查询和更新两大类。完整性约束是一组完整性规则,用来保证数据的正确、有效、相容。这三要素在简答题里经常要求列举并各举一例,比如关系模型中,数据结构是二维表,数据操作是关系运算,完整性约束包括实体完整性、参照完整性和用户定义的完整性。
3.2 E-R 图题的规范画法与踩分点
E-R 图是概述章唯一需要动手画的题型,也是最容易丢过程分的地方。很多人图画完了,实体、属性、联系全对,分数却只拿到一半,问题出在规范性上。
标准画法很明确:实体型用矩形表示,矩形框内写实体名;属性用椭圆表示,用无向边与实体连起来;联系用菱形表示,菱形框内写联系名,用无向边分别与有关实体连起来,同时在无向边旁标注联系的类型,即 1:1、1:n 或 m:n。如果联系本身也有属性,也要用椭圆挂到菱形上,这个细节最容易被漏掉。
踩分点我按批改经验列一下:
- 实体和属性的区分。判断标准是"能不能再分"和"是不是需要单独管理"。学生信息里的学号、姓名、性别是属性;但如果系统里需要单独管理班级,班级就是实体而不是属性。
- 联系的识别。凡是两个实体之间存在业务动作或业务关联的,就必须画成菱形联系,不能靠外键隐含。比如"学生"和"课程"之间的"选修",必须画出来,并且标 m:n。
- 联系属性的归属。成绩这个属性属于"选修"这个联系,不属于学生也不属于课程。这是经典考点,画错位置的直接丢分。
- 联系类型的标注。"1:1""1:n""m:n"三种写法都要写准,方向上也要注意,比如"一个系有多名教师,一名教师只属于一个系",方向应标为系 1、教师 n。
- 不要出现冗余联系。两个实体间如果已经通过其他实体间接建立联系,就不要重复画。
还有个细节要提醒:E-R 图里不要出现"外键""主键"这类关系模型的术语。概念模型不关心这些,画蛇添足反而暴露了你对层次的理解没到位。
3.3 联系基数判断的三个反例
联系基数的判断,本质是问"一方的一个实例,能对应另一方的多少个实例"。逻辑很简单,但题目往往用语言陷阱把方向绕晕。我整理了三道在练习里错误率最高的题。
第一个反例:"每个学生只能有一个导师,每个导师可以指导多个学生"。有人看到"一个导师多个学生"就标成 1:n,方向标反了。正确做法是先确定方向:站在学生看导师,一个学生对应一个导师;站在导师看学生,一个导师对应多个学生。标注时写作"导师 1 : n 学生",即导师端是 1,学生端是 n。
第二个反例:"一门课程可以有多个老师讲授,一位老师可以讲授多门课程"。这是双向多的典型,标 m:n。很多人看到"多个老师"就只标了 n,忽略了对侧也是多。
第三个反例,也是最容易错的一个:"每个仓库可以存放多种零件,每种零件只能存放在一个仓库"。这个从业务上看像 1:n,但很多题目里会加一句"一种零件可以分多个批次存放在不同仓库的货位",一旦出现这句,基数就变成 m:n 了。这类题的关键是在原文里找限定词——"只能""只能在一个",这种唯一性表述是判断 1 端的信号;"可以""多个"是多端的信号。读题时把这两类词圈出来,正确率会明显提升。
注意:E-R 图的联系基数不是靠直觉猜的,一定要回到文本里找"唯一性"和"多样性"的表述。看着像常识的业务场景,往往和题目设定不一样。
4. 三级模式与两级映像:全章最硬的一块骨头
4.1 谁对应谁:一张对照表锁死
三级模式两级映像是全章最需要理解的一块,也是最容易在简答题上拿不全分的一块。我见过太多人把外模式和内模式的定义记反,把两级映像的方向说反,最后连带把两类独立性也归因错了,一道 8 分的简答拿了 3 分。
先把对应关系钉死。模式又称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式,它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。外模式又称子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个数据库可以有多个外模式。内模式又称存储模式,一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
这里有三个数字要记清:一个数据库有一个模式、一个内模式、多个外模式。数字类的判断题就靠这个。
外模式有几个特点常考。第一,它是模式的子集,因为一个外模式只对应某个应用的需求,而模式是全体的。第二,同一个外模式可以为某一用户的多个应用系统使用,但一个应用程序只能启用一个外模式。第三,外模式是保证数据库安全性的一个有力措施,因为每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据对他们来说是不可见的。最后这条经常出简答题,问"外模式为什么能提高安全性",答案就是这个"视图隔离"的思路。
用生活化的类比串一遍:模式相当于一栋楼的完整建筑图纸,涵盖所有房间和结构;外模式相当于不同的人拿到的不同楼层平面图,物业只看到设备间,住户只看到公共区域;内模式相当于施工图纸,管的是墙体用什么材料、管线怎么走。图纸(模式)改了,平面图(外模式)可以不变;施工方式(内模式)改了,图纸(模式)也可以不变。这就是独立性的直观来源。
| 层级 | 别称 | 数量 | 面向对象 | 是否涉及存储细节 |
|---|---|---|---|---|
| 外模式 | 子模式、用户模式 | 多个 | 具体用户和应用 | 不涉及 |
| 模式 | 逻辑模式、概念模式 | 一个 | 全局数据视图 | 不涉及 |
| 内模式 | 存储模式 | 一个 | 物理存储 | 涉及 |
4.2 两类独立性的推导链条
数据独立性分两级:逻辑独立性和物理独立性。定义本身只有两句话,但考试考的是你能不能把"映像—改变—不变"这条链讲完。
逻辑独立性指的是当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变,从而应用程序不必修改。这里的映像在外模式和模式之间,方向是"模式变、映像调、外模式不变、应用不变"。物理独立性指的是当数据库的内模式改变时,数据库管理员对模式/内模式映像作相应改变,使模式保持不变,从而应用程序也不必修改。映像在模式和内模式之间,方向是"内模式变、映像调、模式不变、应用不变"。
为什么是这两个顺序?因为 外模式 ⊂ 模式 ⊂ 内模式,逻辑上是自上而下的局部到全局,物理上是自上而下的全局到存储。逻辑独立性管的是上层接口稳定,物理独立性管的是底层实现灵活。
我总结了一个答题模板,考场上照这个结构写基本不会漏点:
数据独立性是由数据库系统的二级映像功能来保证的。外模式/模式映像保证了数据的逻辑独立性:当模式改变时,由数据库管理员对各个外模式/模式映像作相应改变,使外模式保持不变,应用程序是依据数据的外模式编写的,从而应用程序不必修改。模式/内模式映像保证了数据的物理独立性:当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作相应改变,使模式保持不变,从而应用程序不必修改。
这段话里几个细节是得分点:谁来做修改(数据库管理员)、修改的是什么(映像)、什么保持不变(外模式或模式)、结果是什么(应用程序不必修改)。很多人只写了前半句"外模式不变",漏了"应用程序不必修改"这个结论,分值就缺了一块。
4.3 判断题的错误归因
客观题里的三级模式题,错误基本集中在四种归因错位上。我把它们整理成表,做题时对照着排除。
| 题目表述 | 正误 | 错误原因 | 正确理解 |
|---|---|---|---|
| 一个数据库可以有多个模式和多个内模式 | 错 | 数量记反 | 模式和内模式各只有一个,外模式可有多个 |
| 外模式/模式映像保证了数据的物理独立性 | 错 | 映像与独立性对应错位 | 外/模式映像对应逻辑独立性 |
| 内模式改变时,模式也需要跟着改变 | 错 | 忽略映像的调节作用 | 映像调整后模式可保持不变 |
| 应用程序是依据模式编写的 | 错 | 编写依据记错 | 应用程序依据外模式编写 |
| 逻辑独立性是指存储结构改变不影响磁盘 | 错 | 概念张冠李戴 | 逻辑独立性指模式改变不影响外模式和应用 |
最后一条错得最多,因为"逻辑"这个词容易让人联想到"底层逻辑"。这里的逻辑指的是全局逻辑结构,不是物理实现。记忆口诀可以记成"模式变化管逻辑,存储变化管物理"。
还有一种题型是把三级模式和三层数据模型混着考,比如"关系模式属于三级模式中的哪一级"。关系模式描述的是全局逻辑结构,属于模式层;E-R 图属于数据模型里的概念模型,不属于三级模式体系。这两个体系是不同维度,不要交叉套用——这也是我在批习题时反复强调的一点,两个体系各自独立,一个是"建模分几步",一个是"数据库内部怎么分层"。
5. 数据库语言与系统组成:容易背混的清单
5.1 DDL、DML、DCL 的归属别搞反
数据库语言按功能分三类,这块的题目基本是送分题,但也确实是错得比较集中的地方,原因只有一个:把 DML 和 DCL 的首字母混了。
数据定义语言(DDL)负责定义数据库中的数据对象,包括模式、外模式、内模式、表、索引、视图等,核心两类语句是创建和删除。数据操纵语言(DML)负责对数据库中的数据进行查询和更新,更新又分插入、删除、修改。这里要注意,查询在很多教材里被单列为 DQL,但广义上仍归入 DML 范畴,做题时看清题干表述。数据控制语言(DCL)负责权限管理、事务控制这类操作,包括授权、回收权限、提交和回滚。
一个实用的判断方法:动作对象是"结构"就用 DDL,动作对象是"记录"就用 DML,动作对象是"权限或事务"就用 DCL。比如建表是 DDL,往表里插一行是 DML,给某个用户授权是 DCL,控制事务提交也是 DCL。
简答题则常考数据库语言的特点,标准答案里有五条,其中"高度非过程化"和"面向集合的操作方式"这两条最常被单拎出来考。非过程化指的是只说明"做什么",不说明"怎么做",存取路径的选择由系统自动完成;面向集合指的是操作对象和操作结果都是集合,不是单条记录。这两条对比的是过程化语言,理解了这个对比,记忆就不难。
还有个细节:同一种语法结构提供两种使用方式,既可以独立地交互使用,也可以嵌入到高级语言程序中使用。这个特点在嵌入式开发的场景里经常被问到,属于理解型考点。
5.2 DBMS 功能与 DBA 职责,题目爱把它们搅在一起
这是概述章最典型的一组易混概念。两者的关系是:DBMS 提供工具和能力,DBA 使用这些工具完成管理职责。出题时的常见套路是把 DBA 的某项职责描述成 DBMS 的功能,反之亦然。
DBMS 的主要功能可以归为六项:数据定义、数据组织存储和管理、数据操纵、数据库的事务管理和运行管理、数据库的建立和维护、其他功能(通信接口、数据转换、异构数据库互访等)。注意第四项和第五项容易混:事务管理和运行管理侧重运行期的并发、安全、完整性、恢复;建立和维护侧重装载初始数据、备份、恢复、重组重构、性能监控这些运维动作。
DBA 的职责同样是五项:决定数据库中的信息内容和结构、决定数据库的存储结构和存取策略、定义数据的安全性要求和完整性约束条件、监控数据库的使用和运行、数据库的改进和重组重构。
看出来了吗?DBMS 提供的"能力"和 DBA 承担的"决策"在文字上高度重合,这是出题人最喜欢的区域。判断的窍门是看主语:决定、定义、监控这类动作的主体是人,即 DBA;提供、支持、实现这类动作的主体是软件,即 DBMS。比如"决定数据库的存储结构"是 DBA 的活,"实现数据的组织存储和管理"是 DBMS 的活。
数据库系统的组成也要记一遍:数据库、数据库管理系统(及其开发工具)、应用程序、数据库管理员。注意"及其开发工具"这个括注,有些题目故意漏掉它,或者把"应用程序"换成"数据库",这类选项要警惕。数据库系统不等于数据库,前者是个完整的运行环境,后者只是其中的数据集合。
6. 计算题与简答题的答题套路
6.1 关系模式个数与联系基数的计数题
概述章的"计算题"其实不涉及真正的算法,主要是两类计数:一是一个 E-R 图转换成关系模式后有几个关系模式,二是判断某些操作会影响到哪些层面。第一类题目在原教材的习题里出现频率不低。
转换规则要记牢:一个实体型转换为一个关系模式;一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并;一个 1:n 联系可以转换为一个独立的关系模式,也可以与 n 端对应的关系模式合并;一个 m:n 联系必须转换为一个独立的关系模式。
所以统计关系模式个数的公式是:实体数 + m:n 联系数 + 独立转换的 1:1 和 1:n 联系数。如果题目按最简方式合并,则只有 m:n 联系需要单独成表。这里必须看清题目要求,是按标准规则逐项转换,还是要求取最简方案。很多题的答案是"实体数 + m:n 联系数",前提是 1:n 和 1:1 都合并了。
举个模拟例子:一个仓储系统里,有仓库、零件、供应商三个实体,仓库与零件之间是 m:n 的存放联系,供应商与零件之间是 1:n 的供货联系,供应商与仓库之间是 1:1 的负责联系。按最简方案转换,结果是 3 个实体对应的 3 个关系模式,加上 1 个 m:n 联系对应的模式,共 4 个。如果把 1:1 联系也单独转换,就是 5 个。答题时必须写明依据,否则答案对了过程也可能被扣分。
这类题的坑在于"联系的属性"和"合并后的属性"。m:n 联系单独成表时,属性里要带上两端实体的码和联系自身的属性;1:n 联系合并到 n 端时,n 端的关系模式要增加 1 端的码作为外码。这些规则在后续章节会反复用,概述章先建立起概念就够。
6.2 简答题按点给分的写法
概述章的简答题分值普遍不高,但每题有明确的得分点,写满一页没踩到点上,得分反而不如一页三分之一的结构化答案。我按批改经验给几个实用建议。
第一,先给定义,再给要点,最后给结论。比如问"什么是数据独立性",先写定义(数据独立性包括逻辑独立性和物理独立性),再分别展开两类独立性由哪个映像保证、机制是什么,最后一句"从而应用程序不必修改"收尾。这个结构的得分率明显高于想到哪写到哪。
第二,分点要显式标记。哪怕不写"第一、第二",也要用换行或分号把不同要点隔开,让批改人一眼看到踩了几个点。这一点在电子阅卷里尤其重要。
第三,关键术语必须出现。比如问"数据库系统阶段的特点",如果你的答案里没有"数据结构化"这五个字,哪怕意思对,也可能被判不准确。"高性能""方便使用"这类自造词不是得分点。
第四,不要写与题干无关的展开。有些人怕字数不够,把三阶段对比、DBA 职责都写上去,结果反而挤掉了真正的得分点。简答题的字数控制在题干要求点数的两到三倍比较合适,比如问"四个特点",展开成一段两百字左右就够。
第五,遇到拿不准的题,把因果链写出来。比如问"为什么数据库系统要采用三级模式结构",即使你记不清标准答案,只要写出"分别对应全局逻辑结构、用户视图、物理存储三种不同视角,并由此通过两级映像实现独立性"这条因果链,大部分分值都能拿到。
7. 高频错题复盘与复习节奏
7.1 一张错题速查表
每次带完一轮习题课,我都会把错得最多的题整理成一张表,让学生考前只看这张表。下面这份是按常见考法整理的版本,可以直接拿去对照自己的错题本。
| 题目陷阱 | 常见错误答案 | 正确答案要点 |
|---|---|---|
| 数据库系统阶段已完全消除数据冗余 | 正确 | 错误,只是降低了冗余,必要冗余会保留 |
| 数据库系统与文件系统的根本区别是数据量大 | 正确 | 错误,根本区别是数据结构化 |
| E-R 图是关系模型的一种表示 | 正确 | 错误,E-R 图属于概念模型,与具体 DBMS 无关 |
| 一个数据库可以有多个内模式 | 正确 | 错误,内模式只有一个,外模式可以多个 |
| 外模式/模式映像保证物理独立性 | 正确 | 错误,它保证的是逻辑独立性 |
| 应用程序依据模式编写 | 正确 | 错误,应用程序依据外模式编写 |
| 数据就是数字 | 正确 | 错误,文本、图形、音频等都是数据 |
| 数据库系统的核心是数据库 | 正确 | 错误,核心是数据库管理系统 |
| 文件系统阶段数据不能长期保存 | 正确 | 错误,从文件系统阶段起就可以长期保存 |
| DBMS 负责决定数据的存储结构 | 正确 | 错误,决定权在 DBA,DBMS 提供实现能力 |
| 数据模型的三要素是结构、操作和存储 | 正确 | 错误,第三要素是完整性约束,不是存储 |
| 概念模型要面向具体的 DBMS 设计 | 正确 | 错误,概念模型独立于具体 DBMS |
这张表的用法不是背,而是每做错一道题就往上加一行,考前只看自己加过的那些。别人的错题对你来说可能根本不是问题,自己加的行才是真正的漏洞。
7.2 复习顺序与时间分配
按我的经验,概述章的总复习时间控制在四到五个小时就够,再多就是低效重复。分配方式可以这样:三级模式两级映像花一个半小时,这块值得花时间,因为它是后续章节的底层框架,理解透了后面讲关系数据库、规范化、并发控制都会顺很多;数据模型三层次和 E-R 图花一个小时,重点练画图和基数判断;基本概念和三阶段对比花一个小时,做填空式记忆;语言分类和系统组成花半小时,纯清单,两遍足够了;剩下的时间用于错题复盘。
复盘时有个小技巧值得说:把错题对应回教材的具体小节,而不是对应回章节。比如你三级模式的判断题错了,要精确到是哪一小节的哪句话,然后把那句话前后三段重新看一遍。这比笼统地"再看一遍第三章"效率高得多,因为概念题的错因往往不是整节没学会,而是某一句表述被记串了。
还有一点我在带习题时反复提醒的:概述章的题不要追求全对,但要追求"错得明白"。这章的题型设计本身就有大量细节陷阱,第一次做错两道很正常,关键是能说出错误原因归属于上表的哪一类——是数量记反、方向记反、层次混用还是归因错位。把错误类型归好类,第二遍再遇到同类表述时脑子里会自动亮红灯。我自己做学生时的笔记里,这一章记的从来不是知识点本身,而是一串"陷阱短语",比如"只能""唯一""完全""根本"这些词一出现,就知道该停下来核对原文了。