# 1. 3NF 与 BCNF 的差异,BCNF 要求每个非平凡函数依赖的左侧都是超键? A 任何 3NF 关系都自动满足 BCNF B BCNF 要求每个非平凡函数依赖的左侧都是超键,因此比 3NF 更严格,且可能牺牲依赖保持性 ✓ 正确答案 C BCNF 允许右侧是主属性但左侧非超键的依赖 D 3NF 与 BCNF 等价,只是叫法不同
# 2. 候选键的求解算法,属性闭包(Attribute Closure)X+ 的计算? A 候选键是闭包等于全部属性的任意属性集 B 闭包算法要求属性集必须非空 C 闭包只需计算一次即可 D 属性集 K 是候选键当且仅当 K+ 等于全部属性且 K 的任何真子集都不满足 ✓ 正确答案
# 3. 函数依赖(FD)的形式化定义,X → Y 的语义与公理化系统? A X→Y 表示任意两个元组 X 值不同则 Y 值不同 B X→Y 表示若两个元组 X 值相同则 Y 值必相同,且 Armstrong 公理系统可靠且完备 ✓ 正确答案 C 平凡函数依赖指 X⊆Y 恒成立 D 函数依赖与唯一约束无关
# 4. 最小函数依赖集(Minimal Cover)的求解算法,右部单属性化、去除冗余、化简左侧? A 右部必须是多属性 B 最小覆盖是唯一的 C 最小覆盖要求右部单属性、无冗余依赖、左侧无冗余属性,且与原始依赖集等价 ✓ 正确答案 D 最小覆盖不需要保持逻辑等价
# 5. 范式选择的约束冲突,高范式 vs 性能(反范式)的实际考量? A 高范式一定能提升查询性能 B 反范式完全消除更新异常 C 反范式以引入冗余换取更少的 JOIN 与更快的读,但需承担一致性维护成本 ✓ 正确答案 D 数据仓库普遍采用 3NF 高范式
# 6. 连接依赖(JD),五范式与无损分解的关系? A 5NF 要求每个连接依赖都被候选键蕴含,是所有无损范式中最严格的 ✓ 正确答案 B 连接依赖与函数依赖无关 C 4NF 处理连接依赖,5NF 处理多值依赖 D 无损分解与连接依赖无关
# 7. 更新异常(Update Anomaly)的三种类型与各范式的解决方案? A 更新异常只有修改异常一种 B 插入、删除、修改三类异常源于冗余,通过规范化消除部分依赖与传递依赖解决 ✓ 正确答案 C 规范化会增加更新异常 D 删除异常与冗余无关
# 8. 传递函数依赖 X → Y → Z 的识别? A 传递依赖 X→Y→Z 需要 Y 能决定 X B 传递依赖不影响 3NF C 存在 学号→系别→系主任 时,系主任对学号是传递依赖,应拆分消除 ✓ 正确答案 D 传递依赖是指 X 直接决定 Z
# 9. 函数依赖 X → Y 与 X → → Y 的区别? A X→Y 与 X→→Y 完全等价 B 多值依赖比函数依赖更弱,总是成立 C 多值依赖只在 5NF 中出现 D 函数依赖是多值依赖的特例,多值依赖用于解决 4NF 的冗余 ✓ 正确答案
# 10. 非平凡函数依赖 X → Y 中 Y ⊈ X 的含义? A Y ⊈ X 表示 Y 是 X 的子集 B 非平凡函数依赖 X→Y 中 Y 含 X 之外属性,是规范化分析的对象 ✓ 正确答案 C 平凡函数依赖也会产生冗余 D 非平凡依赖一定成立
# 11. ER 模型到逻辑模型的常见错误,M:N 误拆为 1:N、ISA 误用外键? A M:N 联系可直接在多方添加外键 B M:N 联系应新建连接表存放两个外键,ISA 继承应用继承映射而非普通外键 ✓ 正确答案 C ISA 继承必须用外键 D 多值属性应直接放在主表中
# 12. ISA 继承的转换,单表继承(Single Table)、类表继承(Class Table)、具体表继承(Concrete Table)? A 类表继承查询无需 JOIN B 单表继承无任何缺点 C 单表继承会产生大量 NULL,类表继承需 JOIN,具体表继承会冗余公共字段 ✓ 正确答案 D 具体表继承最适合多态查询
# 13. 一对一(1:1)联系的转换,外键放在哪一侧? A 1:1 联系必须建中间表 B 外键必须放在部分参与的一侧 C 外键应放在完全参与的一侧,并加 UNIQUE 约束 ✓ 正确答案 D 外键可随机放置,无需约束
# 15. PostgreSQL 中表继承(INHERITS)的实现,父表查询是否返回子表行? A 子表不继承父表列 B 查询父表默认不包含子表 C 查询父表默认包含子表行,用 ONLY 可只查父表 ✓ 正确答案 D 父表与子表有强外键约束
# 16. 类表继承(Class Table Inheritance),每个类一张表,主键关联? A 子表主键同时作为父表外键,保证一一对应,查询需 JOIN ✓ 正确答案 B 子表与父表无关 C 类表继承会产生大量 NULL D 类表继承查询无需 JOIN
# 17. MySQL 中无原生继承,如何实现(单表加 type 列)? A 单表 + type 列不会产生 NULL B MySQL 原生支持 INHERITS C MySQL 自动为子类建表 D MySQL 无原生继承,常用单表 + type 判别列模拟多态 ✓ 正确答案
# 18. PostgreSQL 中 ONLY 关键字与 INHERITS 的协同? A ONLY 使查询包含更多子表 B ONLY 限定只操作父表本身,不包含继承的子表 ✓ 正确答案 C ONLY 只用于 DDL D ONLY 与继承无关
# 19. PostgreSQL 中 partition 与 inheritance 的关系? A 声明式分区不支持分区裁剪 B 分区与继承完全无关 C 声明式分区底层是继承表,由数据库自动管理,PG 10 之前用继承手工实现分区 ✓ 正确答案 D 继承必须手工加触发器
# 20. PostgreSQL 中约束 INHERIT 与 NO INHERIT? A 主键约束会自动继承 B CHECK 约束默认继承到子表,NO INHERIT 可阻止其传播 ✓ 正确答案 C 所有约束都默认继承 D NO INHERIT 使约束更强
# 21. 现代 ORM(Hibernate)中的继承映射策略? A 只有一种映射策略 B SINGLE_TABLE 用判别列区分,JOINED 每个类一张表,TABLE_PER_CLASS 每类一张完整表 ✓ 正确答案 C JOINED 查询无需 JOIN D TABLE_PER_CLASS 无冗余
# 22. PostgreSQL 中 PERIOD 类型的实现? A 只能用两列无法用范围类型 B PG 原生支持 PERIOD 类型 C 范围类型无法建索引 D PG 无原生 PERIOD,用范围类型如 tstzrange 表达时期,配合 EXCLUDE 约束控制重叠 ✓ 正确答案
# 23. SQL:2011 时态表(Temporal Table)的标准化,SYSTEM_TIME、APPLICATION_TIME? A APPLICATION_TIME 描述事务时间 B SYSTEM_TIME 由应用维护 C 时态表只有一种时间维度 D SYSTEM_TIME 由数据库维护事务时间,APPLICATION_TIME 由应用维护有效时间,双时态表同时具备两者 ✓ 正确答案
# 24. 历史快照表(History Table)的设计模式,触发器、CDC、专用审计? A 触发器历史表强一致但影响性能,CDC 基于日志无侵入,专用审计表依赖应用 ✓ 正确答案 B CDC 影响业务表性能 C 触发器历史表对性能无影响 D 三种模式完全相同
# 25. 审计日志(Audit Log)的实现,触发器、log 表、CDC? A 触发器审计强一致但影响性能,CDC 基于日志无侵入,独立 log 表灵活但依赖应用 ✓ 正确答案 B 审计日志只记录新值 C 触发器不影响性能 D 审计日志与历史表完全相同
# 26. 有效时间(Valid Time)与事务时间(Transaction Time)的双时态(Bi-Temporal)建模? A 双时态表只有一个时间维度 B 有效时间与事务时间相同 C 有效时间由应用维护、事务时间由数据库维护,双时态表同时记录两者 ✓ 正确答案 D 事务时间由应用维护
# 27. 闪回查询(Flashback Query)的实现,Oracle SCN、PostgreSQL xmin? A Oracle 用 AS OF SCN/TIMESTAMP 查询历史,基于 UNDO;PostgreSQL 依赖 MVCC 与 PITR ✓ 正确答案 B PostgreSQL 原生支持 AS OF SCN C 闪回查询不需要历史数据 D Oracle 与 PostgreSQL 闪回机制相同
# 28. PostgreSQL 中 xmin 隐藏列? A xmin 记录行的物理位置 B xmin 记录插入该行版本的事务 ID,是 MVCC 可见性判断的基础 ✓ 正确答案 C xmin 与 MVCC 无关 D xmin 是业务主键
# 29. 审计日志的不可篡改性(Hash Chain)? A 哈希链与审计日志无关 B 哈希链不检测篡改 C 哈希链只保护链尾 D 每条记录包含前一条的哈希,篡改会破坏链完整性从而被检测 ✓ 正确答案
# 30. 闪回恢复(Flashback Recovery)的应用? A PostgreSQL 原生支持闪回表 B 闪回恢复必须重放整个备份 C Oracle 提供闪回表/闪回数据库等机制,PostgreSQL 通常依赖 WAL 的 PITR 恢复 ✓ 正确答案 D 闪回恢复只能恢复整个数据库
# 31. Armstrong 公理(自反律、增广律、传递律)及其推论(合并律、伪传递律、分解律)的完整推导? A 合并律由 X→Y 且 X→Z 推出 X→YZ,分解律由 X→YZ 推出 X→Y ✓ 正确答案 B 合并律不能由基本公理推导 C 自反律表示 X→X 恒真因此无意义 D 增广律只在候选键时成立
# 32. 数据冗余(Redundancy)的类型,值冗余、键冗余、计算冗余? A 所有冗余都应避免 B 值冗余减少 JOIN 但引入一致性风险,计算冗余可用物化视图维护 ✓ 正确答案 C 键冗余增加存储但不影响一致性 D 计算冗余与派生数据无关
# 33. PostgreSQL 表继承(INHERITS)的历史角色,声明式分区出现之前如何用继承实现分区与多态?它有哪些限制? A 旧式分区完全自动 B 继承 + CHECK + 触发器/规则实现分区,但需手工维护、易出错 ✓ 正确答案 C 继承分区没有分区裁剪 D 触发器分区无需 CHECK 约束
# 34. ER 模型转换为关系模式的基本规则,实体集、联系集、多值属性的转化? A 多值属性可并入主表 B 多值属性应单独建表,M:N 联系需新建联系表 ✓ 正确答案 C 弱实体不需要独立表 D 1:N 联系外键放一方
# 35. 多元联系(N 元)的转换,复杂多元联系如何分解为二元? A 多元联系与二元联系语义等价 B 多元联系必须分解为二元联系 C 多元联系直接建一张联系表,保存各参与实体主键,分解为二元联系需谨慎保持语义 ✓ 正确答案 D 多元联系无需联系表
# 36. 多对多(M:N)联系的转换,必须新建联系表(连接表)? A M:N 必须新建连接表,保存双方外键并携带联系属性 ✓ 正确答案 B M:N 可直接在任一方加外键 C M:N 联系表主键只能是单列 D M:N 无需表达联系属性
# 37. PowerDesigner、ER/Studio、dbdiagram.io 的 ER 建模工具对比? A dbdiagram.io 不支持 DDL 导出 B 所有工具都免费 C PowerDesigner 是重型商业工具,dbdiagram.io 是轻量在线工具,按团队规模与预算选择 ✓ 正确答案 D PowerDesigner 不支持反向工程
# 38. Chen 记法与 Crow's Foot 记法的差异? A Chen 用菱形表示联系、椭圆表示属性,Crow's Foot 用连线符号表达基数 ✓ 正确答案 B 两种记法相同 C Crow's Foot 用菱形表示联系 D Chen 记法只用于物理模型
# 39. 具体表继承(Concrete Table Inheritance),每个类一张完整表? A 具体表继承支持统一多态查询 B 具体表继承无冗余 C 具体表继承查询子类需 JOIN D 每个子类一张完整表,无 JOIN 但公共字段冗余、多态查询需 UNION ALL ✓ 正确答案
# 40. 单表继承(Single Table Inheritance)的取舍,所有字段在父表,类型列区分? A 单表继承查询需 JOIN B 单表继承无 NULL C 所有字段放一张表,用 type 列区分,查询简单但 NULL 冗余与扩展性差 ✓ 正确答案 D 单表继承不能区分类型
# 41. Partition by Inheritance 的应用? A 继承分区只在 PG 10 后可用 B 继承分区完全自动 C 继承分区不支持分区裁剪 D 用继承 + CHECK 约束 + 触发器路由实现分区,需手工维护 ✓ 正确答案
# 42. SQL Server 中无继承,多态如何实现? A SQL Server 无原生继承,可用单表 type 列或类表外键关联模拟多态 ✓ 正确答案 B SQL Server 原生支持 INHERITS C SQL Server 无法模拟多态 D SQL Server 自动建子表
# 43. SCD Type 2 的实现,effective_date、end_date、is_current 字段? A 用 effective_date/end_date/is_current 保留历史版本,不覆盖旧记录 ✓ 正确答案 B SCD Type 2 直接覆盖旧记录 C SCD Type 2 不保留历史 D is_current 用于区分列
# 44. 慢变化维(Slowly Changing Dimension, SCD)类型 1、2、3、4、6 的差异? A Type 1 保留完整历史 B Type 2 直接覆盖 C Type 1 覆盖不保留历史,Type 2 新增版本保留历史,Type 6 是混合方案 ✓ 正确答案 D Type 3 保留全部历史
# 45. 时序数据建模的四种模式,append-only、snapshot、delta、temporal table? A snapshot 存储开销最小 B append-only 会覆盖旧数据 C append-only 只追加适合高吞吐事件,snapshot 存全量快照开销大,delta 存增量变化 ✓ 正确答案 D delta 存储开销最大
# 46. GDPR / 数据删除请求与历史数据保留的冲突? A 历史数据必须完整保留 B GDPR 要求删除所有相关数据 C 通过匿名化与数据最小化,在满足删除权的同时保留必要审计与统计 ✓ 正确答案 D 匿名化违反 GDPR
# 47. CDC(Change Data Capture)与历史表的关系? A CDC 基于日志捕获变更,可写入历史表,对源表无侵入 ✓ 正确答案 B CDC 会侵入业务表 C CDC 与历史表无关 D 触发器是 CDC 的唯一实现
# 48. GDPR 的删除权(Right to Erasure)与历史数据? A 删除权只要求删除主表 B 删除权需覆盖所有副本,可通过匿名化在保留历史的同时满足删除权 ✓ 正确答案 C 历史数据可以豁免删除权 D 匿名化不满足删除权
# 49. Oracle AS OF TIMESTAMP 的语法? A 与 UNDO 无关 B 用于闪回查询过去某时刻的数据,受 UNDO 保留期限制 ✓ 正确答案 C 可查询任意历史时刻 D 只支持 SCN 不支持时间戳
# 50. SCD Type 1(覆盖)与 Type 2(保留历史)的差异? A 两者等价 B Type 1 保留历史 C Type 2 不保留历史 D Type 1 覆盖不保留历史,Type 2 新增版本保留历史,按历史需求选择 ✓ 正确答案
# 52. Triggers-based 历史表的副作用? A 触发器不影响性能 B 强一致但增加写入开销、维护复杂,且批量/复制工具可能不触发触发器 ✓ 正确答案 C 触发器可移植性好 D 触发器不会导致事务失败
# 53. 时态数据库(Temporal Database)的应用场景? A 时态数据库只用于 OLTP B 用于金融审计、合规、SCD 历史、合同有效期等需要回溯时间状态的场景 ✓ 正确答案 C 时态数据库不保留历史 D 时态数据库只存储当前状态
# 54. 4NF、5NF(PJNF)涉及的多值依赖与连接依赖? A 4NF 基于多值依赖,5NF 基于连接依赖,5NF 是进一步严格化 ✓ 正确答案 B 4NF 基于连接依赖 C 5NF 基于多值依赖 D 4NF 与 5NF 等价
# 55. 多值依赖(MVD)X →→ Y 的语义与 4NF 的关系? A 每个 MVD 都是函数依赖 B 多值依赖只在 2NF 讨论 C 4NF 与多值依赖无关 D 多值依赖 X→→Y 表示 X 与其余属性独立,4NF 要求非平凡 MVD 左侧是超键 ✓ 正确答案
# 56. 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BCNF(Boyce-Codd NF)的精确定义与逐步严格化? A BCNF 只要求 1NF B 2NF 比 3NF 更严格 C 1NF⊇2NF⊇3NF⊇BCNF 逐步严格,逐级消除部分、传递及非超键左部依赖 ✓ 正确答案 D 各范式互不包含
# 59. 3NF 分解算法的步骤与正确性,如何从函数依赖集出发逐步消除传递依赖,分解的无损性与依赖保持性如何验证? A 3NF 分解不需要候选键 B 3NF 分解可能不保持依赖 C 从最小覆盖出发建模式,若某模式含候选键则无损且保持依赖 ✓ 正确答案 D 3NF 分解不保证无损
# 60. BCNF 分解算法的步骤,找出违反 BCNF 的函数依赖并逐步拆分,为什么 BCNF 分解可能牺牲依赖保持性,与 3NF 分解如何取舍? A BCNF 与 3NF 分解结果相同 B BCNF 分解总能保持依赖 C 3NF 分解可能不无损 D BCNF 分解保证无损但可能丧失依赖保持,3NF 分解总能保持依赖 ✓ 正确答案
# 61. BCNF 比 3NF 更严格之处? A 两者等价 B BCNF 比 3NF 宽松 C BCNF 要求所有非平凡 FD 左部是超键,3NF 允许左侧非超键但右侧是主属性的依赖 ✓ 正确答案 D 3NF 不允许主属性依赖
# 64. ER 模型的扩展(EER)? A EER 不能表达聚合 B EER 与 ER 完全相同 C EER 不支持继承 D EER 在 ER 基础上增加特殊化/泛化(ISA)、聚合等面向对象语义 ✓ 正确答案
# 65. 单表继承的 NULL 列代价? A 单表继承无 NULL B NULL 不影响存储 C 大量 NULL 增加存储与扫描成本,且无法对子类特有字段加非空约束 ✓ 正确答案 D NULL 列可加非空约束