【软考备考】数据库详解:三级模式、ER 转换、关系代数、范式判断一篇打通(附 10 道练习)

发布时间:2026/7/17 14:11:18
【软考备考】数据库详解:三级模式、ER 转换、关系代数、范式判断一篇打通(附 10 道练习) 操作系统通关之后进军数据库——软考里少有的上午题 下午大题双重考点模块。上午题的考法集中在四块三级模式两级映像概念、ER 图转关系模式计数、关系代数行列计算、范式判断阶梯推理。这篇一次打通下午大题的 ER 转换和范式分析也正是这些规则的放大版。一、三级模式两级映像数据库的三层架构数据库把数据分成三层来描述外模式用户模式 ← 用户/应用程序看到的局部视图 概念模式模式 ← 数据库全局的逻辑结构有哪些表、什么字段 内模式存储模式 ← 数据在磁盘上怎么存文件组织、索引方式类比 Java 开发外模式是接口返回的 VO模式是实体类的设计内模式是底层的存储实现。两级映像与两种独立性必考年年送分外模式/模式映像 → 逻辑独立性表结构变了比如加个字段调整映像外模式不变应用程序不用改模式/内模式映像 → 物理独立性存储方式变了比如换个索引、换个磁盘组织模式不变上层完全无感。记忆法改动发生在哪一层独立性就保护它的上层不受影响。物理层改动 → 物理独立性保模式逻辑层改动 → 逻辑独立性保外模式和应用程序。二、ER 模型与转换背三条规则就够ER 图三要素实体矩形如学生、课程、属性椭圆、联系菱形分 1:1、1:n、m:n。转关系模式表的规则就三条每个实体 → 一张表实体的主键就是表的主键1:n 联系 → 不单独成表把 1 端实体的主键塞进 n 端的表里当外键并入多端m:n 联系 → 必须单独成表表的主键 两端实体主键的组合联系的属性也放这张表。于是有了计数口诀上午题直接考关系模式数 实体数 m:n 联系数例3 个实体、1 个 1:n、1 个 m:n → 3 1 4 张表1:n 并入多端不产生新表。三、关系代数行和列的四则运算并 ∪、交 ∩、差 −要求两个关系结构相同同样的列。R 有 8 行、R∩S 有 3 行则 R−S 8−3 5 行——差就是在 R 里、不在交集里。笛卡尔积 ×两个关系的全排列组合列数相加行数相乘。R(3列5行) × S(4列6行) 7 列 30 行。选择 σ 和投影 π选择按条件挑行σ 成绩≥60投影挑列π 姓名,成绩。自然连接 ⋈笛卡尔积的智能版——按同名属性相等配对并且去掉重复的同名列。R(A,B,C) ⋈ S(B,C,D) 的结果是 4 列A,B,C,D不是 7 列——这是它和笛卡尔积最本质的区别。四、范式判断顺着阶梯往上爬范式是衡量表设计健不健康的标准一级比一级严格。判断一个关系模式最高达到第几范式顺着梯子爬在哪一级摔下来就停在哪。1NF地基所有属性原子不可再分。基本默认满足考点在往上三级。2NF消除部分依赖。当主键是组合键多个属性联合时非主属性不能只依赖主键的一部分。例选课(学号, 课程号, 姓名, 成绩)主键 (学号, 课程号)。成绩依赖完整的组合键没问题但姓名只依赖学号——部分依赖摔倒在 2NF 门前最高1NF。3NF消除传递依赖。非主属性不能拐弯依赖主键。例学生(学号, 姓名, 系号, 系主任)主键学号。学号→系号系号→系主任——系主任通过系号传递依赖于学号摔倒在 3NF 门前最高2NF。BCNF再进一步每个决定因素依赖的左边都必须是候选键。软考里明确到 BCNF 的题较少知道定义即可。解题三步先找主键是不是组合键组合键 → 查部分依赖有没有非主属性只依赖一半→ 有则止步 1NF查传递依赖A→B、B→C 的链条→ 有则止步 2NF都干净 → 至少 3NF。五、10 道练习题基础题1~51.在数据库的三级模式结构中描述数据库全局逻辑结构的是 。A. 外模式 B. 内模式 C. 概念模式 D. 存储模式2.保证数据库逻辑数据独立性的是 。A. 模式/内模式映像 B. 外模式/模式映像 C. 外模式/内模式映像 D. 无需映像3.关系 R 有 3 列 5 行关系 S 有 4 列 6 行则 R×S 的结果为 。A. 7 列 11 行 B. 12 列 30 行 C. 7 列 30 行 D. 4 列 6 行4.ER 模型中的 m:n 联系转换为关系模式时其主键应为 。A. 任一端实体的主键 B. 自动生成的序号 C. 联系本身的属性 D. 两端实体主键的组合5.关系模式满足 1NF 的要求是 。A. 所有属性原子不可再分 B. 非主属性完全依赖于主键 C. 不存在传递依赖 D. 存在候选键进阶题6~10带坑6.某 ER 图中有 3 个实体实体之间有 1 个 1:n 联系和 1 个 m:n 联系最少可转换为 个关系模式。A. 3 B. 4 C. 5 D. 67.关系模式 选课(学号, 课程号, 姓名, 成绩)主键为(学号, 课程号)存在函数依赖(学号,课程号)→成绩学号→姓名。该关系模式最高属于 。A. 1NF B. 2NF C. 3NF D. BCNF8.关系模式 学生(学号, 姓名, 系号, 系主任)主键为学号存在函数依赖学号→姓名学号→系号系号→系主任。该关系模式最高属于 。A. 1NF B. 3NF C. BCNF D. 2NF9.关系 R(A, B, C) 有 3 行关系 S(B, C, D) 有 4 行R 与 S 自然连接后的结果列数为 。A. 7 B. 4 C. 3 D. 1210.关系 R 与 S 结构相同R 有 8 行S 有 5 行R∩S 有 3 行则 R−S 的行数为 。A. 3 B. 8 C. 5 D. 13六、答案与详解1. C全局逻辑结构 概念模式模式。外模式是用户视角的局部内模式/存储模式是物理实现——注意内模式和存储模式是同一层的两个名字放一起当干扰项。2. B逻辑独立性 ↔ 外模式/模式映像逻辑层变动保外模式不动应用程序无感物理独立性 ↔ 模式/内模式映像。方向记反是最常见的失分记改动在哪层保它的上层。3. C笛卡尔积列相加347行相乘5×630。选 B 的把列也相乘了选 A 的把行相加了。4. Dm:n 联系单独成表主键 两端主键的组合——单拿哪一端都标识不了一条联系记录一个学生选多门课、一门课被多人选只有学号课程号合起来才唯一。5. A1NF 只要求原子性。B 是 2NF 的要求C 是 3NF 的要求——范式的阶梯是层层加码的别把高层的条件安到 1NF 头上。6. B计数口诀实体数 m:n 联系数 3 1 4。1:n 联系并入 n 端不产生新表。选 C 的把 1:n 也单独成表了。7. A三步法主键是组合键学号课程号→ 查部分依赖姓名只依赖学号只赖一半→ 止步1NF。组合主键 部分依赖是 1NF 判断题的标准长相。8. D主键学号是单属性天然无部分依赖 → 过 2NF但 学号→系号→系主任 构成传递链系主任传递依赖主键 → 止步2NF。和第 7 题对照看一个是赖一半部分一个是拐个弯传递软考就这两招。9. B本题大坑自然连接按同名属性B、C配对并去掉重复的同名列→ 结果是 A, B, C, D 共4 列。选 A7 列的是把自然连接当成了笛卡尔积——笛卡尔积才是 347 列。至于行数取决于 B、C 的取值配对情况题目没给数据不问行数正是此题的严谨之处。10. CR−S 在 R 中但不在 S 中的行。R 有 8 行其中 3 行也在 S 中即 R∩S所以 R−S 8−3 5 行。选 A3 行的把差当成了交——R−S 和 R∩S 互补3 5 8 R 的全部。七、五句话带走三级模式外模式视图、模式全局逻辑、内模式存储逻辑独立性靠外/模式映像物理独立性靠模式/内映像——改动在哪层保它上层ER 转换实体必成表1:n 并入多端m:n 单独成表组合主键表数 实体数 m:n 数笛卡尔积列加行乘自然连接去同名重复列范式三步部分依赖止步 1NF传递依赖止步 2NF全干净上 3NF。下一篇预告数据库第二篇——SQL 与事务SELECT 多表连接查询怎么写、WHERE 和 HAVING 的分工一个管行一个管组、以及事务的 ACID 与并发带来的脏读/不可重复读/幻读。下午题的 SQL 填空全是这几个套路。两个提示一第 9 题不问行数的说明建议保留——读者里一定有较真行数怎么算的这句话能帮你挡掉评论区的疑问还显得严谨二范式部分如果之后要配下午真题做加餐直接把三步法往真题上一套就是一篇新博客骨架我已经给你留好了。