SQL反模式 内容简介
《图灵程序设计丛书:SQL反模式》是一本广受好评的SQL图书。它介绍了如何避免在SQL的使用和开发中陷入一些常见却经常被忽略的误区。它通过讲述各种具体的案例,以及开发人员和使用人员在面对这些案例时经常采用的错误解决方案,来介绍如何识别、利用这些陷阱,以及面对问题时正确的解决手段。另外,《图灵程序设计丛书:SQL反模式》还涉及了SQL的各级范式和针对它们的正确理解。
SQL反模式 目录
版权信息
译 者 序 一
译 者 序 二
第1章 引言
1.1 谁需要这本书
1.2 本书内容
1.3 本书未涉及的内容
1.4 规约
1.5 范例数据库
1.6 致谢
第一部分 逻辑型数据库设计反模式
第2章 乱穿马路
2.1 目标:存储多值属性
2.2 反模式:格式化的逗号分隔列表
2.3 如何识别反模式
2.4 合理使用反模式
2.5 解决方案:创建一张交叉表
第3章 单纯的树
3.1 目标:分层存储与查询
3.2 反模式:总是依赖父节点
3.3 如何识别反模式
3.4 合理使用反模式
3.5 解决方案:使用其他树模型
第4章 需要ID
4.1 目标:建立主键规范
4.2 反模式:以不变应万变
4.3 如何识别反模式
4.4 合理使用反模式
4.5 解决方案:裁剪设计
第5章 不用钥匙的入口
5.1 目标:简化数据库架构
5.2 反模式:无视约束
5.3 如何识别反模式
5.4 合理使用反模式
5.5 解决方案:声明约束
第6章 实体—属性—值
6.1 目标:支持可变的属性
6.2 反模式:使用泛型属性表
6.3 如何识别反模式
6.4 合理使用反模式
6.5 解决方案:模型化子类型
第7章 多态关联
7.1 目标:引用多个父表
7.2 反模式:使用双用途外键
7.3 如何识别反模式
7.4 合理使用反模式
7.5 解决方案:让关系变得简单
第8章 多列属性
8.1 目标:存储多值属性
8.2 反模式:创建多个列
8.3 如何识别反模式
8.4 合理使用反模式
8.5 解决方案:创建从属表
第9章 元数据分裂
9.1 目标:支持可扩展性
9.2 反模式:克隆表与克隆列
9.3 如何识别反模式
9.4 合理使用反模式
9.5 解决方案:分区及标准化
第二部分 物理数据库设计反模式
第10章 取整错误
10.1 目标:使用小数取代整数
10.2 反模式:使用FLOAT类型
10.3 如何识别反模式
10.4 合理使用反模式
10.5 解决方案:使用NUMERIC类型
第11章 每日新花样
11.1 目标:限定列的有效值
11.2 反模式:在列定义上指定可选值
11.3 如何识别反模式
11.4 合理使用反模式
11.5 解决方案:在数据中指定值
第12章 幽灵文件
12.1 目标:存储图片或其他多媒体大文件
12.2 反模式:假设你必须使用文件系统
12.3 如何识别反模式
12.4 合理使用反模式
12.5 解决方案:在需要时使用BLOB类型
第13章 乱用索引
13.1 目标:优化性能
13.2 反模式:无规划地使用索引
13.3 如何识别反模式
13.4 合理使用反模式
13.5 解决方案:MENTOR你的索引
第三部分 查询反模式
第14章 对未知的恐惧
14.1 目标:辨别悬空值
14.2 反模式:将NULL作为普通的值,反之亦然
14.3 如何识别反模式
14.4 合理使用反模式
14.5 解决方案:将NULL视为特殊值
第15章 模棱两可的分组
15.1 目标:获取每组的最大值
15.2 反模式:引用非分组列
15.3 如何识别反模式
15.4 合理使用反模式
15.5 解决方案:无歧义地使用列
第16章 随机选择
16.1 目标:获取样本记录
16.2 反模式:随机排序
16.3 如何识别反模式
16.4 合理使用反模式
16.5 解决方案:没有具体的顺序……
第17章 可怜人的搜索引擎
17.1 目标:全文搜索
17.2 反模式:模式匹配断言
17.3 如何识别反模式
17.4 合理使用反模式
17.5 解决方案:使用正确的工具
第18章 意大利面条式查询
18.1 目标:减少SQL查询数量
18.2 反模式:使用一步操作解决复杂问题
18.3 如何识别反模式
18.4 合理使用反模式
18.5 解决方案:分而治之
第19章 隐式的列
19.1 目标:减少输入
19.2 反模式:捷径会让你迷失方向
19.3 如何识别反模式
19.4 合理使用反模式
19.5 解决方案:明确列出列名
第四部分 应用程序开发反模式
第20章 明文密码
20.1 目标:恢复或重置密码
20.2 反模式:使用明文存储密码
20.3 如何识别反模式
20.4 合理使用反模式
20.5 解决方案:先哈希,后存储
第21章 SQL注入
21.1 目标:编写SQL动态查询
21.2 反模式:将未经验证的输入作为代码执行
21.3 如何识别反模式
21.4 合理使用反模式
21.5 解决方案:不信任任何人
第22章 伪键洁癖
22.1 目标:整理数据
22.2 反模式:填充角落
22.3 如何识别反模式
22.4 合理使用反模式
22.5 解决方案:克服心里障碍
第23章 非礼勿视
23.1 目标:写更少的代码
23.2 反模式:无米之炊
23.3 如何识别反模式
23.4 合理使用反模式
23.5 解决方案:优雅地从错误中恢复
第24章 外交豁免权
24.1 目标:采用最佳实践
24.2 反模式:将SQL视为二等公民
24.3 如何识别反模式
24.4 合理使用反模式
24.5 解决方案:建立一个质量至上的文化
第25章 魔豆
25.1 目标:简化MVC的模型
25.2 反模式:模型仅仅是活动记录
25.3 如何识别反模式
25.4 合理使用反模式
25.5 解决方案:模型包含活动记录
第五部分 附录
附录A 规范化规则
A.1 关系是什么
A.2 规范化的神话
A.3 什么是规范化
A.4 常识
附录B 参考书目
SQL反模式 精彩文摘
1.5 范例数据库
我使用一个假想的缺陷跟踪程序的数据库来展示大部分与 SQL 反模式相关的话题。图 1-2 是该数据库的ERD。请注意, Bugs 表和 Accounts 表之间有3个连接,代表3个不同的外键。
接下来的数据库定义语句则展示出如何定义这些表。有些时候所做的选择只是为了照顾后面的范例,因而它们可能并不是人们在实际应用程序中所做的选择。我尽力使用标准 SQL 来定义这个数据库,使其能适用于任一数据库产品,但也会出现一些 MySQL 数据类型,诸如 SERIAL和 BIGINT 语句。
→→→→→→→→→→→→→→→→→→→→查找获取
2019年7月5日 上午10:20 1F
非常感谢,有学习的一本书。
2019年8月19日 下午11:28 2F
非常好