闭卷说明“从共享状态出发理解数据库”的对象、成立条件和一个失败反例。
数据库系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷说明“数据、信息、模式与实例”的对象、成立条件和一个失败反例。
闭卷说明“三级模式与数据独立性”的对象、成立条件和一个失败反例。
闭卷说明“数据库系统的组件与一次查询”的对象、成立条件和一个失败反例。
闭卷说明“OLTP、OLAP 与工作负载”的对象、成立条件和一个失败反例。
闭卷说明“约束是可执行的业务知识”的对象、成立条件和一个失败反例。
闭卷说明“用 SQLite 建立第一个可复现实验”的对象、成立条件和一个失败反例。
应覆盖:模式描述允许出现什么结构,实例描述某一时刻实际存着什么;程序依赖模式而不是依赖某一批样例数据;规则:实例 I 必须满足模式 S 的全部约束,写作 I ⊨ S;并能围绕“学生表的列名、类型、主键属于模式,周一导入的 126 名学生属于实例;清空数据不会让 student_id 失去主键身份”给出可执行或可计算的反查。
应覆盖:数据库负责让多个程序围绕同一份长期状态达成一致;表格只是表现形式,约束、并发和恢复才是系统责任;规则:正确性 = 合法状态 + 合法迁移;任何一步失败都不能留下半个订单;并能围绕“网店库存从 1 件变成 0 件时,两个下单请求不能都读到 1 并同时成功;要把读取、扣减、订单写入视作一个受约束的状态迁移”给出可执行或可计算的反查。
应覆盖:一次 SQL 会经过解析、绑定、重写、优化、执行、缓冲与存储,日志和锁管理器在旁保障失败与并发边界;规则:总延迟近似为解析优化成本 + CPU 处理 + I/O 等待 + 锁等待 + 网络传输;并能围绕“SELECT 查询先确认列属于哪张表,再比较候选计划成本,执行器按计划从索引或页读取元组,缓冲池避免每次都访问磁盘”给出可执行或可计算的反查。
应覆盖:外模式服务具体角色,概念模式表达全局逻辑,内模式决定物理组织;分层的价值是让变化被局部吸收;规则:物理数据独立性隔离存储变化,逻辑数据独立性隔离概念模式变化;并能围绕“给订单表增加 B+ 树索引不应迫使前端改接口;把手机号拆到受限视图也不应改变财务看到的月度汇总”给出可执行或可计算的反查。
应覆盖:主键、外键、唯一、非空和检查约束把业务不变量交给数据库统一执行,比散落在多个客户端更可靠;规则:完整性约束应在最接近共享数据的位置声明,并用反例验证它真的拒绝非法状态;并能围绕“选课记录必须引用真实学生与课程,同一学生不能重复选同一教学班,学分必须在合法区间”给出可执行或可计算的反查。
应覆盖:系统设计必须从读写比例、事务长度、访问局部性和延迟目标出发,不能只按数据量选择技术;规则:吞吐量 X、平均响应时间 R 与系统内平均并发数 N 满足 Little 定律 N = X·R;并能围绕“支付流水需要短事务和低尾延迟,年度经营分析需要扫描大量历史列;二者放进同一布局会互相伤害”给出可执行或可计算的反查。
应覆盖:最小实验要包含建表、装载、查询、事务和断言;脚本从空库运行仍得到同一结果,才算可复现;规则:实验验收同时检查结果、约束、重复运行与失败回滚,不能只截一张成功界面;并能围绕“在内存 SQLite 中创建 account,插入两行余额,用事务转账 30 元并断言总额不变、任一余额不为负”给出可执行或可计算的反查。