来源书籍
SQL与关系数据库理论——如何编写健壮的SQL代码(原书第2版)
数据库/存储引擎类
类别清单覆盖
0/5
全书概览
SQL与关系数据库理论——如何编写健壮的SQL代码(原书第2版)
Skill 版本:v7
类别:数据库/存储引擎类
四象限结论:经典原理(高浓度 + 高稳定性)
理由:本书的核心不是罗列SQL语法,而是用关系模型、谓词逻辑、类型理论、约束和关系 代数解释为什么某些SQL写法会产生不可靠结果,以及如何把SQL尽量按关系化方式使用。第1章 明确区分”SQL vs. 关系模型”“模型 vs. 实现”“关系值 vs. 关系变量”;第4章用重复行和NULL 破坏表达式变换、查询答案和信息原理的例子说明SQL偏离关系理论的风险;第8章把约束提升为 数据库正确性的核心机制,讨论立即检查、语义优化和多重赋值;第10-11章用一阶谓词逻辑 重新解释SQL的WHERE/JOIN/子查询语义。这些内容解释的是关系数据库长期稳定的理论约束, 不随具体产品版本变化而过时,因此定级经典原理,是本轮v7重跑目前评级最高的一本书。
命中category-checklists.md“数据库/存储引擎类”,但本书视角与《PostgreSQL 9X之巅》
等工程实践类书籍完全不同——后者讲存储引擎内部实现细节,本书讲的是关系模型与SQL语言
设计本身的理论正确性,两者在同一类别下互补,制卡时应避免与该系列已有卡片(事务/隔离
级别、MVCC等实现层面话题)重复,聚焦本书独有的关系代数、逻辑谓词、类型/域理论视角。
章节筛选
| 章节号 | 章节标题 | 精读/略读 | 状态 | 卡片数 |
|---|---|---|---|---|
| 0 | 版权页/前言/目录/引言 | 略读 | done | 0 |
| 1 | 第1章 做好准备 | 精读:建立全书术语、关系模型边界、模型与实现差异,是后续章节的基础 | done | 13 |
| 2 | 第2章 类型和域 | 精读:类型理论如何约束SQL数据完整性 | done | 8 |
| 3 | 第3章 元组、关系、行、表 | 精读:关系模型核心概念与SQL实现的对应与偏离 | done | 8 |
| 4 | 第4章 不要重复,不要null | 精读:重复行与NULL破坏关系代数封闭性的具体机制 | done | 7 |
| 5 | 第5章 基关系变量和基表 | 精读:关系变量与表的区别、数据库设计的理论基础 | done | 8 |
| 6 | 第6章 SQL和关系代数I:原始运算符 | 精读:关系代数原始运算符与SQL对应关系 | done | 12 |
| 7 | 第7章 SQL和关系代数II:附加运算符 | 精读:关系代数附加运算符与SQL对应关系 | done | 12 |
| 8 | 第8章 SQL与约束 | 精读:约束作为数据库正确性核心机制、立即检查与语义优化 | done | 10 |
| 9 | 第9章 SQL与视图 | 精读:视图的关系理论基础与更新语义 | done | 11 |
| 10 | 第10章 SQL与逻辑 | 精读:一阶谓词逻辑与SQL语义的对应 | done | 14 |
| 11 | 第11章 使用逻辑表述SQL表达式 | 精读:用逻辑重新表述和验证SQL表达式的方法 | done | 11 |
| 12 | 第12章 关于SQL的其他主题 | 精读:补充主题,逐节判断信息浓度(12.2显式表/12.8 BNF语法按浓度过滤未生卡) | done | 6 |
实践卡进度
| 序号 | 实践标题 | 实践方式 | 状态(pending/done) | 关联章节 | 产出 |
|---|---|---|---|---|---|
| 1 | 核验cardbox外键补偿式立即检查是否贴合黄金规则 | 实现深读 | done | 第5、8章 | 基于db.go具体行号的结论笔记,判断migrateV1ToV2的关闭/核查/重开模式是否符合”约束立即检查”原则 |
| 2 | 核验cardbox的luhmann_code唯一索引对多个NULL的真实行为 | 证据验证 | done | 第4、8章 | 联网核验SQLite官方文档 + 真实sqlite3实测(两行NULL成功共存),确认idx_cards_luhmann_code的WHERE条件在SQLite下技术上多余 |
| 3 | 核验CREATE ASSERTION在主流数据库2026年的支持现状 | 证据验证 | done | 第8章 | 联网核验PostgreSQL官方文档+社区邮件列表,确认2026年仍不支持CREATE ASSERTION,但已有2026-02社区提案援引Oracle先例 |
待关联术语
| 术语名 | 出现章节 | 一句话语境 |
|---|
引用文献
| 标题 | 类型 | 出现章节 | 一句话语境 |
|---|---|---|---|
| Databases, Types, and the Relational Model: The Third Manifesto | 书 | 第1章 | 作者与Hugh Darwen合著,定义了Tutorial D,本书用它表达SQL无法直接表达的关系赋值等概念 |
类别清单核对
| 维度 | 覆盖状态 | 关联卡片标题或未覆盖理由 |
|---|---|---|
| 存储结构与索引原理 | 未覆盖 | 第1章明确将索引/物理存储划为”实现层”(见[[模型与实现的区分及连接很慢为何没有意义]]、[[物理数据独立性]]),全书立场是关系模型对物理存储只字未提,但从未展开讨论B树/LSM树等具体结构的取舍——定向检索确认全书正文无相关实质内容 |
| 事务与隔离级别 | 部分覆盖 | 第8章讨论了ACID定义(含一致性=完整性的等价说明)、约束必须在语句边界立即检查、多重赋值如何替代延迟检查(见[[ACID一致性不等于正确性及事务不是完整性单位]]、[[数据库约束必须立即检查的理由与语义优化]]、[[多重赋值解决延迟检查困境的更优方案]]),但未深入讨论具体隔离级别(读未提交/可重复读/串行化等)之间的权衡机制,这部分内容明确超出本书范畴 |
| 复制与分片策略 | 未覆盖 | 定向检索全书正文无主从复制、分片路由相关实质讨论;这类分布式系统工程议题不在本书”关系理论/SQL语义”的既定范围内 |
| 查询优化器原理 | 部分覆盖 | 第6章表达式变换与分配律/交换律/结合律(见[[表达式变换与优化的分配律交换律结合律]])、第8章语义优化(见[[数据库约束必须立即检查的理由与语义优化]])从逻辑等价改写角度覆盖了优化器”如何生成等价执行路径”这一核心机制,但未讨论具体的代价估算算法(如统计信息驱动的cost-based optimization细节),书中明确说明基于代价的优化超出本书范围 |
| 故障恢复机制 | 未覆盖 | 定向检索全书正文无WAL、checkpoint、崩溃恢复相关实质讨论;这类物理持久化机制同样被划入”实现层”,不在本书讨论范围 |
| 并发控制机制 | 未覆盖 | 第8章仅在ACID定义层面提及隔离性(isolation),但未展开讨论锁机制与MVCC的具体实现取舍;定向检索确认全书正文无相关实质内容 |
| 存储与计算的工程权衡 | 未覆盖 | 书中反复强调性能/存储属于实现层问题、不属于关系模型讨论范畴(见[[模型与实现的区分及连接很慢为何没有意义]]),因此从未展开讨论读写放大、压缩策略等具体工程权衡——这不是遗漏,而是本书理论定位的直接结果 |
核对结论:7个维度中0个完整覆盖、2个部分覆盖、5个未覆盖。这个覆盖分布
准确反映了本书在_overview.md顶部已声明的定位——本书是”数据库/存储引擎类”
下与《PostgreSQL 9X之巅》互补的理论分支,聚焦关系模型、谓词逻辑、类型/域
理论及SQL语义的正确性,而非存储引擎内部实现细节;该类别清单的大部分维度
(存储结构、复制分片、故障恢复、并发控制、工程权衡)恰好对应本书明确
划归”实现层”、有意不深入讨论的内容,这一低覆盖率是本书理论定位的自然
结果,不应被解读为制卡疏漏。
资金安全问题案例
| 问题标题 | 问题卡 | 解决方案卡(如有) | 出现章节 | 一句话说明 |
|---|
章节与卡片
01
- 原理优先 普通读书笔记卡
- SQL与关系模型不是一回事:正式术语与SQL术语的取舍原则 普通读书笔记卡
- SQL不是关系模型 普通读书笔记卡
- 原理优于产品:关系模型知识的可迁移性 普通读书笔记卡
- 术语塑造理解 普通读书笔记卡
- 候选键、主键与外键的精确定义 普通读书笔记卡
- 模型实现分离 普通读书笔记卡
- 实体完整性与参照完整性及NULL的本质 普通读书笔记卡
- 值变量分离 普通读书笔记卡
- 关系代数的闭包性质 普通读书笔记卡
- 原始关系代数的六个运算符 结构图卡
- 模型与实现的区分及"连接很慢"为何没有意义 普通读书笔记卡
- 物理数据独立性 普通读书笔记卡
- 数据模型的两种含义 普通读书笔记卡
- 关系的五条性质与SQL表为何不是关系 结构图卡
- 基关系与视图在关系模型中没有本质"物理"差异 普通读书笔记卡
- 关系值与关系变量的区分及DELETE的本质 普通读书笔记卡
- 关系模型的声明式本质 普通读书笔记卡
02
- 类型正交于表 普通读书笔记卡
- 域即类型:关系理论对类型系统的依赖 普通读书笔记卡
- 第一范式本义 普通读书笔记卡
- 选择器与THE_运算符如何同时满足域检查与域检查重载 结构图卡
- 相等性依赖类型 普通读书笔记卡
- 数据值原子性没有绝对含义 普通读书笔记卡
- 避免隐式型转 普通读书笔记卡
- 类型的正式定义与类型生成器 普通读书笔记卡
- 标量类型与非标量类型的区分 普通读书笔记卡
- SQL弱类型化与型转导致的诡异"并"运算 普通读书笔记卡
- SQL字符序与"相等但可区分"的值 普通读书笔记卡
- SQL没有真正的TABLE类型生成器及"类型与表的正交性" 普通读书笔记卡
03
- 关系是集合 普通读书笔记卡
- 元组的精确定义与"元组从不包含NULL"的推论 普通读书笔记卡
- 表不是关系 普通读书笔记卡
- 元组相等性的精确定义及其重要性 普通读书笔记卡
- DEE与DUM 普通读书笔记卡
- SQL行与元组的关键差异 普通读书笔记卡
- 列名胜过位置 普通读书笔记卡
- 关系的精确定义与"关系"命名之谜 普通读书笔记卡
- 关系是n维的而非二维的 普通读书笔记卡
- 关系比较运算符与IS_EMPTY测试 普通读书笔记卡
- TABLE_DUM与TABLE_DEE:关系代数中的0 结构图卡
- SQL列命名与位置依赖:关系化使用SQL的实践规则 操作参考卡
04
- 重复抑制优化 普通读书笔记卡
- 重复行破坏优化器的表达式变换能力 普通读书笔记卡
- DISTINCT是防线 普通读书笔记卡
- SQL查询结果中重复的产生与"真重复"的辨识困境 普通读书笔记卡
- null破坏逻辑 普通读书笔记卡
- 避免重复的实践规则:DISTINCT与ALL的陷阱 操作参考卡
- 禁止null优先 普通读书笔记卡
- NULL与三值逻辑:逻辑正确与现实正确的分离 普通读书笔记卡
- 外连接是妥协 普通读书笔记卡
- NULL违反信息原理及SQL自身3VL支持的内在缺陷 普通读书笔记卡
- 避免NULL的实践规则:NOT NULL约束与COALESCE 操作参考卡
- 外连接是被null填充的"并"运算 普通读书笔记卡
05
- 更新是集合级 普通读书笔记卡
- 更新是集合级别的运算 普通读书笔记卡
- 赋值原理 普通读书笔记卡
- 关系赋值统一INSERT/DELETE/UPDATE与赋值原理 普通读书笔记卡
- 键必须不可约 普通读书笔记卡
- 候选键的精确定义:唯一性与不可约性 普通读书笔记卡
- 谓词定义关系变量 普通读书笔记卡
- 超键与函数依赖恒成立 普通读书笔记卡
- 类型给词汇 普通读书笔记卡
- 外键的精确定义与SQL FOREIGN KEY语法差异 普通读书笔记卡
- 参照操作不属于关系模型但可合理叠加 普通读书笔记卡
- 关系变量谓词与命题:及闭合世界假设 结构图卡
- 类型与关系的逻辑区别:数据库是一个逻辑系统 普通读书笔记卡
06
- 闭包支撑组合 普通读书笔记卡
- Tutorial D与SQL属性对应方式的根本差异及SQL的高度冗余 普通读书笔记卡
- 限制是谓词与 普通读书笔记卡
- 类型推理规则与RENAME运算符的必要性 普通读书笔记卡
- 投影是存在量词 普通读书笔记卡
- 限制的精确定义与"SELECT不是限制"的辨析 普通读书笔记卡
- 连接合并谓词 普通读书笔记卡
- 投影的精确定义、空元投影与ALL BUT语法 普通读书笔记卡
- 自然连接的精确定义及"交"与"积"是连接的特例 结构图卡
- SQL四种显式JOIN写法的实践建议 操作参考卡
- 并/交/差的精确定义与CORRESPONDING实践建议 操作参考卡
- 哪些运算符是基本的:"基本"与"有用"的区别 普通读书笔记卡
- 关系表达式的谓词含义可由关系变量谓词推导 普通读书笔记卡
- SELECT-FROM-WHERE的概念语义:积→限制→投影三步模型 结构图卡
- 表达式变换与优化的分配律/交换律/结合律 普通读书笔记卡
- 属性名依赖问题与程序内外部数据独立定义的正确方案 普通读书笔记卡
07
- 半连接问存在 普通读书笔记卡
- 排他并与半连接/半差:三个实践重要的附加运算符 普通读书笔记卡
- 除表达全部 普通读书笔记卡
- EXTEND扩展运算符与SQL SELECT-FROM-WHERE模板的局限 普通读书笔记卡
- 聚集需空集语义 普通读书笔记卡
- 映像关系的精确定义与"!!"运算符 普通读书笔记卡
- 排序不是关系 普通读书笔记卡
- 除运算符的局限性:为什么应被映像关系取代 普通读书笔记卡
- SQL聚集运算符的三重缺陷 普通读书笔记卡
- SUMMARIZE与GROUP BY/HAVING的逻辑冗余性及陷阱 操作参考卡
- EXTEND可以替代SUMMARIZE,映像关系在EXTEND中更有用 普通读书笔记卡
- 关系值属性(RVA)使外连接变得多余 普通读书笔记卡
- RVA在基关系变量中的设计取舍与关系比较对RVA的隐式依赖 普通读书笔记卡
- "WHAT IF"查询揭示UPDATE的完整展开机制 普通读书笔记卡
- 递归与传递闭包的不动点定义及SQL递归查询违反闭包的陷阱 结构图卡
- ORDER BY不是关系运算符:它不是函数 普通读书笔记卡
08
- 约束近似真实 普通读书笔记卡
- 类型约束的精确定义:POSSREP与选择器/THE_运算符的一一对应 普通读书笔记卡
- 黄金法则 普通读书笔记卡
- SQL不支持类型约束的后果与弥补建议 普通读书笔记卡
- 立即检查约束 普通读书笔记卡
- 数据库约束的分类:元组约束与AND聚集表述法 普通读书笔记卡
- 声明式约束 普通读书笔记卡
- 函数依赖的精确定义及为何通常不需要专门声明 普通读书笔记卡
- 语义优化依赖约束 普通读书笔记卡
- SQL空表约束自动满足的陷阱 普通读书笔记卡
- ACID一致性不等于正确性,及"事务不是完整性单位" 普通读书笔记卡
- 数据库约束必须立即检查的理由与语义优化 普通读书笔记卡
- 多重赋值:解决"延迟检查"困境的更优方案 普通读书笔记卡
- 约束与谓词:逻辑正确与现实正确的分离及爆炸原理 普通读书笔记卡
- 参照完整性是"元约束",及转换约束与状态约束的区别 普通读书笔记卡
09
- 视图也是关系变量 普通读书笔记卡
- 视图是关系变量:表和视图并非不同事物 普通读书笔记卡
- 互换性原理 普通读书笔记卡
- 互换性原理及其重要推论 普通读书笔记卡
- 视图谓词派生 普通读书笔记卡
- 关系常量与命名常量的逻辑区别 普通读书笔记卡
- 视图更新要守恒 普通读书笔记卡
- 视图谓词是派生谓词 普通读书笔记卡
- 视图检索运算的替换过程与"物化"实现违反主旨 普通读书笔记卡
- 视图约束是派生约束,且可表达基表层面难以直接表达的约束 普通读书笔记卡
- 视图更新失败的本质是违反黄金规则或赋值原理 普通读书笔记卡
- SQL视图可更新性规则的复杂混乱及CHECK选项 操作参考卡
- 补偿操作机制:级联规则维持多关系变量间派生约束 普通读书笔记卡
- 视图的两种用途:简写与逻辑数据独立性 普通读书笔记卡
- 视图与快照的区别:物化视图是自相矛盾的用词 普通读书笔记卡
10
- 逻辑训练SQL 普通读书笔记卡
- 逻辑蕴涵的形式化本质与自然语言直觉的偏离 普通读书笔记卡
- 谓词变命题 普通读书笔记卡
- 联结词的交换性陷阱:SQL求值顺序不能依赖联结词交换律 普通读书笔记卡
- 量词决定语义 普通读书笔记卡
- 谓词是真值函数:n元谓词分类与两条推理规则 普通读书笔记卡
- 不一致推出任意 普通读书笔记卡
- 量词化的精确定义与量词跟联结词的逻辑区别 普通读书笔记卡
- 完全量词化产生的命题及量化顺序规则 结构图卡
- 自由变元与约束变元的区分:是引用的出现而非变元本身 普通读书笔记卡
- 关系演算的基本结构:区间变元+原型元组+WHERE谓词 结构图卡
- SQL的EXISTS不是真正的三值逻辑存在量词 普通读书笔记卡
- 前束范式及其"未必最自然"的提醒 普通读书笔记卡
- UNIQUE量词及SQL近似实现 普通读书笔记卡
- FORALL和EXISTS可以互相定义,SQL缺FORALL导致双重否定困境 普通读书笔记卡
- 空区间陷阱:FORALL在空集合上恒为真的反直觉后果 普通读书笔记卡
- IS_EMPTY/COUNT等价关系及COUNT替代EXISTS的性能陷阱 普通读书笔记卡
- 不一致数据库中量词求值的具体演示 普通读书笔记卡
11
- 蕴涵可改写 普通读书笔记卡
- 表达式变换法则工具箱 结构图卡
- 全称用不存在 普通读书笔记卡
- 蕴涵律实战:约束从IF...THEN...到SQL CHECK的映射 操作参考卡
- COUNT常误导 普通读书笔记卡
- 全称量词化的系统化SQL映射步骤 操作参考卡
- 远离ALLANY 普通读书笔记卡
- NULL让"逻辑等价"的SQL改写产生不同的错误答案 普通读书笔记卡
- 相关子查询到IN子查询的变换法则及适用边界 操作参考卡
- 命名子表达式技术简化复杂变换的推导过程 普通读书笔记卡
- 空区间陷阱在实际查询中的呈现及DIVIDE的再次暴露 普通读书笔记卡
- 自然语言查询的固有模糊性及逆否命题法则 普通读书笔记卡
- UNIQUE量词到SQL的映射陷阱 操作参考卡
- ALL或ANY比较的语义陷阱与建议 操作参考卡
- GROUP BY/HAVING与显式演算表述在"零匹配"场景下的语义差异 普通读书笔记卡
12
- 慎用SELECT星 普通读书笔记卡
- SELECT星号的双刃剑 操作参考卡
- 显式区间变元 普通读书笔记卡
- 名称限定原则与不可限定的语法上下文 操作参考卡
- 避开非确定性 普通读书笔记卡
- 区间变元的精确定义与"相关名称不是别名"的严重误称 普通读书笔记卡
- 子查询三分类及空表型转规则 普通读书笔记卡
- "可能非确定性"表达式的判定规则 普通读书笔记卡
- SQL对空集合处理的系统性缺陷清单 结构图卡
13
14
15
16
相关主题
暂无公开主题。