图书介绍

SQL反模式【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

SQL反模式
  • (美)卡尔文著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115261274
  • 出版时间:2011
  • 标注页数:254页
  • 文件大小:59MB
  • 文件页数:266页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

SQL反模式PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 引言1

1.1谁需要这本书2

1.2本书内容2

1.2.1本书结构3

1.2.2反模式分解4

1.3本书未涉及的内容4

1.4规约5

1.5范例数据库6

1.6致谢8

第一部分 逻辑型数据库设计反模式10

第2章 乱穿马路10

2.1目标:存储多值属性11

2.2反模式:格式化的逗号分隔列表11

2.2.1查询指定账号的产品11

2.2.2查询指定产品的账号12

2.2.3执行聚合查询12

2.2.4更新指定产品的账号12

2.2.5验证产品ID13

2.2.6选择合适的分隔符13

2.2.7列表长度限制13

2.3如何识别反模式14

2.4合理使用反模式14

2.5解决方案:创建一张交叉表14

2.5.1通过账号查询产品和反过来查询15

2.5.2执行聚合查询16

2.5.3更新指定产品的相关联系人16

2.5.4验证产品ID16

2.5.5选择分隔符17

2.5.6列表长度限制17

2.5.7其他使用交叉表的好处17

第3章 单纯的树18

3.1目标:分层存储与查询18

3.2反模式:总是依赖父节点19

3.2.1使用邻接表查询树20

3.2.2使用邻接表维护树21

3.3如何识别反模式22

3.4合理使用反模式23

3.5解决方案:使用其他树模型24

3.5.1路径枚举24

3.5.2嵌套集26

3.5.3闭包表29

3.5.4你该使用哪种设计33

第4章 需要ID34

4.1目标:建立主键规范35

4.2反模式:以不变应万变36

4.2.1冗余键值36

4.2.2允许重复项37

4.2.3意义不明的关键字38

4.2.4使用USING关键字38

4.2.5使用组合键之难39

4.3如何识别反模式39

4.4合理使用反模式40

4.5解决方案:裁剪设计40

4.5.1直截了当地描述设计40

4.5.2打破传统41

4.5.3拥抱自然键和组合键41

第5章 不用钥匙的入口43

5.1目标:简化数据库架构43

5.2反模式:无视约束44

5.2.1假设无瑕代码44

5.2.2检查错误45

5.2.3“那不是我的错!”45

5.2.4进退维谷46

5.3如何识别反模式46

5.4合理使用反模式47

5.5解决方案:声明约束47

5.5.1支持同步修改48

5.5.2系统开销过度?不见得48

第6章 实体-属性-值50

6.1目标:支持可变的属性50

6.2反模式:使用泛型属性表51

6.2.1查询属性53

6.2.2支持数据完整性53

6.2.3无法声明强制属性53

6.2.4无法使用SQL的数据类型53

6.2.5无法确保引用完整性54

6.2.6无法配置属性名55

6.2.7重组列55

6.3如何识别反模式56

6.4合理使用反模式56

6.5解决方案:模型化子类型57

6.5.1单表继承57

6.5.2实体表继承58

6.5.3类表继承60

6.5.4半结构化数据模型61

6.5.5后处理61

第7章 多态关联64

7.1目标:引用多个父表65

7.2反模式:使用双用途外键65

7.2.1定义多态关联65

7.2.2使用多态关联进行查询66

7.2.3非面向对象范例67

7.3如何识别反模式68

7.4合理使用反模式69

7.5解决方案:让关系变得简单69

7.5.1反向引用69

7.5.2创建交叉表69

7.5.3设立交通灯70

7.5.4双向查找71

7.5.5合并跑道71

7.5.6创建共用的超级表72

第8章 多列属性75

8.1目标:存储多值属性75

8.2反模式:创建多个列76

8.2.1查询数据76

8.2.2添加及删除值77

8.2.3确保唯一性78

8.2.4处理不断增长的值集78

8.3如何识别反模式79

8.4合理使用反模式79

8.5解决方案:创建从属表80

第9章 元数据分裂82

9.1目标:支持可扩展性83

9.2反模式:克隆表与克隆列83

9.2.1不断产生的新表84

9.2.2管理数据完整性84

9.2.3同步数据85

9.2.4确保唯一性85

9.2.5跨表查询86

9.2.6同步元数据86

9.2.7管理引用完整性86

9.2.8标识元数据分裂列87

9.3如何识别反模式87

9.4合理使用反模式88

9.5解决方案:分区及标准化89

9.5.1使用水平分区89

9.5.2使用垂直分区89

9.5.3解决元数据分裂列91

第二部分 物理数据库设计反模式94

第10章 取整错误94

10.1 目标:使用小数取代整数94

10.2反模式:使用FLOAT类型95

10.2.1舍入的必要性95

10.2.2在SQL中使用FLOAT96

10.3如何识别反模式98

10.4合理使用反模式98

10.5解决方案:使用NUMERIC类型98

第11章 每日新花样100

11.1目标:限定列的有效值100

11.2反模式:在列定义上指定可选值101

11.2.1中间的是哪个102

11.2.2添加新口味103

11.2.3老的口味永不消失103

11.2.4可移植性低下103

11.3如何识别反模式104

11.4合理使用反模式104

11.5解决方案:在数据中指定值104

11.5.1查询候选值集合105

11.5.2更新检查表中的值105

11.5.3支持废弃数据105

11.5.4良好的可移植性106

第12章 幽灵文件107

12.1目标:存储图片或其他多媒体大文件107

12.2反模式:假设你必须使用文件系统108

12.2.1文件不支持DELETE109

12.2.2文件不支持事务隔离109

12.2.3文件不支持回滚操作109

12.2.4文件不支持数据库备份工具110

12.2.5文件不支持SQL的访问权限设置110

12.2.6文件不是SQL数据类型110

12.3如何识别反模式111

12.4合理使用反模式111

12.5解决方案:在需要时使用BLOB类型112

第13章 乱用索引114

13.1目标:优化性能115

13.2反模式:无规划地使用索引115

13.2.1无索引115

13.2.2索引过多116

13.2.3索引也无能为力117

13.3如何识别反模式118

13.4合理使用反模式119

13.5解决方案:MENTOR你的索引119

13.5.1测量120

13.5.2解释121

13.5.3挑选122

13.5.4测试123

13.5.5优化123

13.5.6重建123

第三部分 查询反模式126

第14章 对未知的恐惧126

14.1 目标:辨别悬空值127

14.2反模式:将NULL作为普通的值,反之亦然127

14.2.1在表达式中使用NULL127

14.2.2搜索允许为空的列128

14.2.3在查询参数中使用NULL128

14.2.4避免上述问题128

14.3如何识别反模式130

14.4合理使用反模式130

14.5解决方案:将NULL视为特殊值131

14.5.1在标量表达式中使用NULL131

14.5.2在布尔表达式中使用NULL132

14.5.3检索NULL值132

14.5.4声明NOT NULL的列133

14.5.5动态默认值134

第15章 模棱两可的分组135

15.1 目i标:获取每组的最大值135

15.2反模式:引用非分组列136

15.2.1单值规则136

15.2.2我想要的查询137

15.3如何识别反模式138

15.4合理使用反模式139

15.5解决方案:无歧义地使用列140

15.5.1只查询功能依赖的列140

15.5.2使用关联子查询140

15.5.3使用衍生表140

15.5.4使用J0IN141

15.5.5对额外的列使用聚合函数142

15.5.6连接同组所有值142

第16章 随机选择144

16.1目标:获取样本记录144

16.2反模式:随机排序145

16.3如何识别反模式146

16.4合理使用反模式146

16.5解决方案:没有具体的顺序146

16.5.1从1到最大值之间随机选择146

16.5.2选择下一个最大值147

16.5.3获取所有的键值,随机选择一个147

16.5.4使用偏移量选择随机行148

16.5.5专有解决方案149

第17章 可怜人的搜索引擎150

17.1 目标:全文搜索150

17.2反模式:模式匹配断言151

17.3如何识别反模式152

17.4合理使用反模式152

17.5解决方案:使用正确的工具152

17.5.1数据库扩展153

17.5.2第三方搜索引擎157

第18章 意大利面条式查询162

18.1目标:减少SQL查询数量162

18.2反模式:使用一步操作解决复杂问题163

18.2.1副作用163

18.2.2那好像还不够164

18.3如何识别反模式165

18.4合理使用反模式165

18.5解决方案:分而治之166

18.5.1一步一个脚印166

18.5.2寻找UNION标记167

18.5.3解决老板的问题167

18.5.4使用SQL自动生成SQL168

第19章 隐式的列170

19.1目标:减少输入171

19.2反模式:捷径会让你迷失方向171

19.2.1破坏代码重构171

19.2.2隐藏的开销172

19.2.3你请求,你获得172

19.3如何识别反模式173

19.4合理使用反模式173

19.5解决方案:明确列出列名174

19.5.1预防错误174

19.5.2你不需要它175

19.5.3无论如何你都需要放弃使用通配符175

第四部分 应用程序开发反模式178

第20章 明文密码178

20.1 目标:恢复或重置密码178

20.2反模式:使用明文存储密码179

20.2.1存储密码179

20.2.2验证密码180

20.2.3在E-mail中发送密码180

20.3如何识别反模式181

20.4合理使用反模式181

20.5解决方案:先哈希,后存储182

20.5.1理解哈希函数182

20.5.2在SQL中使用哈希183

20.5.3给哈希加料183

20.5.4在SQL中隐藏密码185

20.5.5重置密码,而非恢复密码186

第21章SQL注入188

21.1 目标:编写SQL动态查询189

21.2反模式:将未经验证的输入作为代码执行189

21.2.1意外无处不在190

21.2.2对Web安全的严重威胁190

21.2.3寻找治愈良方191

21.3如何识别反模式195

21.4合理使用反模式196

21.5解决方案:不信任任何人196

21.5.1过滤输入内容196

21.5.2参数化动态内容197

21.5.3给动态输入的值加引号197

21.5.4将用户与代码隔离198

21.5.5找个可靠的人来帮你审查代码200

第22章 伪键洁癖202

22.1 标:整理数据202

22.2反模式:填充角落203

22.2.1不按照顺序分配编号203

22.2.2为现有行重新编号204

22.2.3制造数据差异204

22.3如何识别反模式205

22.4合理使用反模式205

22.5解决方案:克服心里障碍205

22.5.1定义行号205

22.5.2使用GUID206

22.5.3最主要的问题207

第23章 非礼勿视209

23.1目标:写更少的代码210

23.2反模式:无米之炊210

23.2.1没有诊断的诊断210

23.2.2字里行间211

23.3如何识别反模式212

23.4合理使用反模式213

23.5解决方案:优雅地从错误中恢复213

23.5.1保持节奏213

23.5.2回溯你的脚步214

第24章 外交豁免权215

24.1目标:采用最佳实践215

24.2反模式:将SQL视为二等公民216

24.3如何识别反模式216

24.4合理使用反模式217

24.5解决方案:建立一个质量至上的文化217

24.5.1陈列A:编写文档218

24.5.2寻找证据:源代码版本控制20

24.5.3举证:测试222

24.5.4例证:同时处理多个分支223

第25章 魔豆225

25.1 目标:简化MVC的模型226

25.2反模式:模型仅仅是活动记录227

25.2.1活动记录模式连接程序模型和数据库结构228

25.2.2活动记录模式暴露了CRUD系列函数228

25.2.3活动记录模式支持弱域模型229

25.2.4魔豆难以进行单元测试231

25.3如何识别反模式232

25.4合理使用反模式232

25.5解决方案:模型包含活动记录232

25.5.1领会模型的意义233

25.5.2将领域模型应用到实际工作中234

25.5.3测试简单对象236

25.5.4回到地球237

第五部分 附录240

附录A规范化规则240

附录B参考书目252

热门推荐