数据库原理第一章概述的习题,放在整本书里看是最不起眼的一章——全是名词解释、判断、简答,没有一道需要写 SQL,也没有复杂的计算。但我带人过这门课习题的时候发现,恰恰是这一章的题目最能暴露理解深度:同样是问“什么是数据库”,有人背出一句话,有人能顺着答出数据、DBMS、DBS 三者的边界,再往下推到三级模式和两个独立性。第一章的习题本质上是全书的骨架图,答得好不好,直接决定后面范式、事务、索引这些章节你是“背结论”还是“真理解”。下面我把这一章常见的题型拆开,逐类讲清楚每道题背后在考什么、怎么答不漏点、哪里最容易丢分,适合正在备考的学生、准备面试的转行者,以及想把基础概念重新捋一遍的从业者。
1. 先把第一章的考点地图摊开
1.1 四个基本概念为什么总被放在第一题
几乎每本教材的第一道名词解释都是“数据、数据库、数据库管理系统、数据库系统”。很多人觉得这是送分题,实际上这四个词的关系链条是整个学科的起点,答错一个,后面全歪。我见过的典型错误是把“数据库”和“数据库系统”当同义词用,写成“数据库是存储在计算机内、有组织、可共享的数据集合,包括硬件、软件和人员”——前半句对,后半句直接把两个概念缝在一起了。
正确的边界应该是这样的:数据是描述事物的符号记录,它的外延比数字大得多,文字、图形、声音、指纹都是数据,重点在于“符号”和“语义”两层——脱离语义的符号没有意义,“93”到底是分数、年龄还是编号,必须靠语境确定。数据库是长期存储在计算机内、有组织、可共享的大量数据的集合,它的三个关键词是“永久存储”“有组织”“可共享”,缺一个都不完整。数据库管理系统是位于用户与操作系统之间的一层数据管理软件,它的职责是科学地组织和存储数据、高效地获取和维护数据,是一套软件而不是一堆数据。数据库系统则是由数据库、数据库管理系统、应用程序和数据库管理员组成的整个系统,横跨软硬件和人。
我在带人做题时用的是一个很土但很好用的类比:数据是货,数据库是仓库,DBMS 是仓库的自动化管理系统(叉车、货架、出入库登记),数据库系统是整个物流中心,包括仓库、系统、业务人员和管理员。你答名词解释时把类比里的角色换成专业术语,基本不会串。另外提醒一句,很多题目会追问“数据库与文件系统的根本区别”,这道题的答案不在“有没有冗余”上,而在数据结构化和由 DBMS 统一管理控制这两点上,冗余只是结果,不是根因。
1.2 数据管理三阶段的对比怎么记才不串
数据管理技术的发展阶段是简答题常客,人工管理、文件系统、数据库系统三个阶段,问法通常是“三个阶段各有什么特点”或者“数据库系统阶段相比前两个阶段解决了什么问题”。这一段内容教材里一般是一张表,很多人考前突击背一遍,考场上只能想起“冗余小、共享高”六个字,分数自然上不去。我的经验是:别按阶段背,按维度横着背,把每个维度从人工到数据库的演变逻辑串成一条线,记起来反而牢。
| 对比维度 | 人工管理阶段 | 文件系统阶段 | 数据库系统阶段 |
|---|---|---|---|
| 数据保存 | 不长期保存,随程序结束而消失 | 长期保存为文件 | 长期保存,由 DBMS 统一管理 |
| 数据管理者 | 人(程序员自己) | 文件系统 | 数据库管理系统 |
| 数据面向对象 | 某个具体应用程序 | 某个具体应用程序 | 现实世界,面向全局 |
| 数据共享程度 | 无共享,冗余极大 | 共享性差,冗余大 | 共享性高,冗余低 |
| 数据结构化程度 | 无结构 | 记录内部有结构,整体无结构 | 整体结构化,数据之间建立联系 |
| 数据独立性 | 完全不独立 | 独立性差,改结构要改程序 | 有物理独立性和逻辑独立性 |
| 数据控制能力 | 应用程序自行控制 | 应用程序自行控制 | DBMS 提供安全性、完整性、并发控制、恢复 |
这张表真正要理解的只有三行。第一行是整体结构化:文件系统里每个文件自己内部有记录结构,但文件和文件之间没有关系,数据库把整个组织的数据看成一个整体来设计结构,这是“数据库”这个词里“库”的真正含义。第二行是数据独立性:这是数据库技术最核心的收益,程序和数据解耦,改数据存储方式不动程序,改数据逻辑结构也尽量不动程序,后面的三级模式和两级映像全是为了它服务的。第三行是统一控制:并发、恢复、完整性、安全性这四件事,文件系统阶段全靠程序员自觉,数据库阶段由 DBMS 兜底。
还有一道变体题常出现:“数据库系统阶段的数据冗余是否完全消除了?”答案是没有,只是把冗余控制在一个可控、可设计的范围内,有时候为了查询效率还会刻意保留少量冗余(后面讲范式时会看到反规范化)。这一小问丢分的人特别多,因为背表格的人只记住了“冗余小”。
提示:三阶段对比类题目,答完特点后务必补一句“这一阶段解决了上一阶段什么问题”,大多数评分点就在这句总结上。
2. 概念题:名词解释与判断题的答题模板
2.1 名词解释拿分的三层结构
第一章的名词解释数量多,但其实可以套一个统一的三层模板:定义 + 关键特征 + 与其他概念的区别或作用。只写定义最多拿一半分,因为阅卷看的往往是关键词覆盖。
以“实体”为例:第一层定义——客观存在并可相互区别的事物,可以是具体的人、事、物,也可以是抽象的概念或联系;第二层特征——实体由属性刻画,同类实体的集合叫实体集,实体集之间可以有联系;第三层区别——实体和属性是相对的概念,属性本身在更细的粒度下也可以看成实体,这种相对性就是后面做 E-R 图时判断粒度是否合适的依据。三层写完,这段答案基本无懈可击。
再以“码”这一组概念为例,这是第一章的必考组合,很多人把它们混成一锅:
| 概念 | 定义要点 | 记忆抓手 |
|---|---|---|
| 超码 | 能唯一标识元组的属性集合 | 只要唯一就算,可以有多余属性 |
| 候选码 | 能唯一标识元组且不含多余属性的属性集 | 最小性,去掉任何一个属性就不唯一 |
| 主码 | 从候选码中选定的一个 | 一个关系只能有一个 |
| 主属性 / 非主属性 | 包含在任一候选码中的属性 / 不包含的属性 | 注意是“任一候选码”,不是“主码” |
| 外码 | 本关系中用于引用另一关系主码的属性 | 体现关系之间的联系,可为空 |
这里最容易错的是主属性的判定。假设有关系 R(学号,身份证号,姓名),学号和身份证号都是候选码,那么学号和身份证号都是主属性,姓名是非主属性。很多人只盯着“主码是学号”,就把身份证号判成非主属性,直接扣分。判断主属性的正确姿势是:先把所有候选码全找出来,再取并集,落在里面的都是主属性。
外码这一条要补一句容易被忽略的:外码引用的是另一关系的主码,但它的取值有两种情况——要么是被引用关系中真实存在的值,要么是空值(前提是属性允许为空),这就是参照完整性约束的两条规则,第一章虽然只是提一句,但第六章会原样考回来。
2.2 判断题最爱的七个陷阱
判断题看着简单,实际是失分重灾区,因为它专挑“似是而非”的表述。我把历年常见的坑整理成一张速查表,考前扫一遍比刷十套题有用。
| 表述 | 正误 | 错在哪 |
|---|---|---|
| 数据库就是数据库系统 | 错 | 数据库只是数据集合,数据库系统包含 DBMS、应用和人员 |
| 数据库的冗余已经彻底消除 | 错 | 只能控制在可控范围,必要时保留 |
| 数据就是数字 | 错 | 数据的范畴包含一切符号记录 |
| 数据与信息的含义相同 | 错 | 数据是符号记录,信息是对数据加工后有意义的结果 |
| 有 DBMS 就等于有数据库系统 | 错 | 还要有数据库、应用和人员 |
| 关系模型和 E-R 模型都是逻辑模型 | 错 | E-R 模型是概念模型,面向现实世界,不面向具体机器 |
| 逻辑独立性是指应用程序与存储结构的独立 | 错 | 这是物理独立性,逻辑独立性说的是应用程序与逻辑结构的关系 |
这几条背后其实就两个底层判断标准:概念范畴的大小和独立性的方向。凡是把大概念说成小概念(“数据库就是数据库系统”)、把相对性质说成绝对性质(“冗余已彻底消除”)的表述,基本可以直接判错。凡是涉及独立性的,先问自己一句:变的是外模式还是物理存储?变物理存储对应物理独立性,变逻辑结构对应逻辑独立性,这个顺序不要反。
提示:判断题答错时不要只记结论,把“错在哪半句”写在旁边,这一章的判断题重复率极高,标注一遍等于复习三遍。
3. 数据模型与 E-R 图:从概念到图纸
3.1 三种数据模型与两类模型的边界
数据模型这一节的题,考法通常是“数据模型的三要素是什么”和“概念模型、逻辑模型、物理模型有什么区别”。三要素的答案是数据结构、数据操作、完整性约束,这三者不是并列关系,而是有层次的:数据结构是基础,它决定了数据怎么组织、联系怎么表示;数据操作是建立在这种结构之上的操作集合(查询、更新);完整性约束是结构上必须满足的规则,保证数据合法。答这道题时,如果能各举一个例子,分数会更稳:关系模型的数据结构是二维表,操作是关系代数与 SQL 那套并、差、投影、选择,约束是实体完整性、参照完整性和用户自定义完整性。
两级模型的区分是另一个常错点。我把边界整理成一句话:概念模型是给人看的,逻辑模型是给机器设计看的,物理模型是给存储实现看的。
| 模型层次 | 面向对象 | 典型代表 | 在开发流程中的位置 |
|---|---|---|---|
| 概念模型 | 用户、业务人员 | E-R 模型 | 需求分析阶段,画业务图 |
| 逻辑模型 | 数据库设计者 | 层次、网状、关系模型 | 设计阶段,转成表结构 |
| 物理模型 | DBMS 与存储系统 | 索引、存储结构、存取路径 | 实现阶段,由 DBMS 屏蔽 |
这里有个很实用的理解方式:概念模型不关心你最终用 MySQL 还是别的什么库,它只描述“现实世界里有什么、怎么联系”;逻辑模型必须选定范式,比如关系模型;物理模型在多数关系数据库里其实被 DBMS 自动处理了,所以做应用开发的人平时接触最多的是前两个层次。这也解释了一道经典题——“为什么 E-R 模型不是逻辑模型”,答案就在于它不依赖任何具体的数据组织方式,不能直接被机器实现,必须先转换成关系模型才能落地。
3.2 E-R 图综合题的画法与常见扣分点
第一章的压轴题往往是“根据描述画出 E-R 图并转换为关系模式”,描述通常是仓库、零件、供应商这一类。这类题的分值高,扣分点也集中,我总结了四步走法。
第一步,先圈名词,再分实体和属性。描述里出现的每个名词都要过一遍:能独立存在、需要被单独管理的,是实体;只能依附于某个实体、不需要单独管理的,是属性。比如“仓库有仓库号、面积、地点”里,仓库是实体,仓库号、面积、地点是属性。判断粒度的经验法则是:如果需要为它单独建表、需要被别的东西引用,它就是实体。
第二步,先定联系的种类,再连线段。两个实体集之间的联系类型由业务语义决定:一个仓库可以存放多种零件,一种零件可以存放在多个仓库,这是多对多;一名教师可以指导多名学生,一名学生只能有一位指导教师,这是一对多;一个班级只有一个班长,一个班长只属于一个班级,这是一对一。这里最容易被扣分的是“一对多”被画成“多对多”,因为大多数业务描述是口语化的,需要反复读题确认“一个 X 只能对应几个 Y”。
第三步,给联系挂属性。联系本身也可以有属性,这是本章最容易漏的点。比如“仓库—存放—零件”这个多对多联系上的“存放量”,它既不属于仓库也不属于零件,只属于这次存放行为,就必须挂在联系上。很多人图省事把它挂到零件上,结果一个零件存在多个仓库时就无法区分,直接判错。
第四步,转关系模式,三条规则要背牢:
- 每个实体集转换成一个关系模式,实体的码就是关系的码。
- 一对多联系,把“一”端的码加到“多”端作为外码,不需要新建关系。
- 多对多联系,必须单独转换成一个关系模式,码是两个实体码的组合,联系的属性一并带上。
以上面的例子为例,转换结果是三张表:仓库(仓库号,面积,地点)、零件(零件号,名称,规格)、存放(仓库号,零件号,存放量)。注意“存放”这张表的码是(仓库号,零件号)的组合,不能只取其中一个。我见过有人写“存放(仓库号,零件号,存放量)”但把仓库号单独当主码,那就等于说每个仓库只能放一种零件,语义完全反了。
提示:E-R 图综合题写完一定要做一次反向验证——拿着你的图,把题目描述的每一句话念一遍,看能否在图上一一对应上。凡是念不通的地方,就是漏画或者画错的地方。
4. 三级模式与两级映像:全章最硬的一块
4.1 模式、外模式、内模式的定位
三级模式结构是第一章区分度最高的考点,选择题、简答题、判断题都可能出现。很多人背了“外模式、模式、内模式”这三个词,但说不清谁对谁,考试换个问法就崩。我建议按“站在谁的角度看”来记:
| 模式 | 别称 | 视角 | 内容 | 数量 |
|---|---|---|---|---|
| 外模式 | 子模式、用户模式 | 应用程序和用户的视角 | 用户能看到的那部分数据的逻辑结构 | 多个 |
| 模式 | 逻辑模式 | 全体数据的全局视角 | 全部数据的逻辑结构和特征 | 只有一个 |
| 内模式 | 存储模式 | 存储系统的视角 | 数据的物理存储结构与存取方式 | 只有一个 |
理解这一层的关键是“一个数据库只有一个模式和一个内模式,但可以有多个外模式”。原因是模式描述全局,内模式描述一份物理存储,都只能有一个;而不同应用关心的数据不一样,人事系统只关心员工表和部门表,财务系统只关心工资表和报销表,每个应用对应一个外模式,所以外模式可以有多个。这也解释了外模式的价值:它让每个应用只看到自己需要的数据,其余部分被屏蔽掉,天然带了一层安全性。
这三者之间的关系是层层依赖:外模式建立在模式之上,模式建立在内模式之上。这里有个非常容易考反的点——内模式不依赖外模式,如果你在题目里看到类似“外模式变化会影响内模式”的说法,直接判错。
4.2 两级映像与两个独立性的推导
两级映像和两个独立性是这章的核心难点,也是全书后面多次引用的基础。我先给结论:外模式/模式映像保证逻辑独立性,模式/内模式映像保证物理独立性。然后说推导逻辑。
先看外模式/模式映像。它的作用是定义外模式与模式之间的对应关系,一个外模式对应一个映像。假设某天业务需要给员工表加一个“邮箱”字段,模式变了,但人事系统那个外模式里并不需要邮箱,那么只要调整这个映像,让外模式保持不变,应用程序一行代码都不用改。这就是逻辑独立性——应用程序与数据库的逻辑结构相互独立。反过来,如果模式变了以后必须改应用,说明缺少有效的映像,题目里常见的错项就是把这种情况描述成“提高了数据独立性”,其实恰恰相反。
再看模式/内模式映像。它定义的是数据的逻辑结构与物理存储之间的对应关系,一个数据库只有一个。假设文件系统那一层换了存储方式,或者给某张表加了个索引、把表挪到另一个存储位置,逻辑结构没变,只要调整这个映像,模式和应用程序都不受影响。这就是物理独立性——应用程序与物理存储相互独立。
这两个独立性的价值,可以理解为把“变化的传播”切断了一次。没有映像的时候,改存储要改逻辑结构、改逻辑结构要改程序,一处变动全链路震动;有了映像,两个断点把震动拦住,改存储最多改映像,改逻辑结构最多改映像和应用里引用了变化字段的那部分。我常跟人说,这两级映像是数据库技术里性价比最高的设计之一,它没带来任何新功能,却让系统的维护成本下降了一个数量级。
| 映像 | 位置 | 对应独立性 | 典型场景 |
|---|---|---|---|
| 外模式/模式映像 | 外模式与模式之间 | 逻辑独立性 | 表结构新增字段不影响旧应用 |
| 模式/内模式映像 | 模式与内模式之间 | 物理独立性 | 加索引、改存储位置不影响逻辑结构 |
注意:这里必须分清“模式”和“内模式”的层级,模式是逻辑层,内模式是物理层。写简答题时如果顺序颠倒,写“模式/外模式映像保证物理独立性”,阅卷基本直接判零。
5. 简答题与综合应用:把答案写成结构
5.1 DBMS 的功能与 DBA 的职责怎么答不漏点
“数据库管理系统有哪些功能”是最标准的简答题,答案通常覆盖六块:数据定义、数据组织存储与管理、数据操纵、数据库的事务管理和运行管理、数据库的建立和维护、其他功能(通信、数据转换等)。这六块直接背容易漏,我用的方法是按“一个应用从无到有的生命周期”串:先建库(定义、建库建表)→ 日常运行(组织存储、查询更新)→ 保证运行不崩(事务管理、并发、恢复、安全、完整性)→ 长期维护(备份恢复、性能监控、重组重构)。按这条线走,六块基本不会漏,而且能自然说出每一块解决的问题。
DBA 的职责是另一道常考题,答案围绕建库、定义结构、权限管理、日常监控、性能调优、备份恢复这几件事。这里要补一个很多人忽略的点:DBA 和普通开发者的边界。开发者关心的是怎么把业务逻辑落到表结构上,DBA 关心的是这个结构在并发量上来以后会不会锁死、索引是否够用、备份策略能不能支撑恢复目标。答这类题时,如果能说出“DBA 的职责不仅要覆盖日常运维,还要参与到数据库设计阶段”,往往能拉开档次。
还有一道容易被轻视的题:“数据库系统的组成包括哪些部分”。标准答案是硬件、软件(DBMS、编译系统、应用开发工具)和人员(终端用户、应用程序员、DBA),其中人员这部分的重点在 DBA。很多人写完整套软硬件就停了,人员一项空着,这属于典型的漏答,简答题只要漏掉一个维度就是半分往下。
5.2 综合题的答题顺序与时间分配
第一章的综合应用题通常是小分值多问号,比如一题四问:给一个业务描述,要求画 E-R 图、转关系模式、指出主码外码、判断是否存在不合理设计。四问的分值分布大概是 4:3:2:1,答题顺序建议按分值走,但画图一定要先打草稿。
我的实际操作顺序是:先在草稿纸上把实体、属性、联系列成清单(这一步花两分钟,能省掉后面反复改图的时间),再在答题纸上画正式图,边画边核对描述里的每一句话,然后转关系模式,最后标主外码。标主外码时用符号标记(下划线标主码,波浪线标外码),比文字描述省时间也更清楚。这里有个现实问题要提醒:纸面作答的 E-R 图,矩形是实体、椭圆是属性、菱形是联系、连线标注联系类型(1:1、1:n、m:n),这四样齐全才叫完整的图,缺联系类型标注是最常见的丢分原因,很多人图画对了但没标基数,照样扣分。
另一类综合题是“给出一个具体场景,问采用数据库系统相对文件系统有什么好处”。这种题不要泛泛而谈,直接按“解决了什么问题”来组织:数据冗余与不一致、数据共享困难、数据独立性差、缺少统一的安全与并发控制手段。每条后面跟一句具体到场景的解释,比如“多个部门各自维护一份客户名单,改一处要同步多处,容易不一致”,这比抽象论述得分高得多。
6. 常见问题与排查:做题错误的典型样本
6.1 十个高频错点速查表
我把这一章批改和答疑时反复出现的错误整理成一张表,考前一天看这张表比重新翻书有效。这些错误有个共同点:都不是知识盲区,而是概念边界模糊导致的“滑倒”。
| 序号 | 高频错点 | 正确理解 |
|---|---|---|
| 1 | 把数据库和数据库系统混为一谈 | 数据库是数据集合,系统含软件、硬件和人员 |
| 2 | 认为数据只指数字 | 数据是符号记录,含文字、图形、声音等 |
| 3 | 主属性按主码判断 | 主属性是任一候选码中的属性 |
| 4 | 认为数据库的冗余已彻底消除 | 冗余被控制在可控范围 |
| 5 | 把 E-R 模型归为逻辑模型 | E-R 是概念模型 |
| 6 | 多对多联系不单独建关系 | 多对多必须转换为独立关系模式 |
| 7 | 联系上的属性挂到实体上 | 只属于联系本身的属性必须挂在联系上 |
| 8 | 逻辑独立性说成对存储结构的独立 | 逻辑独立性针对逻辑结构,物理独立性针对存储 |
| 9 | 认为外模式只能有一个 | 外模式可以有多个,模式和内模式各一个 |
| 10 | 内模式依赖外模式 | 依赖方向是外模式依赖模式、模式依赖内模式 |
其中第 7 条和第 10 条我认为最值得单独强调。第 7 条是 E-R 图题的“隐形杀手”,因为图看起来没问题,只是属性的位置错了,肉眼很难发现,但语义上已经错了。第 10 条是判断题的经典陷阱,出题人只要把依赖方向反过来,就能筛掉一批只背名词的考生。依赖关系永远是单向向上收缩的:外模式依赖模式,模式依赖内模式,反过来不成立。
6.2 复习顺序与自测方法
这一章的内容看着散,其实有一条主链:数据与信息 → 数据管理的三个阶段 → 数据库系统的特点 → 数据模型(概念、逻辑、物理)→ 三级模式与两级映像。复习时顺着这条链走,每一环都能用上一环作为解释,比你按教材目录从头背一遍强很多。我的具体建议是三步:
第一步,画一张自己的结构图(手画,不用软件),把上面那条主链画出来,每个节点旁边写三个关键词。这一步的作用是暴露断点——你画不下去的地方,就是没真正理解的地方。
第二步,用“为什么”自问自答。为什么需要数据库?因为文件系统共享性差、独立性差、缺乏统一控制。为什么需要三级模式?因为要屏蔽不同层次的差异、支持不同视角。为什么需要两级映像?因为要切断变化的传播链条。能连续问五个“为什么”都答得上来,这一章就算过关。
第三步,用真题反向检验。拿历年题里的判断题和简答题做,但不要只对答案,遮住答案自己口述一遍,再对照评分点。口述的作用是强迫你把“感觉懂”变成“说出来”,这两者的差距在这一章特别明显——很多人默写得出三级模式,但被问“内模式换了会影响谁”就卡住了。
提示:如果你只有一天时间复习这一章,优先级排序是三级模式与两级映像 > E-R 图与转换 > 数据管理三阶段 > 基本概念名词解释。前面两块是重难点且能出综合题,后两块是记忆型送分题,性价比不同。
最后分享一个我自己的习惯:每做完一道第一章的题,我都会在旁边补一句“这道题在整本书里对应哪一章”。比如“外码”对应参照完整性,“实体完整性”对应关系模型约束,“多对多转换”对应后面的规范化设计。这么做一开始很慢,但两三套题之后你会发现,第一章的概念全都有了落点,后面学到范式、完整性约束、事务的时候,脑子里会自动回连到这些题目上。这一章看起来全是死记硬背,实际上它是全书唯一一处把整体框架一次性交代完的地方,把它当骨架图来画,而不是当初级词汇表来背,后面的路会好走很多。