SQL反模式
¥
33
5.6折
¥
59
九品
仅1件
作者 Bill Karwin 著;谭振林 译
出版社 人民邮电出版社
出版时间 2011-09
版次 01
装帧 平装
上书时间 2024-09-21
商品详情
品相描述:九品
图书标准信息
作者
Bill Karwin 著;谭振林 译
出版社
人民邮电出版社
出版时间
2011-09
版次
01
ISBN
9787115261274
定价
59.00元
装帧
平装
开本
16开
纸张
胶版纸
页数
254页
字数
355千字
正文语种
简体中文
原版书名
SQL Antipatterns: Avoiding the Pitfalls of Database Programming
丛书
图灵程序设计丛书
【内容简介】
《图灵程序设计丛书:SQL反模式》是一本广受好评的SQL图书。它介绍了如何避免在SQL的使用和开发中陷入一些常见却经常被忽略的误区。它通过讲述各种具体的案例,以及开发人员和使用人员在面对这些案例时经常采用的错误解决方案,来介绍如何识别、利用这些陷阱,以及面对问题时正确的解决手段。另外,《图灵程序设计丛书:SQL反模式》还涉及了SQL的各级范式和针对它们的正确理解。
【作者简介】
Bill Karwin作为软件工程师、咨询师和管理者,他在20年间开发并支持了各种各样的应用、程序库以及服务器,如PHP5的Zend Framework, Interbase关系型数据库,以及EnhydraJava应用服务器等。他一直无私地分享他的专业知识,来帮助其他程序员提高效率、获得成功。他曾以各种方式回答了上千个关于SQL的疑问,其中不乏一些严重但又经常被忽略的问题。
【目录】
第1章引言 1.1谁需要这本书 1.2本书内容 1.2.1本书结构 1.2.2反模式分解 1.3本书未涉及的内容 1.4规约 1.5范例数据库 1.6致谢 第一部分逻辑型数据库设计反模式 第2章乱穿马路 2.1目标:存储多值属性 2.2反模式:格式化的逗号分隔列表 2.2.1查询指定账号的产品 2.2.2查询指定产品的账号 2.2.3执行聚合查询 2.2.4更新指定产品的账号 2.2.5验证产品ID 2.2.6选择合适的分隔符 2.2.7列表长度限制 2.3如何识别反模式 2.4合理使用反模式 2.5解决方案:创建一张交叉表 2.5.1通过账号查询产品和反过来查询 2.5.2执行聚合查询 2.5.3更新指定产品的相关联系人 2.5.4验证产品ID 2.5.5选择分隔符 2.5.6列表长度限制 2.5.7其他使用交叉表的好处 第3章单纯的树 3.1目标:分层存储与查询 3.2反模式:总是依赖父节点 3.2.1使用邻接表查询树 3.2.2使用邻接表维护树 3.3如何识别反模式 3.4合理使用反模式 3.5解决方案:使用其他树模型 3.5.1路径枚举 3.5.2嵌套集 3.5.3闭包表 3.5.4你该使用哪种设计 第4章需要ID 4.1目标:建立主键规范 4.2反模式:以不变应万变 4.2.1冗余键值 4.2.2允许重复项 4.2.3意义不明的关键字 4.2.4使用USING关键字 4.2.5使用组合键之难 4.3如何识别反模式 4.4合理使用反模式 4.5解决方案:裁剪设计 4.5.1直截了当地描述设计 4.5.2打破传统 4.5.3拥抱自然键和组合键 第5章不用钥匙的入口 5.1目标:简化数据库架构 5.2反模式:无视约束 5.2.1假设无瑕代码 5.2.2检查错误 5.2.3“那不是我的错!” 5.2.4进退维谷 5.3如何识别反模式 5.4合理使用反模式 5.5解决方案:声明约束 5.5.1支持同步修改 5.5.2系统开销过度?不见得 第6章实体-属性-值 6.1目标:支持可变的属性 6.2反模式:使用泛型属性表 6.2.1查询属性 6.2.2支持数据完整性 6.2.3无法声明强制属性 6.2.4无法使用SQL的数据类型 6.2.5无法确保引用完整性 6.2.6无法配置属性名 6.2.7重组列 6.3如何识别反模式 6.4合理使用反模式 6.5解决方案:模型化子类型 6.5.1单表继承 6.5.2实体表继承 6.5.3类表继承 6.5.4半结构化数据模型 6.5.5后处理 第7章多态关联 7.1目标:引用多个父表 7.2反模式:使用双用途外键 7.2.1定义多态关联 7.2.2使用多态关联进行查询 7.2.3非面向对象范例 7.3如何识别反模式 7.4合理使用反模式 7.5解决方案:让关系变得简单 7.5.1反向引用 7.5.2创建交叉表 7.5.3设立交通灯 7.5.4双向查找 7.5.5合并跑道 7.5.6创建共用的超级表 第8章多列属性 8.1目标:存储多值属性 8.2反模式:创建多个列 8.2.1查询数据 8.2.2添加及删除值 8.2.3确保唯一性 8.2.4处理不断增长的值集 8.3如何识别反模式 8.4合理使用反模式 8.5解决方案:创建从属表 第9章元数据分裂 9.1目标:支持可扩展性 9.2反模式:克隆表与克隆列 9.2.1不断产生的新表 9.2.2管理数据完整性 9.2.3同步数据 9.2.4确保唯一性 9.2.5跨表查询 9.2.6同步元数据 9.2.7管理引用完整性 9.2.8标识元数据分裂列 9.3如何识别反模式 9.4合理使用反模式 9.5解决方案:分区及标准化 9.5.1使用水平分区 9.5.2使用垂直分区 9.5.3解决元数据分裂列 第二部分物理数据库设计反模式 第10章取整错误 10.1目标:使用小数取代整数 10.2反模式:使用FLOAT类型 10.2.1舍入的必要性 10.2.2在SQL中使用FLOAT 10.3如何识别反模式 10.4合理使用反模式 10.5解决方案:使用NUMERIC类型 第11章每日新花样 11.1目标:限定列的有效值 11.2反模式:在列定义上指定可选值 11.2.1中间的是哪个 11.2.2添加新口味 11.2.3老的口味永不消失 11.2.4可移植性低下 11.3如何识别反模式 11.4合理使用反模式 11.5解决方案:在数据中指定值 11.5.1查询候选值集合 11.5.2更新检查表中的值 11.5.3支持废弃数据 11.5.4良好的可移植性 第12章幽灵文件 12.1目标:存储图片或其他多媒体大文件 12.2反模式:假设你必须使用文件系统 12.2.1文件不支持DELETE 12.2.2文件不支持事务隔离 12.2.3文件不支持回滚操作 12.2.4文件不支持数据库备份工具 12.2.5文件不支持SQL的访问权限设置 12.2.6文件不是SQL数据类型 12.3如何识别反模式 12.4合理使用反模式 12.5解决方案:在需要时使用BLOB类型 第13章乱用索引 13.1目标:优化性能 13.2反模式:无规划地使用索引 13.2.1无索引 13.2.2索引过多 13.2.3索引也无能为力 13.3如何识别反模式 13.4合理使用反模式 13.5解决方案:MENTOR你的索引 13.5.1测量 13.5.2解释 13.5.3挑选 13.5.4测试 13.5.5优化 13.5.6重建 第三部分查询反模式 第14章对未知的恐惧 14.1目标:辨别悬空值 14.2反模式:将NULL作为普通的值,反之亦然 14.2.1在表达式中使用NULL 14.2.2搜索允许为空的列 14.2.3在查询参数中使用NULL 14.2.4避免上述问题 14.3如何识别反模式 14.4合理使用反模式 14.5解决方案:将NULL视为特殊值 14.5.1在标量表达式中使用NULL 14.5.2在布尔表达式中使用NULL 14.5.3检索NULL值 14.5.4声明NOTNULL的列 14.5.5动态默认值 第15章模棱两可的分组 15.1目标:获取每组的最大值 15.2反模式:引用非分组列 15.2.1单值规则 15.2.2我想要的查询 15.3如何识别反模式 15.4合理使用反模式 15.5解决方案:无歧义地使用列 15.5.1只查询功能依赖的列 15.5.2使用关联子查询 15.5.3使用衍生表 15.5.4使用JOIN 15.5.5对额外的列使用聚合函数 15.5.6连接同组所有值 第16章随机选择 16.1目标:获取样本记录 16.2反模式:随机排序 16.3如何识别反模式 16.4合理使用反模式 16.5解决方案:没有具体的顺序 16.5.1从1到最大值之间随机选择 16.5.2选择下一个最大值 16.5.3获取所有的键值,随机选择一个 16.5.4使用偏移量选择随机行 16.5.5专有解决方案 第17章可怜人的搜索引擎 17.1目标:全文搜索 17.2反模式:模式匹配断言 17.3如何识别反模式 17.4合理使用反模式 17.5解决方案:使用正确的工具 17.5.1数据库扩展 17.5.2第三方搜索引擎 第18章意大利面条式查询 18.1目标:减少SQL查询数量 18.2反模式:使用一步操作解决复杂问题 18.2.1副作用 18.2.2那好像还不够…… 18.3如何识别反模式 18.4合理使用反模式 18.5解决方案:分而治之 18.5.1一步一个脚印 18.5.2寻找UNION标记 18.5.3解决老板的问题 18.5.4使用SQL自动生成SQL 第19章隐式的列 19.1目标:减少输入 19.2反模式:捷径会让你迷失方向 19.2.1破坏代码重构 19.2.2隐藏的开销 19.2.3你请求,你获得 19.3如何识别反模式 19.4合理使用反模式 19.5解决方案:明确列出列名 19.5.1预防错误 19.5.2你不需要它 19.5.3无论如何你都需要放弃使用通配符 第四部分应用程序开发反模式 第20章明文密码 20.1目标:恢复或重置密码 20.2反模式:使用明文存储密码 20.2.1存储密码 20.2.2验证密码 20.2.3在E-mail中发送密码 20.3如何识别反模式 20.4合理使用反模式 20.5解决方案:先哈希,后存储 20.5.1理解哈希函数 20.5.2在SQL中使用哈希 20.5.3给哈希加料 20.5.4在SQL中隐藏密码 20.5.5重置密码,而非恢复密码 第21章SQL注入 21.1目标:编写SQL动态查询 21.2反模式:将未经验证的输入作为代码执行 21.2.1意外无处不在 21.2.2对Web安全的严重威胁 21.2.3寻找治愈良方 21.3如何识别反模式 21.4合理使用反模式 21.5解决方案:不信任任何人 21.5.1过滤输入内容 21.5.2参数化动态内容 21.5.3给动态输入的值加引号 21.5.4将用户与代码隔离 21.5.5找个可靠的人来帮你审查代码 第22章伪键洁癖 22.1目标:整理数据 22.2反模式:填充角落 22.2.1不按照顺序分配编号 22.2.2为现有行重新编号 22.2.3制造数据差异 22.3如何识别反模式 22.4合理使用反模式 22.5解决方案:克服心里障碍 22.5.1定义行号 22.5.2使用GUID 22.5.3最主要的问题 第23章非礼勿视 23.1目标:写更少的代码 23.2反模式:无米之炊 23.2.1没有诊断的诊断 23.2.2字里行间 23.3如何识别反模式 23.4合理使用反模式 23.5解决方案:优雅地从错误中恢复 23.5.1保持节奏 23.5.2回溯你的脚步 第24章外交豁免权 24.1目标:采用最佳实践 24.2反模式:将SQL视为二等公民 24.3如何识别反模式 24.4合理使用反模式 24.5解决方案:建立一个质量至上的文化 24.5.1陈列A:编写文档 24.5.2寻找证据:源代码版本控制 24.5.3举证:测试 24.5.4例证:同时处理多个分支 第25章魔豆 25.1目标:简化MVC的模型 25.2反模式:模型仅仅是活动记录 25.2.1活动记录模式连接程序模型和数据库结构 25.2.2活动记录模式暴露了CRUD系列函数 25.2.3活动记录模式支持弱域模型 25.2.4魔豆难以进行单元测试 25.3如何识别反模式 25.4合理使用反模式 25.5解决方案:模型包含活动记录 25.5.1领会模型的意义 25.5.2将领域模型应用到实际工作中 25.5.3测试简单对象 25.5.4回到地球 第五部分附录 附录A规范化规则 附录B参考书目
点击展开
点击收起
— 没有更多了 —
本店暂时无法向该地区发货
以下为对购买帮助不大的评价