前言 1
第1章 设置场景 9
关系模式是非常容易被误解的 9
一些术语的注释 10
法则,而不是产品 12
最初模式的一个回顾 13
模型和实现 20
关系的特性 23
基础关系和产生的关系 26
关系和关系变量 28
值和变量 29
结论 30
练习 31
第2章 类型与域 34
类型和关系 34
等式比较 35
数据值的原子性 41
什么是类型 44
标量和非标量类型 47
SQL中的标量类型 49
SQL中的类型检查和强制类型转换 50
SQL中的一些整序 52
SQL中的行和表类型 53
结论 55
练习 56
第3章 元组与关系、行和表 59
什么是元组 59
SQL中的行 63
什么是关系 65
关系和它们的关系体 66
关系是n维的 68
关系比较 68
TABLE_DUM和TABLE_DEE 69
SQL中的表 70
SQL中列的命名 72
结论 74
练习 74
第4章 无重复与无空值 76
重复有什么问题 76
复行:进一步讨论 81
在SQL中避免复行 82
空值有什么错 83
在SQL中避免空值 86
对外连接的评论 88
结论 89
练习 90
第5章 基本关系变量与基本表 94
数据定义 95
更新是集合级别的 95
关系赋值 97
更多关于候选键的内容 99
关于外键更多的讨论 101
关系变量和断言 104
关系和类型 106
练习 109
第6章 SQL与关系代数Ⅰ:原始的操作符 112
一些预备知识 112
有关闭包的更多讨论 114
约束 117
投影 118
连接 119
并、交和差 123
哪些操作符是原始的 125
每次都形成表达式的一小步 125
关系表达式的意思是什么 127
求一个表表达式的值 128
表达式转换 129
属性名字上的依赖 132
练习 134
第7章 SQL与关系代数Ⅱ:附加的操作符 137
半连接和半差 137
扩展 138
映像关系 140
除 143
聚集操作符 144
映像关系再讨论 148
概要 149
概要再论 154
分组和不分组 155
what if查询 157
ORDER BY如何 158
练习 159
第8章 SQL与约束 163
类型约束 164
SQL中的类型约束 167
数据库约束 168
SQL中数据库约束 172
事务 173
为什么数据库约束的检测必须是实时的 174
难道某些检测不是不得不被推迟吗 177
约束和谓词 180
各种各样的问题 182
练习 183
第9章 SQL与视图 187
视图是关系变量 188
视图和谓词 191
获取操作 192
视图和约束 194
更新操作 197
视图是为了什么 201
视图和快照 202
练习 203
第10章 SQL与逻辑 206
简单和复合的命题 207
简单和复合的谓词 210
定量 211
关系计算 216
更多的关于量化 222
一些等价形式 228
结论 231
练习 232
第11章 使用逻辑来形式化SQL表达式 235
一些转换规则 235
例子1:逻辑隐含 238
例子2:普遍的限定 238
例子3:隐含和一般的限制 240
例子4:相关的子查询 242
例子5:命名子查询 243
例子6:更多的关于命名子表达式 246
例子7:处理不确定性 247
例子8:使用COUNT 249
例子9:连接查询 250
例子10:唯一限制 251
例子11:ALL或者ANY比较 252
例子12:GROUP BY和HAVING 256
练习 257
第12章 SQL主体杂项 258
SELECT* 258
显表 259
名字限定 259
范围变量 260
子查询 262
“可能的非确定”表达式 265
空集 266
SQL表表达式的BNF范式语法 266
练习 269
附录A 关系模式 271
附录B 数据库设计理论 286
附录C 练习答案 315
附录D 进一步阅读 393