商品簡介
本書深入淺出地介紹了目前世界上最受歡迎的數據庫管理系統之一——SQL Server。全書共分三個部分:第一部分闡釋了數據庫的基本概念,講解了數據庫建模語言;第二部分展示了從概念建模到在SQL Server 2008上真正實現數據庫的過程;第三部分深入探討了SQL Server若干方面的技術細節,如數據保護、索引、并發訪問等。通過將理論融入數據庫實踐,清晰地講解了關係型數據庫的設計原則,完整地展示了如何進行良好的關係型數據庫設計,深入揭示了SQL Server 2008的技術細節。
本書濃縮了作者作為SQL Server數據庫架構師多年來豐富的實踐經驗,適合各類數據庫開發和管理人員學習參考。
目次
第1章 數據庫概念簡介
1.1 數據庫設計階段
1.1.1 概念階段
1.1.2 邏輯階段
1.1.3 實現階段
1.1.4 物理階段
1.2 關係數據結構
1.2.1 數據庫和模式
1.2.2 表、行和列
1.2.3 信息原則
1.2.4 域
1.2.5 元數據
1.2.6 鍵
1.2.7 未顯式賦值的項(NULL)
1.3 實體之間的關係
1.3.1 二元關係
1.3.2 非二元關係
1.4 數據訪問語言(SQL)
1.5 理解依賴性
1.5.1 函數依賴性
1.5.2 判定
1.6 總結
第2章 數據建模語言
2.1 數據建模介紹
2.2 實體
2.3 屬性
2.3.1 主鍵
2.3.2 替代鍵
2.3.3 外鍵
2.3.4 域
2.3.5 命名
2.4 關係
2.4.1 識別性關係
2.4.2 非識別性關係
2.4.3 角色名字
2.4.4 關係基數
2.4.5 動詞短語(關係名字)
2.5 描述信息
2.6 其他建模方法
2.6.1 信息工程
2.6.2 Chen ERD
2.6.3 Visio
2.6.4 Management Studio數據庫關係圖
2.7 最佳實踐
2.8 總結
第3章 概念階段數據建模
3.1 理解需求
3.2 文檔化過程
3.3 需求收集
3.3.1 客戶訪談
3.3.2 要回答的問題
3.3.3 現存的系統和原型
3.3.4 其他類型的文檔
3.4 識別對象和過程
3.4.1 識別實體
3.4.2 實體間關係
3.4.3 識別屬性和域
3.5 識別業務規則和業務過程
3.5.1 識別業務規則
3.5.2 識別基礎業務過程
3.6 完成概念模型
3.6.1 識別明顯的、額外的數據需求
3.6.2 和客戶一起評審
3.6.3 重復以上步驟直到客戶同意你的模型
3.7 最佳實踐
3.8 總結
第4章 規範化過程
4.1 為什麼要規範化
4.1.1 消滅重復數據
4.1.2 避免編寫不必要的代碼
4.1.3 給表瘦身
4.1.4 最大化聚集索引的使用
4.1.5 降低每張表中索引的數量
4.2 規範化應該走多遠
4.3 規範化過程
4.4 實體和屬性的形式:第一范式
4.4.1 所有屬性必須是原子的
4.4.2 實體的所有實例必須包含相同數量的值
4.4.3 實體中出現的所有實體類型都必須不同
4.4.4 第一范式所避免的不規則編程
4.4.5 當前設計不符合第一范式的線索
4.5 屬性間的關係
4.5.1 第二范式
4.5.2 第三范式
4.5.3 Boyce-Codd范式
4.6 實體中的多值依賴
4.6.1 第四范式
4.6.2 第五范式
4.7 非規範化
4.8 最佳實踐
4.9 總結
4.10 額外的例子
4.11 本書迄今為止所講述的故事
第5章 實現基礎的表結構
5.1 評審邏輯設計
5.2 變換設計
5.2.1 選擇名字
5.2.2 處理子類型
5.2.3 決定樹的實現方式
5.2.4 選擇鍵的實現方式
5.2.5 決定域的實現方式
5.2.6 設置模式
5.2.7 評審“最終的”實現模型
5.3 實現設計
5.3.1 創建基本表結構
5.3.2 添加唯一性約束
5.3.3 構建默認約束
5.3.4 添加關係(外鍵)
5.3.5 處理排序規則和排序
5.3.6 計算列
5.3.7 實現用戶定義的數據類型
5.3.8 文檔化你的數據庫
5.3.9 處理依賴信息
5.4 最佳實踐
5.5 總結
第6章 保護數據的完整性
6.1 最佳實踐
6.2 自動數據保護
6.2.1 聲明性數據保護
6.2.2 基本語法
6.2.3 基於簡單表達式的CHECK約束
6.2.4 基於函數的CHECK約束
6.2.5 約束引起的錯誤
6.2.6 DML觸發器
6.2.7 處理來自觸發器和約束的錯誤
6.3 手動數據保護
6.4 更多最佳實踐
6.5 總結
第7章 模式與查詢技術
7.1 預計算值
7.1.1 序列表
7.1.2 日期計算
7.2 二進制大型對象(BLOB)
7.3 存儲用戶自定義數據
7.3.1 一長串通用列
7.3.2 實體-屬性-值(EAV)
7.3.3 往表中增加列
7.4 通用實現對象
7.5 反模式
7.5.1 多用途鍵域
7.5.2 通用鍵引用
7.5.3 對非結構化數據的過度使用
7.6 總結
7.7 回顧與展望
第8章 數據訪問安全
8.1 安全主體與安全對象
8.2 數據庫安全概述
8.2.1 模擬
8.2.2 權限
8.2.3 控制對象訪問
8.2.4 角色
8.2.5 模式
8.3 通過T-SQL編程對象控制對象訪問
8.3.1 存儲過程和標量函數
8.3.2 對象內模擬
8.3.3 跨數據庫邊界
8.3.4 不同的服務器(分布式查詢)
8.4 視圖與表值函數
8.4.1 一般用法
8.4.2 使用視圖實現可配置的行級安全
8.5 數據混淆
8.6 監視與審核
8.6.1 服務器與數據庫審核
8.6.2 使用DML觸發器查看表的變更歷史
8.6.3 DDL觸發器
8.6.4 分析器日志
8.7 最佳實踐
8.8 總結
第9章 表結構與索引
9.1 數據庫物理結構
9.1.1 文件與文件組
9.1.2 分區與頁
9.1.3 頁中的數據
9.1.4 分區
9.2 索引概覽
9.3 基本索引結構
9.4 索引類型
9.4.1 聚集索引
9.4.2 非聚集索引
9.4.3 聚集表上的非聚集索引
9.5 索引創建的基本方法
9.6 基本的索引使用模式
9.6.1 使用聚集索引
9.6.2 使用非聚集索引
9.6.3 使用唯一索引
9.7 高級的索引使用案例
9.7.1 外鍵索引
9.7.2 索引視圖
9.8 最佳實踐
9.9 總結
第10章 并發編程
10.1 什麼是并發
10.2 查詢優化的基礎知識
10.3 操作系統與硬件因素
10.4 事務
10.4.1 事務語法
10.4.2 已編譯的SQL Server代碼
10.5 SQL Server并發控制
10.5.1 鎖
10.5.2 隔離級別
10.6 完整性與并發性編程
10.6.1 悲觀鎖定
10.6.2 實現單線程代碼塊
10.6.3 樂觀鎖定
10.6.4 基於行的鎖定
10.6.5 邏輯工作單元
10.7 最佳實踐
10.8 總結
第11章 數據訪問策略
11.1 即席SQL
11.1.1 優點
11.1.2 缺陷
11.2 存儲過程
11.2.1 封裝性
11.2.2 動態存儲過程
11.2.3 安全性
11.2.4 性能
11.2.5 缺陷
11.2.6 觀點
11.3 T-SQL與CLR(公共語言運行時)
11.3.1 選擇T-SQL的準則
11.3.2 選擇.NET的準則
11.3.3 CLR對象類型
11.4 最佳實踐
11.5 總結
附錄A Codd的RDBMS十二法則
附錄B 標量數據類型參考
索引