目 錄
基 礎 篇
第○章 緒論 (投影片檢視)
0.1 前言 0-2
0.2 資料處理模式的演進 0-3
0.2.1 第一階段—人工檔案管理 0-4
0.2.2 第二階段—電腦化循序式檔案系統 0-5
0.2.3 第三階段—電腦化直接存取式檔案系統 0-6
0.2.4 第四階段—以記錄為處理單元的資料庫管理系統 0-6
0.2.4.1 階層式資料庫管理系統 0-7
0.2.4.2 網路式資料庫管理系統 0-7
0.2.4.3 關聯式資料庫管理系統 0-8
0.2.5 第五階段—
以物件為處理單元的物件導向式資料庫管理系統 0-9
0.2.5.1 物件導向式資料庫管理系統 0-10
0.2.5.2 物件關聯式資料庫管理系統 0-10
0.3 資料庫系統處理架構的演進 0-13
0.3.1 第一階段—集中式處理 0-13
0.3.2 第二階段—主-從式架構 0-14
0.3.3 第三階段—三層式應用系統發展架構 0-14
0.3.4 第四階段—同質性分散式處理 0-15
0.3.5 第五階段—異質性分散式處理 0-15
0.3.6 第六階段—行動計算處理 0-17
0.4 資料處理的未來發展 0-24
第一章 資料庫系統
1.1 前言 1-2
1.2 資料庫系統簡介 1-4
1.2.1 使用者 1-5
1.2.1.1 直接使用者 (End Users) 1-5
1.2.1.2 應用程式 (Application Programs) 1-6
1.2.1.3 資料庫管理師 (Database Administrator, DBA) 1-6
1.2.2 資料 1-9
1.2.3 硬體 1-9
1.2.4 軟體 1-10
1.2.4.1 資料庫管理系統的基本功能 1-10
1.2.4.2 應用程式 1-15
1.3 使用資料庫系統的優點 1-15
1.4 使用資料庫系統的缺點與注意事項 1-17
1.4.1 使用資料庫系統的缺點 1-17
1.4.2 資料安全的維護 1-18
1.5 資料獨立 (Data Independence) 1-21
1.6 完整的資料庫系統架構 1-24
1.6.1 外部層 (The External Level) 1-25
1.6.2 概念層 (The Conceptual Level) 1-27
1.6.3 內部層 (The Internal Level) 1-28
1.6.4 各層之間的映對 (Mappings) 1-28
1.6.5 資料庫管理系統與檔案系統間的差別 1-29
1.7 主-從式架構 1-32
1.7.1 傳統「集中式處理」 1-32
1.7.2 主-從式架構處理 1-33
1.7.3 三層式應用系統發展架構 1-40
1.8 分散式資料庫系統 1-43
1.8.1 為何會由集中式走向分散式? 1-43
1.8.2 分散式處理模式的優、缺點 1-45
1.8.3 分散式處理模式所引發的問題 1-46
1.9 異質性資料庫系統 1-47
1.9.1 為何會走向異質性系統的整合? 1-47
1.9.2 資料的整合與系統的整合 1-48
習題 1-49
第二章 資料模式
2.1 資料模式簡介 2-2
2.2 階層式資料模式 2-5
2.2.1 階層式資料模式的資料結構 2-5
2.2.2 階層式資料模式中的整合限制條件 2-8
2.2.3 階層式資料模式上的資料運算 2-8
2.3 網路式資料模式 2-9
2.3.1 網路式資料模式的資料結構 2-9
2.3.2 網路式資料模式上的整合限制條件 2-11
2.3.3 網路式資料模式上的資料運算 2-11
2.4 關聯式資料模式 2-13
2.5 物件導向式資料模式 2-16
習題 2-16
第三章 關聯式資料模式的資料結構
3.1 關聯表綱要簡介 3-2
3.2 關聯表的內容 3-5
3.2.1 主鍵 (Primary Key) 3-5
3.2.2 值域 (Domains) 3-6
3.2.3 屬性 (Attributes) 3-7
3.2.4 虛值 (Null Values) 3-8
3.3 關聯表的正式定義 3-10
3.4 關聯表的特性 3-12
3.5 關聯表的種類 3-18
3.6 關聯式資料庫 3-20
習題 3-22
第四章 關聯式資料模式的整合限制條件
4.1 簡介 4-2
4.2 候選鍵 (Candidate Keys) 4-3
4.3 替代鍵 (Alternative Keys) 4-4
4.4 外來鍵 (Foreign Keys) 4-5
4.5 外來鍵參考圖 (Referential Diagram) 4-8
4.6 關聯式模式的兩條整合限制規則 4-9
4.6.1 個體整合限制 4-9
4.6.2 參考整合限制 4-11
4.7 外來鍵使用規則 4-12
4.8 在關聯表上定義額外的整合限制規則 4-16
習題 4-20
第五章 關聯式代數
5.1 前言 5-2
5.2 關聯式代數簡介 5-3
5.3 各個運算子的詳細說明 5-5
5.3.1 原始運算子 5-6
5.3.1.1 乘積運算 (Cartesian Product ) 5-6
5.3.1.2 聯集運算 (Union) 5-7
5.3.1.3 差集運算 (Difference) 5-8
5.3.1.4 選擇運算 (Select) 5-9
5.3.1.5 投影運算 (Project) 5-11
5.3.2 非原始運算子 5-13
5.3.2.1 交集運算 (Intersection) 5-13
5.3.2.2 合併運算 (Join) 5-14
5.3.2.3 除法運算 (Divide) 5-18
5.4 關聯式代數的特性 5-20
5.4.1 結合律 (Associativity) 5-20
5.4.2 交換律 (Commutativity ) 5-23
5.4.3 分配律 (Distributivity) 5-25
5.4.4 退化的情況 5-27
5.5 關聯式代數運算後所產生之結果的主鍵 5-28
5.6 關聯式代數的用途 5-29
習題 5-31
第六章 關聯式計算
6.1 前言 6-2
6.2 值組導向關聯式計算 6-5
6.3 將值組導向關聯式計算轉成關聯式代數 6-10
6.4 值域導向關聯式計算 6-15
6.5 Query-By-Example (QBE) 6-17
習題 6-21
第七章 關聯式資料庫管理系統:以 Sybase SQL Server 為例
7.1 關聯式系統 7-2
7.2 關聯式資料庫管理系統的架構 7-4
7.2.1 一般的關聯式資料庫管理系統架構 7-4
7.2.2 Sybase SQL Server 的組成與相關工具 7-6
7.3 關聯式系統中的查詢最佳化處理 7-8
7.4 系統目錄 7-10
7.4.1 系統目錄的用途 7-10
7.4.2 Sybase SQL Server 的系統目錄 7-11
7.5 SQL Server 中的一般資料庫 7-14
7.5.1 在 SQL Server 中建立自己的資料庫 7-14
7.5.2 資料庫中有什麼東西? 7-16
習題 7-18
第八章 結構化查詢語言 SQL
8.1 簡介 8-2
8.2 資料定義語言 (DDL) 8-4
8.2.1 作用於基底關聯表上的 DDL 8-6
8.2.1.1 Create Table—新增關聯表 8-6
8.2.1.2 Alter Table—更改關聯表綱要 8-9
8.2.1.3 Drop Table—刪除整個關聯表 8-10
8.2.1.4 Truncate Table—刪除關聯表內容,僅留下綱要 8-10
8.2.2 作用於視界上的 DDL 8-10
8.2.2.1 Create View—建立新視界 8-10
8.2.2.2 Destroy (or Drop) View—刪除視界 8-11
8.2.3 作用於索引上的 DDL 8-11
8.2.3.1 Create Index—建立新索引 8-13
8.2.3.2 Drop Index—刪除索引 8-13
8.3 資料處理語言(DML)的查詢部份 8-14
8.3.1 Select 子句 8-14
8.3.2 算術運算式 8-16
8.3.3 From 子句與合併運算 8-16
8.3.4 Where 子句—指定查詢條件 8-19
8.3.5 Order by 子句—對查詢結果做排序 8-21
8.3.6 聚合函數 (Aggregate Functions) 8-22
8.3.7 Group by 子句 8-25
8.3.8 Having 子句 8-27
8.3.9 巢狀式查詢 (Nested Queries) 8-28
8.3.9.1 只傳回單一值的巢狀式子查詢 8-28
8.3.9.2 傳回一個集合的巢狀式子查詢 8-30
8.3.9.3 複雜查詢的拆解 8-39
8.3.10 聯集 (Union) 8-42
8.3.11 一個複雜的例子 8-43
8.4 資料處理語言(DML)的異動部份 8-46
8.4.1 Insert—新增值組 8-46
8.4.1.1 加入單一記錄 8-47
8.4.1.2 將查詢所得的結果新增到另一個關聯表中 8-48
8.4.2 Delete—刪除值組 8-49
8.4.2.1 刪除單一筆記錄 8-49
8.4.2.2 依查詢結果做為條件來做刪除 8-50
8.4.2.3 一次刪除多個關聯表中的記錄 8-52
8.4.3 Update—更改值組內容 8-52
8.4.3.1 更改單一筆記錄 8-53
8.4.3.2 依查詢結果做為條件來做更改 8-53
8.4.3.3 一次更改多個關聯表中的記錄 8-55
8.5 SQL 與關聯式代數之間的對應 8-56
8.5.1 原始運算子 8-56
8.5.1.1 Select 8-56
8.5.1.2 Project 8-56
8.5.1.3 Cartesian Product 8-57
8.5.1.4 Set Difference 8-57
8.5.1.5 Set Union 8-58
8.5.2 非原始運算子 8-58
8.5.2.1 Join 8-58
8.5.2.2 Intersection 8-59
8.5.2.3 Divide 8-60
8.6 嵌入式SQL (Embedded SQL) 8-61
8.6.1 簡介 8-61
8.6.2 Cursors 的說明 8-65
8.6.3 Cursors 的運算 8-66
8.7 動態SQL 8-70
8.8 SQL Server的預儲程序與觸發程序 8-71
8.8.1 SQL Server 的預儲程序 8-71
8.8.2 SQL Server 的觸發程序 8-73
8.9 系統目錄的查詢與異動 8-78
8.9.1 查詢部份 8-78
8.9.2 異動部份 8-79
8.10 加速查詢的一些原則與技巧 8-80
習題 8-86
第九章 視界
9.1 前言 9-2
9.2 視界(View)的定義 9-3
9.3 視界上的資料處理 9-6
9.3.1 行列子集視界 9-11
9.3.2 合併的視界 (Join Views) 9-15
9.3.3 統計總覽視界 9-16
9.4 以視界達成邏輯上的資料獨立 9-17
9.5 視界的優點 9-19
習題 9-21
第十章 發展主從式資料庫系統以 Visual Basic 為工具
10.1 使用 Visual Basic 存取各種資料庫的準備工作與觀念 10-2
10.2 環境設定 10-6
10.2.1 存取 VB 所支援的外部資料庫所需的環境設定 10-6
10.2.1.1 存取 dBASE 所需的環境設定與注意事項 10-7
10.2.1.2 存取 ODBC 外部資料庫所需的環境設定與注意事項 10-8
10.3 開啟資料庫 10-14
10.4 使用 Data Control 開啟資料庫 10-16
10.4.1 Connect 與 DatabaseName 的設定說明 10-19
10.4.2 Database 的使用說明 10-21
10.4.3 Exclusive 的設定說明 10-21
10.4.4 Options 的設定說明 10-22
10.4.5 ReadOnly 的設定說明 10-23
10.4.6 RecordSource 的設定說明 10-23
10.4.7 Recordset 的使用說明 10-24
10.4.8 使用 Bound Controls 10-30
10.4.9 以寫程式方式來顯示資料庫中的資料 10-33
10.4.10 Transaction 的使用 10-35
10.5 使用 OpenDatabase 開啟資料庫 10-36
10.6 關閉資料庫 10-37
10.7 使用 VB 存取資料庫時必須先了解的幾個觀念 10-38
10.7.1 Recordset 10-38
10.7.2 附屬表 (Attached Tables) 10-42
10.7.3 行動查詢 (Action Query) 10-43
10.7.4 選取查詢 (Select Query) 10-45
10.7.5 Table 物件 10-45
10.7.5.1 Table 的產生方式 10-45
10.7.5.2 Table 的特點 10-46
10.7.6 Dynaset 物件 10-47
10.7.6.1 Dynaset 的產生方式 10-47
10.7.6.2 Dynaset 的特點 10-52
10.7.6.3 重新建立 Dynaset 中的 Recordset 資料 10-54
10.7.7 Snapshot 物件 10-54
10.7.7.1 Snapshot 的產生方式 10-55
10.7.7.2 Snapshot 的特點 10-57
10.7.7.3 重新建立 Snapshot 中的 Recordset 10-58
10.7.8 QueryDef 物件(僅 Microsoft Access 適用) 10-58
10.7.8.1 QueryDef 的產生方式 10-58
10.7.8.2 執行 QueryDef 物件所存放的 SQL 指令 10-59
10.7.8.3 更改 QueryDef 物件的定義 10-60
10.7.8.4 關閉 QueryDef 物件 10-61
10.7.8.5 刪除 QueryDef 物件 10-61
10.8 一個 VB 所提供的資料庫存取範例:VISDATA.MAK 10-62
10.9 總結 10-63
10.9.1 一般原則 10-64
10.9.2 使用外部資料庫時的原則 10-65
10.9.3 設計外部資料庫綱要時的考量 10-66
10.9.4 使用 VB 連結資料庫方面常見的問題詳解 10-67
習題 10-73
進 階 篇
第十一章 邏輯資料庫設計:關聯表的正規化
11.1 簡介 11-2
11.1.1 為什麼要正規化? 11-2
11.1.2 正規化的階層架構 11-5
11.1.3 功能相依性 11-8
11.2 1NF、2NF 與 3NF 11-12
11.2.1 1NF—第一正規化型式 11-12
11.2.2 2NF—第二正規化型式 11-17
11.2.3 3NF—原始的第三正規化型式 11-27
11.2.4 BCNF—廣義的第三正規化型式 11-28
11.2.5 一個是 3NF 但不是 BCNF 的例子 11-32
11.2.6 一個含有兩個候選鍵的關聯表但也是 BCNF 的例子 11-36
11.3 多重值相依性 (Multi-Valued Dependency) 11-37
11.4 4NF—第四正規化型式 11-42
11.5 5NF (PJ/NF)—第五正規化型式 11-43
11.6 正規化的步驟 11-50
11.7 利用「個體-關係模式」來做邏輯資料庫設計 11-52
11.7.1 個體-關係模式中的概念 11-52
11.7.2 個體-關係模式和自然語言間的關係 11-54
11.7.3 個體關係圖 (E-R Diagram) 11-55
11.7.4 個體-關係圖和自然語言間的對應關係 11-57
11.7.5 個體-關係圖與關聯式資料庫的對應 11-59
11.8 結論 11-63
習題 11-66
第十二章 異動的管理
12.1 前言 12-2
12.2 異動管理的目標 12-2
12.3 異動的四個特性 12-3
12.3.1 單元性 (Atomicity) 12-4
12.3.2 並行性 (Concurrency) 12-6
12.3.3 隔離性 (Isolation) 12-8
12.3.4 持續性 (Durability) 12-9
12.4 回復處理 (Failure Recovery) 12-10
12.4.1 異動記錄 (Transaction Log) 12-12
12.4.2 系統當機後資料庫管理系統完成回復處理的步驟 12-14
12.4.3 磁碟損毀後的回復處理步驟 12-17
12.5 異動的並行控制 12-19
12.5.1 沒有並行控制所引發的問題 12-19
12.5.2 異動的並行控制機制 12-21
12.5.2.1 鎖定法 (Locking) 12-25
12.5.2.2 時間戳記法 (Time Stamp Ordering) 12-28
12.5.2.3 積極進取控制法 (Optimistic Control) 12-30
12.6 使用Sybase SQL Server 時,在備份作法上的建議 12-31
習題 12-34
第十三章 物件導向式資料庫系統
13.1 前言 13-2
13.2 物件導向式資料庫系統簡介 13-4
13.3 物件導向的主要觀念 13-4
13.3.1 物件、類別與抽象資料型態 13-6
13.3.1.1 物件與訊息 13-6
13.3.1.2 類別 (Class) 13-7
13.3.1.3 抽象資料型態 (Abstract Data Type) 13-8
13.3.2 繼承 (Inheritance) 13-8
13.3.3 多態性 (Polymorphism) 13-10
13.4 物件導向式觀念的發展 13-10
13.4.1 物件導向程式語言的發展 13-10
13.4.2 物件導向方法論的發展 13-13
13.4.3 物件導向式資料模式的發展 13-13
13.5 物件導向式資料庫系統上的基本觀念 13-15
13.5.1 物件導向式資料庫系統上的概念 13-15
13.5.2 關聯式資料模式與物件導向資料模式的對應關係 13-23
13.6 物件導向式資料庫系統的實現方式 13-26
13.7 物件導向式資料庫管理系統的標準訂定 13-28
13.8 著名的物件導向資料庫管理系統 13-29
13.9 物件導向資料庫設計中的正規化問題 13-31
13.10 物件導向觀念的優點 13-35
13.11 ODMG 93—物件導向資料庫新標準 13-36
13.11.1 ODMG 架構 13-37
13.11.2 ODMG 物件模式 13-38
13.11.3 ODMG 物件定義語言 (ODL) 13-39
13.11.4 ODMG 物件查詢語言 (OQL) 13-40
習題 13-41
第十四章 分散式資料庫系統
14.1 前言 14-2
14.2 分散式資料庫系統簡介 14-3
14.2.1 分散式資料庫系統的好處與缺點 14-4
14.2.2 集中式與分散式資料庫系統的差異 14-6
14.2.3 分散式資料庫系統的目標 14-8
14.3 分散式資料庫系統上的問題探討 14-14
14.3.1 查詢處理與最佳化 14-15
14.3.2 分散式邏輯資料庫設計 14-21
14.3.3 系統目錄管理 14-22
14.3.4 回復處理 14-23
14.3.4.1 兩段式委任 (Two-Phase Commit, 2PC) 14-24
14.3.4.2 三段式委任 (Three-Phase Commit, 3PC) 14-30
14.3.5 連鎖的更新問題 14-35
14.3.6 並行控制 14-35
14.3.7 資料的保密性與安全性控制 14-36
習題 14-42
第十五章 異質性分散式資料庫系統
15.1 前言 15-2
15.2 異質性資料庫系統簡介 15-5
15.2.1 異質性 15-5
15.2.2 區域資料站的自主性 15-10
15.3 建構一個異質性資料庫系統 15-12
15.4 異質性資料庫中的綱要整合問題 15-15
15.4.1 資料命名上的衝突 15-16
15.4.2 資料表示法上的衝突 15-17
15.4.3 資料的編碼或資料內容的差異 15-17
15.4.4 資料單位的衝突 15-19
15.4.5 不相容的資料 15-21
15.4.6 資料缺項 15-22
15.4.7 角色互換的差異 15-23
15.4.8 綱要結構上的差異 15-24
15.5 異質性資料庫的查詢語言 15-26
15.6 異質性資料庫中的資料與綱要整合 15-26
15.6.1 外部合併運算 (Outerjoin) 15-27
15.6.2 部份值 (Partial Values) 15-29
15.6.3 整合異質性分散式資料庫中的資料 15-31
15.6.4 查詢的拆解 (Query Decomposition) 15-36
15.6.5 一個解決綱要結構上的差異之方案 15-37
15.7 異質性資料庫系統中的異動管理問題 15-38
15.7.1 異質性資料庫系統中的異動處理模式 15-38
15.7.2 異質性資料庫系統中的異動處理問題探討 15-40
15.8 著名的異質性資料庫系統建置專案 15-43
15.8.1 著名的多重資料庫查詢語言系統專案 15-43
15.8.2 著名的整體綱要多重資料庫系統專案 15-44
15.8.3 著名的聯邦式資料庫系統專案 15-47
習題 15-48
第十六章 資料庫系統的研究方向
16.1 資料模式的研究 16-3
16.2 使用者介面 16-4
16.3 資料庫管理系統的核心技術 16-6
16.4 資料儲存結構與存取方法 16-8
16.5 分散式技術 16-10
16.6 物件導向技術 16-15
16.7 從資料中發掘知識 16-16
16.8 資料庫系統的硬體架構 16-22
16.9 架於資料庫系統上的各種輔助系統 16-25
16.10 資訊保密與安全性方面的議題 16-29
16.11 管理方面的議題 16-31
16.12 結語 16-32
習題 16-36
參考資料 2 ~ 21
中英文對照索引 2 ~ 9
英中文對照索引 2 ~ 10