《數據庫系統(tǒng)基礎教程(原書第3版)》由斯坦福大學知名計算機科學家Jeffrey Ullman和Jennifer Widom合作編寫!稊祿䦷煜到y(tǒng)基礎教程(原書第3版)》首先介紹流行的關系數據庫和對象關系數據庫內容,涉及關系數據模型、E/R模型、UML模型以及對象模型等高級數據模型。然后介紹了有關半結構化數據組織管理中比較流行的XML等內容,既包括了數據組織模型的內容,也給出了相關編程語言,如XPath、XQuery、XSLT等。
《數據庫系統(tǒng)基礎教程(原書第3版)》舉例豐富翔實,既可用作大學本科、研究生計算機及相關專業(yè)數據庫課程的教科書,也可用作數據庫領域技術人員的參考書。
《數據庫系統(tǒng)基礎教程(原書第3版)》特點:
全面改版的組織結構。
UML數據庫模型的新內容。
包括3NF綜合算法在內的操作依賴新算法的引入。
更多的3NF,包括3NF綜合算法。
擴展的SQL觸發(fā)討論。
新增的索引選擇和物化視圖。
新增的三層體系結構。
新增的PHP。
新增的OLAP和SQL立方體算子介紹。
擴展的XML內容,包括XML模式、XPath、XQuery和XSLT。
數據庫已是當今信息社會須臾不可脫離的重要工具,數據庫的教學也就成為計算機科學與技術專業(yè)的一門必修課程。
JeffreyD.1 511man教授是斯坦福大學計算機系的資深教授,自1980年編寫了其第一本數據庫教材《數據庫系統(tǒng)原理》以來,已出版過多本數據庫系統(tǒng)方面的教材。該書是他在斯坦福大學計算機系對大學生教授的第一門數據庫課程(CS145)中使用的教材,Ullman教授在第2版出版4年后,對其作了更新又出版了第3版。與第2版相比,第3版不僅重新組織了章節(jié)從而使這本書的系統(tǒng)性更強,而且內容作了大幅度增加,包括了有關索引的介紹和目前XML數據庫技術發(fā)展的新內容。
數據庫技術發(fā)展到現在,其一個很大的變化是,數據庫不僅要管理結構化的數據,而且要管理更多的半結構化的數據。本書正是從這個觀點出發(fā),將內容分成兩大部分:首先仍然是流行的關系數據庫和對象關系數據庫內容,介紹了關系數據模型、E/R模型、UML模型以及對象模型等高級數據模型。然后介紹了有關半結構化數據組織管理中比較流行的XMI。等內容,既包括了數據組織模型的內容,也給出了相關編程語言,如XPath、XQuery、XSLT等。
出版者的話
譯者序
前言
第1章 數據庫系統(tǒng)世界
1.1 數據庫系統(tǒng)的發(fā)展
1.1.1 早期的數據庫管理系統(tǒng)
1.1.2 關系數據庫系統(tǒng)
1.1.3 越來越小的系統(tǒng)
1.1.4 越來越大的系統(tǒng)
1.1.5 信息集成
1.2 數據庫管理系統(tǒng)概述
1.2.1 數據定義語言命令
1.2.2 查詢處理概述
1.2.3 存儲器和緩沖區(qū)管理器
1.2.4 事務處理
1.2.5 查詢處理器
1.3 本書概述
1.4 參考文獻
第一部分 關系數據庫模型
第2章 關系數據模型
2.1 數據模型概述
2.1.1 什么是數據模型
2.1.2 一些重要的數據模型
2.1.3 關系模型簡介
2.1.4 半結構化模型簡介
2.1.5 其他數據模型
2.1.6 幾種建模方法的比較
2.2 關系模型基礎
2.2.1 屬性
2.2.2 模式
2.2.3 元組
2.2.4 域
2.2.5 關系的等價描述
2.2.6 關系實例
2.2.7 關系上的鍵
2.2.8 數據庫模式示例
2.2.9 習題
2.3 在SQL中定義關系模式
2.3.1 SQL中的關系
2.3.2 數據類型
2.3.3 簡單的表定義
2.3.4 修改關系模式
2.3.5 默認值
2.3.6 鍵的聲明
2.3.7 習題
2.4 代數查詢語言
2.4.1 為什么需要一種專門的查詢語言
2.4.2 什么是代數
2.4.3 關系代數概述
2.4.4 關系上的集合操作
2.4.5 投影
2.4.6 選擇
2.4.7 笛卡兒積
2.4.8 自然連接
2.4.9 θ連接
2.4.1 0組合操作構成查詢
2.4.1 1命名和重命名
2.4.1 2操作之間的聯系
2.4.1 3代數表達式的線性符號
2.4.1 4習題
2.5 關系上的約束
2.5.1 作為約束語言的關系代數
2.5.2 引用完整性約束
2.5.3 鍵約束
2.5.4 其他約束舉例
2.5.5 習題
2.6 小結
2.7 參考文獻
第3章 關系數據庫設計理論
3.1 函數依賴
3.1.1 函數依賴的定義
3.1.2 關系的鍵
3.1.3 超鍵
3.1.4 習題
3.2 函數依賴的規(guī)則
3.2.1 函數依賴的推導
3.2.2 分解/結合規(guī)則
3.2.3 平凡函數依賴
3.2.4 計算屬性的閉包
3.2.5 閉包算法為何有效
3.2.6 傳遞規(guī)則
3.2.7 函數依賴的閉包集合
3.2.8 投影函數依賴
3.2.9 習題
3.3 關系數據庫模式設計
3.3.1 異常
3.3.2 分解關系
3.3.3 Boyce—Codd范式
3.3.4 分解為BCNF
3.3.5 習題
3.4 分解的優(yōu)劣
3.4.1 從分解中恢復信息
3.4.2 無損連接的chase檢驗
3.4.3 為什chase檢驗有效
3.4.4 依賴的保持
3.4.5 習題
3.5 第三范式
3.5.1 第三范式的定義
3.5.2 3NF模式綜合算法
3.5.3 為什么3NF綜合算法有效
3.5.4 習題
3.6 多值依賴
3.6.1 屬性獨立及隨之產生的冗余
3.6.2 多值依賴的定義
3.6.3 多值依賴的推導
3.6.4 第四范式
3.6.5 分解為第四范式
3.6.6 范式間的聯系
3.6.7 習題
3.7 MVD的發(fā)現算法
3.7.1 閉包和chase
3.7.2 將chase擴展到MVD
3.7.3 chase為何對MVD有效
3.7.4 投影MVD
3.7.5 習題
3.8 小結
3.9 參考文獻
第4章 高級數據庫模型
4.1 E/R模型
4.1.1 實體集
4.1.2 屬性
4.1.3 聯系
4.1.4 實體一聯系圖
4.1.5 E/R圖實例
4.1.6 二元E/R聯系的多樣性
4.1.7 多路聯系
4.1.8 聯系中的角色
4.1.9 聯系的屬性
4.1.10 多路聯系到二元聯系的轉換
4.1.11 E/R模型中的子類
4.1.12 習題
4.2 設計原則
4.2.1 忠實性
4.2.2 避免冗余
4.2.3 簡單性
4.2.4 選擇正確的聯系
4.2.5 選擇正確的元素種類
4.2.6 習題_
4.3 E/R模型中的約束
4.3.1 E/R模型中的鍵
4.3.2 E/R模型中鍵的表示
4.3.3 引用完整性
4.3.4 度約束
4.3.5 習題
4.4 弱實體集
4.4.1 弱實體集的來源
4.4.2 弱實體集的要求
4.4.3 弱實體集的符號
4.4.4 習題
4.5 從E/R圖到關系設計
4.5.1 實體集到關系的轉化
4.5.2 E/R聯系到關系的轉化
4.5.3 關系組合
4.5.4 處理弱實體集
4.5.5 習題
4.6 子類結構到關系的轉化
4.6.1 E/R方式轉化
4.6.2 面向對象方法
4.6.3 使用空值組合關系
4.6.4 各種方法的比較
4.6.5 習題
4.7 統(tǒng)一建模語言
4.7.1 UML類
4.7.2 UML類的鍵
4.7.3 關聯
4.7.4 自關聯
4.7.5 關聯類
4.7.6 UML中的子類
4.7.7 聚集與組合
4.7.8 習題
4.8 UML圖到關系的轉化
4.8.1 UML到關系的基礎知識
4.8.2 從UML子類到關系
4.8.3 從聚集與組合到關系
4.8.4 UML與弱實體集的類比
4.8.5 習題
4.9 對象定義語言
4.9.1 類聲明
4.9.2 ODL中的屬性
4.9.3 ODL中的聯系
4.9.4 反向聯系
4.9.5 聯系的多重性
4.9.6 ODL中的類型
4.9.7 ODL沖的子類
4.9.8 在ODL沖聲明鍵
4.9.9 習題
4.10 從ODL設計到關系設計
4.10.1 從ODL類到關系
4.10.2 類中的復雜屬性
4.10.3 值集合類型屬性的表示
4.10.4 其他類型構建器的表示
4.10.5 ODL中聯系的表示
4.10.6 習題
4.11小結
4.12參考文獻
第二部分 關系數據庫程序設計
第5章 代數和邏輯查詢語言
5.1 包上的關系操作
5.1.1 為什么采用包
5.1.2 包的并、交、差
5.1.3 包上的投影操作
5.1.4 包上的選擇操作
5.1.5 包的笛卡兒積
5.1.6 包的連接
5.1.7 習題
5.2 關系代數的擴展操作符
5.2.1 消除重復
5.2.2 聚集操作符
5.2.3 分組
5.2.4 分組操作符
5.2.5 擴展的投影操作符
5.2.6 排序操作符
5.2.7 外連接
5.2.8 習題
5.3 關系邏輯
5.3.1 謂詞和原子
5.3.2 算術原子
5.3.3 Datalog規(guī)則和查詢
5.3.4 Datalog規(guī)則的意義
5.3.5 擴展謂詞和內涵謂詞
5.3.6 Datalog規(guī)則應用于包
5.3.7 習題
5.4 關系代數與Datalog
5.4.1 布爾操作
5.4.2 投影
5.4.3 選擇
5.4.4 積
5.4.5 連接
5.4.6 用Datalog模擬多重操作
5.4.7 Datalog與關系代數的比較
5.4.8 習題
5.5 小結
5.6 參考文獻
第6章 數據庫語言SQL
6.1 SQL中的簡單查詢
6.1.1 SQL中的投影
6.1.2 SQL沖的選擇
6.1.3 字符串比較
6.1.4 SQL中的模式匹配
6.1.5 日期和時間
6.1.6 空值和涉及空值的比較
6.1.7 布爾值UNKNOWN
6.1.8 輸出排序
6.1.9 習題
6.2 多關系查詢
6.2.1 SQL中的積和連接
6.2.2 消除屬性歧義
6.2.3 元組變量
6.2.4 多關系查詢的解釋
6.2.5 查詢的并、交、差
6.2.6 習題
6.3 子查詢
6.3.1 產生標量值的子查詢
6.3.2 關系的條件表達式
6.3.3 元組的條件表達式
6.3.4 關聯子查詢
6.3.5 FROM子句中的子查詢
6.3.6 SQL的連接表達式
6.3.7 自然連接
6.3.8 外連接
6.3.9 習題
6.4 全關系操作
64.1 消除重復
6.4.2 并、交、差中的重復
6.4.3 SQL中的分組和聚集
6.4.4 聚集操作符
6.4.5 分組
6.4.6 分組、聚集和空值
6.4.7 HAVING子句
6.4.8 習題
6.5 數據庫更新
6.5.1 插入
6.5.2 刪除
6.5.3 修改
6.5.4 習題
6.6 SQL中的事務
6.6.1 可串行化
6.6.2 原子性
6.6.3 事務
6.6.4 只讀事務
6.6.5 讀臟數據
6.6.6 其他隔離層次
6.6.7 習題
6.7 小結
6.8 參考文獻
第7章 約束與觸發(fā)器
7.1 鍵和外鍵
7.1.1 外鍵約束聲明
7.1.2 維護引用完整性
7.1.3 延遲約束檢查
7.1.4 習題
7.2 屬性和元組上的約束
7.2.1 非空值約束
7.2.2 基于屬性的CHECK約束
7.2.3 基于元組的CHECK約束
7.2.4 基于元組和基于屙陛的約束的比較
7.2.5 習題
7.3 修改約束
7.3.1 給約束命名
7.3.2 修改表上的約束
7.3.3 習題
7.4 斷言
7.4.1 創(chuàng)建斷言
7.4.2 使用斷言
7.4.3 習題
7.5 觸發(fā)器
7.5.1 SQL中的觸發(fā)器
7.5.2 觸發(fā)器設計的選項
7.5.3 習題
7.6 小結
7.7 參考文獻
第8章 視圖與索引
8.1 虛擬視圖
8.1.1 視圖定義
8.1.2 視圖查詢
8.1.3 屬性重命名
8.1.4 習題
8.2 視圖更新
第三部分 半結構化數據的建模和程序設計