闭卷说明“实体、值对象与关系”的对象、成立条件和一个失败反例。
数据库系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷说明“基数、参与约束与弱实体”的对象、成立条件和一个失败反例。
闭卷说明“从 ER 图映射到关系模式”的对象、成立条件和一个失败反例。
闭卷说明“函数依赖与属性闭包”的对象、成立条件和一个失败反例。
闭卷说明“最小覆盖与候选键”的对象、成立条件和一个失败反例。
闭卷说明“2NF、3NF 与 BCNF”的对象、成立条件和一个失败反例。
闭卷说明“无损连接与依赖保持”的对象、成立条件和一个失败反例。
应覆盖:一对一、一对多、多对多只描述上界,还要声明最小参与数;弱实体的身份依赖拥有者键;规则:min..max 基数必须能映射为主键、唯一、外键、非空或事务级断言;并能围绕“订单至少有一个订单项,订单项必须属于恰好一个订单;(order_id,line_no) 共同标识订单项”给出可执行或可计算的反查。
应覆盖:实体有独立身份和值生命周期,值对象由属性共同定义,关系表达参与约束;建模不是把需求名词逐个变表;规则:用身份、生命周期、共享更新和历史追溯四问判断是否独立成实体;并能围绕“收货地址可能是订单快照值而非共享地址实体,因为历史订单必须保留当时文本,不随用户地址簿更新”给出可执行或可计算的反查。
应覆盖:函数依赖 X→Y 是对所有合法实例的语义承诺,不是对当前样本的偶然观察;闭包用于找键和判断蕴含;规则:X⁺ 从 X 开始反复应用可用依赖直到不再新增;若 X⁺ 包含全部属性则 X 是超键;并能围绕“在教学班中 (course_id,term,section)→teacher,但 course_id→teacher 通常不成立;用反例构造检验”给出可执行或可计算的反查。
应覆盖:实体通常映射为表,多对多关系映射为连接表,复合和多值属性需要拆解;继承映射要权衡稀疏、连接与约束;规则:映射完成后逐项验证实体身份、关系基数和删除语义没有丢失;并能围绕“学生与课程的多对多经 enrollment 表承载 semester、score 等关系属性,不能把课程列表塞进字符串列”给出可执行或可计算的反查。
应覆盖:范式逐级约束非主属性对键的部分依赖、传递依赖以及决定因素是否为超键;选择范式要保留语义解释;规则:3NF 允许右部为主属性的特例;BCNF 要求每个非平凡依赖的左部都是超键;并能围绕“选课表若同时存 student_name 与 course_name,会因键 (student_id,course_id) 的部分依赖产生更新异常,应拆实体信息”给出可执行或可计算的反查。
应覆盖:最小覆盖把右部拆为单属性、消去左部冗余和冗余依赖;候选键必须在超键基础上继续做最小性检查;规则:删除一条依赖后若其右部仍在左部闭包中,该依赖冗余;并能围绕“对 F={A→BC,B→C,AB→D},先拆右部,再判断 A→C 是否可由 A→B 与 B→C 推得”给出可执行或可计算的反查。
应覆盖:分解不仅要减少冗余,还要保证自然连接不制造伪元组,并尽量让依赖可在单表局部检查;规则:二元分解 R→R1,R2 无损当 (R1∩R2)→R1 或 →R2 在 F⁺ 中成立;并能围绕“R(A,B,C) 按 R1(A,B)、R2(B,C) 分解时,若 B→A 或 B→C 可保证二元分解无损”给出可执行或可计算的反查。