注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)數(shù)據(jù)庫SQL SeverSQL反模式

SQL反模式

SQL反模式

定 價:¥59.00

作 者: (美)卡爾文 著,譚振林 譯
出版社: 人民郵電出版社
叢編項:
標(biāo) 簽: SQL

ISBN: 9787115261274 出版時間: 2011-09-01 包裝: 平裝
開本: 16開 頁數(shù): 253 字?jǐn)?shù):  

內(nèi)容簡介

  《sql反模式》是一本廣受好評的sql 圖書。它介紹了如何避免在sql的使用和開發(fā)中陷入一些常見卻經(jīng)常被忽略的誤區(qū)。它通過講述各種具體的案例,以及開發(fā)人員和使用人員在面對這些案例時經(jīng)常采用的錯誤解決方案,來介紹如何識別、利用這些陷阱,以及面對問題時正確的解決手段。另外,本書還涉及了sql的各級范式和針對它們的正確理解?!秙ql反模式》適合sql 數(shù)據(jù)庫開發(fā)人員與管理人員閱讀。

作者簡介

  Bill Karwin作為軟件工程師、咨詢師和管理者,他在20年間開發(fā)并支持了各種各樣的應(yīng)用、程序庫以及服務(wù)器,如PHP5的Zend Framework, Interbase關(guān)系型數(shù)據(jù)庫,以及EnhydraJava應(yīng)用服務(wù)器等。他一直無私地分享他的專業(yè)知識,來幫助其他程序員提高效率、獲得成功。他曾以各種方式回答了上千個關(guān)于SQL的疑問,其中不乏一些嚴(yán)重但又經(jīng)常被忽略的問題。

圖書目錄

第1章 引言 
1.1 誰需要這本書 
1.2 本書內(nèi)容 
1.2.1 本書結(jié)構(gòu) 
1.2.2 反模式分解 
1.3 本書未涉及的內(nèi)容 
1.4 規(guī)約 
1.5 范例數(shù)據(jù)庫 
1.6 致謝 
第一部分 邏輯型數(shù)據(jù)庫設(shè)計反模式
第2章 亂穿馬路 
2.1 目標(biāo):存儲多值屬性 
2.2 反模式:格式化的逗號分隔列表 
2.2.1 查詢指定賬號的產(chǎn)品 
2.2.2 查詢指定產(chǎn)品的賬號 
2.2.3 執(zhí)行聚合查詢 
2.2.4 更新指定產(chǎn)品的賬號 
2.2.5 驗證產(chǎn)品ID 
2.2.6 選擇合適的分隔符 
2.2.7 列表長度限制 
2.3 如何識別反模式 
2.4 合理使用反模式 
2.5 解決方案:創(chuàng)建一張交叉表 
2.5.1 通過賬號查詢產(chǎn)品和反過來查詢 
2.5.2 執(zhí)行聚合查詢 
2.5.3 更新指定產(chǎn)品的相關(guān)聯(lián)系人 
2.5.4 驗證產(chǎn)品ID 
2.5.5 選擇分隔符 
2.5.6 列表長度限制 
2.5.7 其他使用交叉表的好處 
第3章 單純的樹 
3.1 目標(biāo):分層存儲與查詢 
3.2 反模式:總是依賴父節(jié)點 
3.2.1 使用鄰接表查詢樹 
3.2.2 使用鄰接表維護(hù)樹 
3.3 如何識別反模式 
3.4 合理使用反模式 
3.5 解決方案:使用其他樹模型 
3.5.1 路徑枚舉 
3.5.2 嵌套集 
3.5.3 閉包表 
3.5.4 你該使用哪種設(shè)計 
第4章 需要ID 
4.1 目標(biāo):建立主鍵規(guī)范 
4.2 反模式:以不變應(yīng)萬變 
4.2.1 冗余鍵值 
4.2.2 允許重復(fù)項 
4.2.3 意義不明的關(guān)鍵字 
4.2.4 使用USING關(guān)鍵字 
4.2.5 使用組合鍵之難 
4.3 如何識別反模式 
4.4 合理使用反模式 
4.5 解決方案:裁剪設(shè)計 
4.5.1 直截了當(dāng)?shù)孛枋鲈O(shè)計 
4.5.2 打破傳統(tǒng) 
4.5.3 擁抱自然鍵和組合鍵 
第5章 不用鑰匙的入口 
5.1 目標(biāo):簡化數(shù)據(jù)庫架構(gòu) 
5.2 反模式:無視約束 
5.2.1 假設(shè)無瑕代碼 
5.2.2 檢查錯誤 
5.2.3 “那不是我的錯!” 
5.2.4 進(jìn)退維谷  
5.3 如何識別反模式 
5.4 合理使用反模式 
5.5 解決方案:聲明約束 
5.5.1 支持同步修改 
5.5.2 系統(tǒng)開銷過度?不見得 
第6章 實體-屬性-值 
6.1 目標(biāo):支持可變的屬性 
6.2 反模式:使用泛型屬性表 
6.2.1 查詢屬性 
6.2.2 支持?jǐn)?shù)據(jù)完整性 
6.2.3 無法聲明強制屬性 
6.2.4 無法使用SQL的數(shù)據(jù)類型 
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 半結(jié)構(gòu)化數(shù)據(jù)模型 
6.5.5 后處理 
第7章 多態(tài)關(guān)聯(lián) 
7.1 目標(biāo):引用多個父表 
7.2 反模式:使用雙用途外鍵 
7.2.1 定義多態(tài)關(guān)聯(lián) 
7.2.2 使用多態(tài)關(guān)聯(lián)進(jìn)行查詢 
7.2.3 非面向?qū)ο蠓独?br />7.3 如何識別反模式 
7.4 合理使用反模式 
7.5 解決方案:讓關(guān)系變得簡單 
7.5.1 反向引用 
7.5.2 創(chuàng)建交叉表 
7.5.3 設(shè)立交通燈 
7.5.4 雙向查找 
7.5.5 合并跑道 
7.5.6 創(chuàng)建共用的超級表 
第8章 多列屬性 
8.1 目標(biāo):存儲多值屬性 
8.2 反模式:創(chuàng)建多個列 
8.2.1 查詢數(shù)據(jù) 
8.2.2 添加及刪除值 
8.2.3 確保唯一性 
8.2.4 處理不斷增長的值集 
8.3 如何識別反模式 
8.4 合理使用反模式 
8.5 解決方案:創(chuàng)建從屬表 
第9章 元數(shù)據(jù)分裂 
9.1 目標(biāo):支持可擴展性 
9.2 反模式:克隆表與克隆列 
9.2.1 不斷產(chǎn)生的新表 
9.2.2 管理數(shù)據(jù)完整性 
9.2.3 同步數(shù)據(jù) 
9.2.4 確保唯一性 
9.2.5 跨表查詢 
9.2.6 同步元數(shù)據(jù) 
9.2.7 管理引用完整性 
9.2.8 標(biāo)識元數(shù)據(jù)分裂列 
9.3 如何識別反模式 
9.4 合理使用反模式 
9.5 解決方案:分區(qū)及標(biāo)準(zhǔn)化 
9.5.1 使用水平分區(qū) 
9.5.2 使用垂直分區(qū) 
9.5.3 解決元數(shù)據(jù)分裂列 
第二部分 物理數(shù)據(jù)庫設(shè)計反模式
第10章 取整錯誤 
10.1 目標(biāo):使用小數(shù)取代整數(shù) 
10.2 反模式:使用FLOAT類型 
10.2.1 舍入的必要性 
10.2.2 在SQL中使用FLOAT 
10.3 如何識別反模式 
10.4 合理使用反模式 
10.5 解決方案:使用NUMERIC類型 
第11章 每日新花樣 
11.1 目標(biāo):限定列的有效值 
11.2 反模式:在列定義上指定可選值 
11.2.1 中間的是哪個 
11.2.2 添加新口味 
11.2.3 老的口味永不消失 
11.2.4 可移植性低下 
11.3 如何識別反模式 
11.4 合理使用反模式 
11.5 解決方案:在數(shù)據(jù)中指定值 
11.5.1 查詢候選值集合 
11.5.2 更新檢查表中的值 
11.5.3 支持廢棄數(shù)據(jù) 
11.5.4 良好的可移植性 
第12章 幽靈文件 
12.1 目標(biāo):存儲圖片或其他多媒體大文件 
12.2 反模式:假設(shè)你必須使用文件系統(tǒng) 
12.2.1 文件不支持DELETE 
12.2.2 文件不支持事務(wù)隔離 
12.2.3 文件不支持回滾操作 
12.2.4 文件不支持?jǐn)?shù)據(jù)庫備份工具 
12.2.5 文件不支持SQL的訪問權(quán)限設(shè)置 
12.2.6 文件不是SQL數(shù)據(jù)類型 
12.3 如何識別反模式 
12.4 合理使用反模式 
12.5 解決方案:在需要時使用BLOB 類型 
第13章 亂用索引 
13.1 目標(biāo):優(yōu)化性能 
13.2 反模式:無規(guī)劃地使用索引 
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 優(yōu)化 
13.5.6 重建 
第三部分 查詢反模式
第14章 對未知的恐懼 
14.1 目標(biāo):辨別懸空值 
14.2 反模式:將NULL作為普通的值,反之亦然 
14.2.1 在表達(dá)式中使用NULL 
14.2.2 搜索允許為空的列 
14.2.3 在查詢參數(shù)中使用NULL 
14.2.4 避免上述問題 
14.3 如何識別反模式 
14.4 合理使用反模式 
14.5 解決方案:將NULL視為特殊值 
14.5.1 在標(biāo)量表達(dá)式中使用NULL 
14.5.2 在布爾表達(dá)式中使用NULL 
14.5.3 檢索NULL值 
14.5.4 聲明NOT NULL的列 
14.5.5 動態(tài)默認(rèn)值 
第15章 模棱兩可的分組 
15.1 目標(biāo):獲取每組的最大值 
15.2 反模式:引用非分組列 
15.2.1 單值規(guī)則 
15.2.2 我想要的查詢 
15.3 如何識別反模式 
15.4 合理使用反模式 
15.5 解決方案:無歧義地使用列 
15.5.1 只查詢功能依賴的列 
15.5.2 使用關(guān)聯(lián)子查詢 
15.5.3 使用衍生表 
15.5.4 使用JOIN 
15.5.5 對額外的列使用聚合函數(shù) 
15.5.6 連接同組所有值 
第16章 隨機選擇 
16.1 目標(biāo):獲取樣本記錄 
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 目標(biāo):全文搜索 
17.2 反模式:模式匹配斷言 
17.3 如何識別反模式 
17.4 合理使用反模式 
17.5 解決方案:使用正確的工具 
17.5.1 數(shù)據(jù)庫擴展 
17.5.2 第三方搜索引擎 
第18章 意大利面條式查詢 
18.1 目標(biāo):減少SQL查詢數(shù)量 
18.2 反模式:使用一步操作解決復(fù)雜問題 
18.2.1 副作用 
18.2.2 那好像還不夠…… 
18.3 如何識別反模式 
18.4 合理使用反模式 
18.5 解決方案:分而治之 
18.5.1 一步一個腳印 
18.5.2 尋找UNION標(biāo)記 
18.5.3 解決老板的問題 
18.5.4 使用SQL自動生成SQL 
第19章 隱式的列 
19.1 目標(biāo):減少輸入 
19.2 反模式:捷徑會讓你迷失方向 
19.2.1 破壞代碼重構(gòu) 
19.2.2 隱藏的開銷 
19.2.3 你請求,你獲得 
19.3 如何識別反模式 
19.4 合理使用反模式 
19.5 解決方案:明確列出列名 
19.5.1 預(yù)防錯誤 
19.5.2 你不需要它 
19.5.3 無論如何你都需要放棄使用通配符 
第四部分 應(yīng)用程序開發(fā)反模式
第20章 明文密碼  
20.1 目標(biāo):恢復(fù)或重置密碼 
20.2 反模式:使用明文存儲密碼 
20.2.1 存儲密碼 
20.2.2 驗證密碼 
20.2.3 在E-mail中發(fā)送密碼 
20.3 如何識別反模式 
20.4 合理使用反模式 
20.5 解決方案:先哈希,后存儲 
20.5.1 理解哈希函數(shù) 
20.5.2 在SQL中使用哈?!?br />20.5.3 給哈希加料 
20.5.4 在SQL中隱藏密碼 
20.5.5 重置密碼,而非恢復(fù)密碼 
第21章 SQL注入 
21.1 目標(biāo):編寫SQL動態(tài)查詢 
21.2 反模式:將未經(jīng)驗證的輸入作為代碼執(zhí)行 
21.2.1 意外無處不在 
21.2.2 對Web安全的嚴(yán)重威脅 
21.2.3 尋找治愈良方 
21.3 如何識別反模式 
21.4 合理使用反模式 
21.5 解決方案:不信任任何人 
21.5.1 過濾輸入內(nèi)容 
21.5.2 參數(shù)化動態(tài)內(nèi)容 
21.5.3 給動態(tài)輸入的值加引號 
21.5.4 將用戶與代碼隔離 
21.5.5 找個可靠的人來幫你審查代碼 
第22章 偽鍵潔癖 
22.1 目標(biāo):整理數(shù)據(jù) 
22.2 反模式:填充角落 
22.2.1 不按照順序分配編號 
22.2.2 為現(xiàn)有行重新編號 
22.2.3 制造數(shù)據(jù)差異 
22.3 如何識別反模式 
22.4 合理使用反模式 
22.5 解決方案:克服心里障礙 
22.5.1 定義行號 
22.5.2 使用GUID 
22.5.3 最主要的問題 
第23章 非禮勿視 
23.1 目標(biāo):寫更少的代碼 
23.2 反模式:無米之炊 
23.2.1 沒有診斷的診斷 
23.2.2 字里行間 
23.3 如何識別反模式 
23.4 合理使用反模式 
23.5 解決方案:優(yōu)雅地從錯誤中恢復(fù) 
23.5.1 保持節(jié)奏 
23.5.2 回溯你的腳步 
第24章 外交豁免權(quán) 
24.1 目標(biāo):采用最佳實踐 
24.2 反模式:將SQL視為二等公民 
24.3 如何識別反模式 
24.4 合理使用反模式 
24.5 解決方案:建立一個質(zhì)量至上的文化 
24.5.1 陳列A:編寫文檔 
24.5.2 尋找證據(jù):源代碼版本控制 
24.5.3 舉證:測試 
24.5.4 例證:同時處理多個分支 
第25章 魔豆 
25.1 目標(biāo):簡化MVC的模型 
25.2 反模式:模型僅僅是活動記錄 
25.2.1 活動記錄模式連接程序模型和數(shù)據(jù)庫結(jié)構(gòu) 
25.2.2 活動記錄模式暴露了CRUD系列函數(shù) 
25.2.3 活動記錄模式支持弱域模型 
25.2.4 魔豆難以進(jìn)行單元測試 
25.3 如何識別反模式 
25.4 合理使用反模式 
25.5 解決方案:模型包含活動記錄 
25.5.1 領(lǐng)會模型的意義 
25.5.2 將領(lǐng)域模型應(yīng)用到實際工作中 
25.5.3 測試簡單對象 
25.5.4 回到地球 
第五部分 附錄
附錄A 規(guī)范化規(guī)則 
附錄B 參考書目

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號