第一章 資料庫概論
1-1 檔案系統
一、檔案系統的定義
(一)由使用者定義與實作
(二)舉例
二、檔案系統的優點
(一)資料容易存取
(二)程式的設計方式相當單純
(三)較容易滿足各部門或應用系統的要求
三、檔案系統的缺點
(一)資料重複存放(Data Redundancy)
(二)資料不一致(inconsistency)
(三)資料間無法分享共用
(四)資料保密性和安全性非常低
(五)資料與程式間高度相依
(六)漫長的開發時間
(七)系統維護成本高
(八)不易建立資料標準
(九)程式撰寫無效率
1-2 資料庫系統
一、資料庫(Database)
(一)定義
(二)資料庫技術主要特性
※資料(Data)
※資訊(Information)
二、資料庫管理系統(DataBase Management System, DBMS)
(一)起緣
(二)定義
(三)主要組成
(四)基本功能
三、一個良好的DBMS所應具備的功能
(一)重複性(redundancy)的控制
(二)實施完整性限制(integrity constraints)
(三)提供備份(backup)與回復(recovery)
(四)限制未授權的存取
(五)表示資料間的複雜關係
(六)提供多重使用者介面
(七)使用演繹規則的資料庫推論
(八)程式物件與資料結構的永久儲存
四、資料庫系統的自我描述性
五、資料庫的優點
(一)避免資料重複存放(Data Redundancy)
(二)避免資料不一致(inconsistency)
(三)資料間的分享共用
(四)實施完整性限制(integrity constraints)
(五)提供備份與回復功能
(六)限制未授權的存取
(七)表示資料之間的複雜關係
(八)提供多種使用者介面
(九)使用演繹規則的資料庫推論
(十)程式物件與資料結構的永久儲存
(十一)提供有效處理查詢的儲存結構和搜尋技術
(十二)資料獨立性(Data Independence)
※把相同資料儲存多次的重複性(redundancy)現象會導致以下幾個問題:資料重複(data redundancy)會帶來那些問題?
※控制冗餘(Controlled Redundancy):有限度的重複性
※使用資料庫技術所帶來的間接好處
六、資料庫的缺點
(一)初期成本高
(二)設計較複雜
(三)過多的限制
(四)資料存取的速度較慢
(五)資料集中,容易一起被破壞或盜取
(六)佔用較大的儲存空間
(七)軟硬體的成本較高
(八)必須考慮備援作業
七、何時不必採用資料庫
(一)資料與應用程式皆很簡單,不常變化
(二)未來擴充可能性非常小
(三)不需多使用者同時存取
(四)某些應用程式有非常嚴格的即時需求
※資料庫的生命週期
※資料庫系統開發的生命周期:資料庫發展的生命週期
※資料庫應用程式發展生命週期各階段的說明
※資料庫設計方法論(Database Design Methodology)
※概念設計(Conceptual Design)
※邏輯設計(Logical Design)
※實體設計(Physical Design)
※資料庫管理系統的演進趨勢
※SQL Server
※MySQL
1-3 資料庫系統架構
一、資料庫三層架構(ANSI/SPARC)
(一)外部層次(External Level):外部綱要(External Schema)或使用者邏輯層次 (User Logical Level)
(二)概念層次(Conceptual Level)、概念綱要(Conceptual Schema)、或邏輯層次(三)內部層次(Internal Level)、內部綱要(Internal Schema)或實體層次(Physical Level)
(三)內部層次(Internal Level)、內部綱要(Internal Schema)或實體層次(Physical Level)
二、資料獨立性(Data Independence)
(一)定義
(二)種類
(三)資料獨立的優點
※資料庫綱要(Database schema)與案例(instances)
※詮釋資料(metadata):中介資料 / 中繼資料 / 後設資料
※三層資料庫綱要
※儲存定義語言(Storage Definition Language, SDL)
※資料庫綱要間的對映
※資料庫管理師(DataBase Administrator, DBA)
※工具程式開發人員(Tool developer)
※固定模式的終端使用者(Parametric end user)
※應用程式的開發人員(Application programmer)
※稽核追蹤
1-4 主從式架構(Clientl Server)與三層式架構(3-tier)
一、主從式架構(Client/Server architecture)
(一)定義
(二)主從式架構(Client/Server architecture)
(三)主從式運算(Client/Server Computing)與主機式運算(Host-based Computing)
(四)優點
(五)缺點
※Client Side和Server Side如何劃分資料庫系統相關軟體?
※開放資料庫互連(Open Database Connectivity, ODBC)
※ODBC如何在Client Side和Server Side之間運作?
二、三層式架構(3-tier architecture)
(一)定義
(二)架構
(三)目的
三、多層式架構(N-Tier architecture, Multi-Tier architecture)
(一)定義
(二)優點
※主從式架構與三層式架構的比較
※集中式架構(Centralized Architecture)
※Intranet架構
1-5 分散式資料庫(Distributed Database)
一、分散式資料庫
二、分散式資料庫的幾種透通性:透明度(Transparency)
(一)存取透通性(Access transparency)
(二)位置透通性(Location transparency)
(三)網路透通性(Network transparency)
(四)同步透通性(Concurrency transparency)
(五)重複透通性(Replication transparency)
(六)錯誤透通性(Failure transparency)
(七)移動透通性(Mobility transparency)
(八)分割透通性(Fragmentation transparency)
※分散式資料庫系統與集中式資料庫系統的差異
三、資料分割(Data fragmentation)
(一)水平分割(Horizontal fragmentation)
(二)垂直分割(Vertical fragmentation)
(三)混合式分割(Mixed fragmentation)
※資料分割必須滿足下面特性
四、分散式資料庫基本原則(C.J.Date)
(一)位置獨立性(Location independence)
(二)網路獨立性(Network independence)
(三)複製獨立性(Replication independence)
(四)資料分割獨立性(Fragmentation independence)
(五)硬體獨立性(Hardware independence)
(六)作業系統獨立性(OS independence)
(七)資料庫管理系統獨立性(DBMS independence)
(八)分散式查詢處理(Distributed query processing)
(九)分散式交易管理(Distributed transaction management)
(十)區域自主性(Local autonomy)
(十一)不倚賴中央點(No reliance on a central site)
(十二)持續操作性(Continuous operation)
五、分散式資料庫的優缺點
(一)優點
(二)缺點
六、資料庫的異質性(Heterogeneous)
(一)不同電腦硬體系統
(二)不同電腦作業系統
(三)不同網路通訊協定
(四)不同資料庫管理系統
七、資料庫系統處理架構的演進
(一)集中式處理架構(Centralized Processing)
(二)主從式架構(Client/Server Architecture)
(三)多層式架構(Multi-Tier Architecture)
(四)同質性分散式資料庫系統(Homogeneous Distributed Processing)
(五)異質性分散式資料庫系統(Heterogeneous Distributed Processing)
(六)行動式運算(Mobile Computing)
※分散式資料庫的資料配置(Data Allocation)
※P2P資料庫系統
※NoSQL(Not Only SQL)
※CAP定理
※四種NoSQL資料模型的比較
※那些是SQL based,那些是NoSQL based DBMS?
※SQL與NoSQL資料庫的比較:非關聯式與關聯式資料庫管理系統的主要差異
※MongoDB
※NewSQL
1-6 資料模型(Data Model):資料模式
一、資料模型的定義
(一)資料模型(Data Model)
(二)架構
(三)概念資料模型(Conceptual Data Model)
(四)邏輯資料模型(Logical Data Model)
(五)實體資料模型(Physical Data Model)
※資料模型的分類
※物件資料模型(Object data model)
二、資料模型的組成
(一)資料結構型態(data structure type)
(二)資料操作的運算子(operator of data manipulate)
(三)整合性限制(integrity constraints)
三、建立資料模型的優點
(一)定義系統需求
(二)系統簡化的抽象表示法,利於系統分析者與使用者溝通
(三)表達系統整合性限制
(四)幫助系統設計
(五)配合系統自動化
四、種類:依照時間順序
(一)階層式(hierarchical)
(二)網路式(network)
(三)關聯式(relational)
(四)物件導向(object-oriented)
五、階層式(hierarchical)資料模型
(一)特性
(二)產品
(三)優點
(四)缺點
※SSA:Segment Search Arguments in the Hierarchical Database Model
六、網路式(network)資料模型
(一)特性
(二)產品
(三)優點
(四)缺點
七、關聯式(relational)資料模型
(一)定義
(二)特性
(三)產品
(四)優點
(五)缺點
八、物件導向(object-oriented)資料模型 / 物件導向資料模式 (object-oriented data model)
(一)定義
(二)物件(Objects)
(三)類別(Class)
(四)繼承(Inheritance)
九、物件關聯式資料庫系統(Object-Relational Database Systems, ORDBMS)
十、各種模型的比較
※實體關係、物件導向和NoSQL的優缺點比較
1-7 個體關係模型ER Model(Entity-Relationship Model)
一、簡介
(一)定義
(二)主要組成
(三)其他組成
※ID dependent entity
※簡單屬性、組合屬性、儲存屬性和推導屬性的比較
※實體型態(Entity Type)
※實體叢集(Entity cluster):實體群
(四)關聯(Relationship):關聯的型態 / 關聯的種類
※實體關聯圖(Entity-Relationship Model, E-R Model)
※二元關係型態結構上的限制(Structural constraint):ER Model實體之間對應的兩個限制
※關係度(Degree of a Relationship):關係型態的階度(Degree)
二、繪製ER Diagram
(一)決定資料庫的個體(Entity)
(二)決定個體之間的關聯(Relationship)
(三)決定各個體的屬性(Attribute)
(四)決定各個體的鍵值屬性(Key Attribute)
三、敘述ER Diagram
(一)找出所有個體 (Entity),敘述每一個體的屬性,包含一般屬性、鍵值屬性、
(二)找出各個關聯,以及參與此關聯的個體,依照關聯的敘述,判斷個體間的邏(三)視關聯為一對一、一對多、或多對多,於關聯後補充數量關係
※分解法
※ERD表達能力上的缺陷
※ER Model轉換
1-8 鴉爪符號(Crows Foot Notation):鴨足表示法
一、定義
二、圖示
三、範例
※ER圖與雞爪符號的轉換
第二章 關聯式資料庫
2-1 名詞定義
一、關聯(Relation):表格(Table)
(一)關聯由兩部分所組成
二、定義域(Domain)
三、屬性(Attribute)
四、鍵(key)
(一)候選鍵(Candidate key):關聯鍵(Relation key)
(二)主鍵(Primary key):主要鍵
(三)替代鍵(Alternate key)
(四)外鍵(Foreign key)
(五)超鍵(Super key):超級鍵
※Primary Key和Unique Key有很多相似之處。但還是有以下區別
※複合鍵(Composite Key):組合鍵 / Concatenated Key / Aggregate Key
※次鍵(Secondary Key)
※超鍵、候選鍵與主鍵之間的關係
※主鍵與超鍵的比較
※Null:空值
五、基元值(Atomic value)
(一)定義
(二)舉例
六、圖示
2-2 關聯式資料庫的簡介
一、關聯式資料庫
(一)定義
(二)原理
(三)組成
※關聯式資料庫模型的組成要素(Components)
※關聯式資料庫模型的運算
二、關聯式資料庫的特性、資料結構、資料整合性、與資料操作
(一)關聯(Relation)的特性:關聯表的四大特性
(二)資料結構(Data Structure)
(三)關聯的資料整合性(Data Integrity) / 為了維持關聯式資料庫狀態的一致性,各需先做那些檢查?
※關聯式資料庫的限制
※關聯式模型的限制
(四)資料操作(Data Manipulation)
※關聯式資料庫的特性
三、關聯式資料庫的優點
(一)節省儲存空間
(二)減少輸入錯誤
(三)方便資料修改
四、關聯式資料庫的缺點
(一)資料模型化能力弱
(二)執行效率低
(三)資料模型不一致
※維護參考完整性限制常見的處理方式
※鍵限制條件(Key Constraints)
※值域完整性限制(Domain Integrity Constraint)
2-3 將個體關係圖(ER Diagram)轉換為關聯(Relation)
一、說明
二、個體轉換
(一)轉換「一般個體(Entity)」
(二)轉換「弱個體(Weak Entity)」
三、個體的屬性轉換
(一)轉換「一般屬性(attribute)」
(二)轉換「多值屬性(Multivalued attribute/Multi-valued attribute)」
(三)轉換「複合屬性(Composite attribute)」
(四)轉換「衍生屬性(Derived attributes)」
四、關係轉換
(一)轉換「二元1對1關係」
(二)轉換「二元1對多關係」
(三)轉換「二元多對多關係」
(四)轉換「多元關係」
(五)轉換「遞迴關係(Recursive relationship)」
※關聯資料庫模型如何表示實體關聯模型的基數比與參與度等兩個限制?
五、子型態與父型態轉換
※合併資料庫的關聯表常會發生的問題
※關聯式綱要(Relation Schemas)的非正式設計原則
※萬用關聯(universal relation):
※扇形陷阱(Fan Traps):兩個一對多(1N1N)
※斷層陷阱(Chasm Traps):衝突陷阱(N11N)
第三章 檔案組織
3-1 資料儲存格式
一、資料庫儲存階層
(一)字元(Character)
(二)欄位(Field)
(三)紀錄(Record)
(四)關聯(Relation)
(五)資料庫(Database)
二、磁碟儲存階層
(一)位元(bit)
(二)位元組(byte)
(三)區塊(block)
三、資料型態(data type)
(一)數字(Integer)
(二)字元(Character)
(三)布林(Boolean)
(四)日期(Date)
(五)時間(Time)
四、紀錄儲存方法
(一)固定長度(fixed-length)與可變長度(variable-length)
(二)可分割(spanned)與不可分割(unspanned)
※變動資料長度(variable data length)的適用時機及運作方式
3-2 檔案組織
一、循序檔(Sequential file)
(一)定義
(二)特性
(三)插入
(四)搜尋
(五)刪除
(六)優點
(七)缺點
※堆積檔(Heap file)
二、雜湊檔(Hashing file)
(一)特性
(二)插入
(三)搜尋
(四)刪除
(五)優點
(六)缺點
※合併鏈結(coalesced chaining)
※直接檔案搜尋法
※直接檔(Direct file):直接檔案搜尋法 / 直接存取檔案(Direct Access File)
※循序檔案搜尋法、直接檔案搜尋法及雜湊搜尋法的比較
※雜湊檔案結構
※靜態雜湊(static hashing)的設計
※動態雜湊(dynamic hashing)的設計
※可擴充雜湊(extendible hashing):Dynamic hashing
三、索引檔(Index file)
(一)種類
(二)特性
(三)插入、更新、刪除
(四)優點
(五)缺點
(六)使用時機
四、單層索引
(一)主索引(primary index)
(二)次索引(secondary index)
(三)叢集索引(clustering index)
※SQL Server的索引
※主索引與叢集索引的比較
※叢集索引與非叢集索引的差別
※主索引、次索引與叢集索引的比較
※索引欄位的選擇
五、動態多層索引
(一)B tree
(二)B+ tree / VSAM(Virtual Storage Access Method)
※為何要有B+ tree?
※B tree與B+ tree的比較
※B+ tree與Hashing的比較
六、反轉檔(Inverted file)
(一)特性
(二)優點
(三)缺點
(四)範例
第四章 資料庫正規化
4-1 功能相依(Functional Dependence)
一、功能相依(Functional Dependence)
(一)定義
(二)功能相依決定者與功能相依者
(三)種類
(四)表示法
二、無價(Trivial)及非無價(Non-Trivial)相依性
(一)無價(Trivial)
(二)非無價(Non-Trivial)
三、相依的封閉性(Closure)
(一)反身性(Reflexivity):反身律(Reflexivity rule)
(二)擴展性(Augmentation):擴展律(Augmentation rule)
(三)遞移性(Transitivity):遞移律(Transitivity rule)
(四)自行決定性(Self-determination)
(五)分解性(Decomposition):分解律(Decomposition rule) / 投影律(projective rule)
(六)聯集性(Union):聯集律(Union rule) / additive rule
(七)合成性(Composition)
※Armstrong推導規則(Armstrong’s inference rule):阿姆斯壯定理(Armstrong's Axioms)
※泛封閉集合(Closure set)
※使用Closure推導出候選鍵
四、最簡相依(Irreducible functional dependence)
(一)右邊只有一個相依因素
(二)左邊沒有多餘的決定因素
(三)沒有多餘的功能相依(FD)
※分解(Decomposition)的特性:切割的特性
※無損的JOIN分解(Lossless-Join Decomposition):無損合併分解 / 無損連結 (lossless join) / 無損分解 (Lossless Decomposition) / 無損切割 (Lossless Decomposition)
※無損切割(Lossless Decomposition)的判斷方式
※相依性保留(Dependency Preservation)
4-2 資料庫的異常(Anomalies)
一、更新異常(update anomalies)
二、插入異常(insert anomalies)
三、刪除異常(delete anomalies)
四、舉例
(一)採購資料檔
4-3 正規化(Normalization Form)
一、原因
(一)資料重複儲存
(二)異常情形
二、定義
(一)起源
(二)概念
(三)方式
三、目的
(一)降低資料重複性(Data Redundancy)
(二)避免產生插入、刪除或更新可能的異常(Anomalies):避免資料庫異常現象
四、特性
(一)無損連結(lossless join)與不增值合併(nonadditive join)特性
(二)相依性保留(dependency pres ervation)特性
五、優點
(一)避免資料重複(Data Redundancy)
(二)避免更新異常(Anomalies)
(三)使資料庫空間在使用時能更有效率、更容易維護
(四)最佳化的查詢 (因為正規化的資料表可產生快速、高效率的聯結)
(五)更快速地建立和儲存索引 (因為資料表所含資料行較少)
(六)快速的更新效能 (因為每一資料表具有的索引較少)
六、缺點
(一)太多的正規化會導致查詢不方便
(二)進行合併運算會減低資料庫的效能
七、方法
八、原則
九、種類
十、步驟
※反正規化(Denormalization):去正規化
4-4 第一正規化(1NF)
一、定義
(一)基元值(Atomic)
(二)沒有重覆紀錄
(三)主鍵以外的其他所有欄位都相依於主鍵
二、做法
(一)複合屬性
(二)多值屬性
※不符合第一正規化的情況
三、舉例
(一)未經正規化的供應商產品資料表
(二)1NF後
四、問題
※資料庫異常
4-5 第二正規化(2NF)
一、定義
※完全功能相依(Full Functional Dependency):完全相依
※部分功能相依(Partial Functional Dependency):部分相依
二、做法
(一)拆解關聯
(二)決定外鍵
三、舉例
(一)第一正規化
(二)第二正規化
4-6 第三正規化(3NF)
一、定義
※遞移相依(Transitive Dependency)
二、做法
(一)拆解關聯
(二)決定外鍵
三、舉例
4-7 Boycs-Codd正規化(BCNF):廣義第三正規化
一、定義
(一)滿足第三正規化
(二)所有功能相依的決定因素皆為此關聯的候選鍵
二、適用情況
(一)複合候選鍵
(二)在複合候選鍵之間擁有重疊屬性
三、目的
四、做法
五、舉例
※深入討論BCNF
4-8 第四正規化(4NF)
一、多值相依(Multi-valued dependency, MVD)
(一)說明
(二)定義一
(三)定義二:多值相依性的正式定義
(四)特性
(五)缺點
※Trivial MVD
※nontrivial MVD
二、第四正規化的定義
(一)滿足條件
(二)說明
三、做法
四、範例
4-9 第五正規化(5NF)
一、定義
二、合併相依(Join dependence, JD)
三、做法
四、範例
五、合併相依所產生的異常(Anomalies)
4-10 例題
第五章 關聯式代數與關聯式計算
5-1 關聯式代數(Relational Algebra)
一、簡介
(一)定義
※關聯式資料庫模型為何需要關聯式代數?
※關聯式代數為何重要的理由?
(二)由Codd所提出,共由八個運算子所組成
(三)分類:基本的關聯式代數運算
(四)關聯式代數的性質
二、關聯式代數的語法
(一)選擇(SELECT)
(二)投影(PROJECT)
(三)聯集(UNION)
(四)交集(INTERSECTION)
(五)差集(DIFFERENCE)
(六)卡式積(CARTESIAN PRODUCT)
(七)合併(JOIN)
※自然合併如何用其他的原始關聯式代數運算子達到相同的運算結果?
(八)其他特殊合併
※內部合併(Inner Join)與外部合併(Outer Join)的差異
※關聯式代數的分群和彙總函數
※關聯式代數的彙總函數
(九)除法(DIVISION)
5-2 關聯式計算(Relational Calculus)
一、簡介
(一)定義
(二)關聯完全性(Relationally Complete)
二、值組導向關聯式計算(Tuple-Oriented Relational Calculus)
(一)簡介
(二)相關語言
(三)全稱量詞(Universal quantifier):FORALL、
(四)存在量詞(Existential quantifier):EXISTS、
三、定義域導向關聯式計算(Domain-Oriented Relational Calculus)
(一)簡介
(二)簡化表示
(三)相關語言
(四)QBE(Query By Example)
四、關聯式代數與關聯式計算的比較
※關聯式代數、關聯式計算與SQL的比較
5-3 查詢最佳化
一、簡介
(一)說明
(二)處理高階查詢
二、分類
(一)啟發性規則(Heuristic rules)
(二)系統化估計(Systematically estimate)
三、查詢樹(Query tree)
(一)查詢樹:查詢估算樹(query evaluation tree) / 查詢執行樹(query execution tree)
(二)結構
(三)步驟(關聯式代數)
(四)舉例
四、查詢圖(Query graph)
(一)值組變數(tuple variable)→節點(nodes)
(二)合併條件(join condition)→邊(edges)
(三)常數值(constant)→常數節點(constant nodes)
五、查詢執行的成本元素(Cost Components for Query Execution):成本估計(Cost Estimate)
(一)輔助儲存體的存取成本(Access cost to secondary storage)
(二)磁碟儲存成本(Disk storage cost)
(三)計算成本(Computation cost)
(四)記憶體使用成本(Memory usage cost)
(五)通訊成本(Communication cost)
第六章 結構化查詢語言(SQL)
6-1 簡介
一、定義
(一)說明
※Oracle中的SQL如何執行?:資料庫處理器(Run-time Database Processor)如何處理此查詢語言?
二、SQL的優缺點
三、內嵌式SQL(Embedded SQL)
※為何SQL是一種非程序語言?
※資料庫和資料表欄位命名規則
6-2 SQL資料型態
一、基本型態
6-3 SQL指令
一、SQL 指令
二、資料定義語言(Data Definition Language, DDL)
(一)CREATE SCHEMA
(二)DROP SCHEMA
(三)CREATE TABLE
(四)DROP TABLE
(五)ALTER TABLE
(六)CREATE VIEW
(七)DROP VIEW
(八)CREATE INDEX
※外鍵參考到相同資料表的問題
※叢集索引
※非叢集索引
※IDENTITY
※景觀(View)
※View的特性
※視域(View)與基本表(Base Table)的比較
※概念綱要設計的做法
※視界整合法(View Integration Approach)
三、資料處理語言(Data Manipulation Language, DML)
(一)INSERT
(二)DELETE
(三)UPDATE
※多筆資料更新
四、資料查詢語言(Data Query Language, DQL)
(一)定義
(二)與關聯式代數的對應
(三)範例一
(四)範例二
※DQL只能取回查詢結果,其三個基本作業
五、資料控制語言(Data Control Language, DCL)
(一)說明
(二)Grant指令
(三)Revoke指令
(四)Commit指令
(五)Rollback指令
(六)SAVEPOINT指令
(七)範例
6-4 SELECT查詢
一、基本查詢語法
(一)說明
※From的特殊用法
※SQL中二關聯的合併(Join)語法
※外部合併(Outer Join)
※P86表格
二、完整查詢語法
(一)說明
※Order By的用法
※Group By的用法
※Group By使用限制
三、巢狀SQL查詢
(一)EXISTS
(二)NOT EXISTS
(三)IN
※[NOT] EXISTS語法
四、聚合函數
(一)COUNT
(二)SUM、AVG
(三)MAX、MIN
(四)COUNT(*)
(五)COUNT(屬性名稱)
(六)COUNT(DISTINCT 屬性名稱)
五、其他語法
(一)IS NULL
(二)ALL、ANY
(三)BETWEEN
(四)LIKE
(五)AND和OR
(六)UNION
※CHECK檢查限制(SQL CHECK Constraint)
※Oracle語法與SQL Server語法的比較
※函數的語法
※校調查詢(Tuning Queries):如何建立有效率的SQL查詢?
6-5 例題
第七章 交易管理
7-1 交易管理(Transaction Management)
一、交易
(一)定義
(二)舉例
※行程(process)
二、交易管理的主要機制
(一)失敗回復(Failure Recovery)
(二)並行控制(Concurrency Control)
三、交易管理的目標
(一)確保交易可以並行處理
(二)確保交易的正確性(Correctness)及可靠性(Reliability)
(三)提高資料庫系統質性交易的效率(Efficiency)
(四)提高系統的可用率(Availability)
(五)降低系統成本(Cost)
四、交易的四大特性:ACID
(一)基元性(Atomicity)
(二)一致性(Consistency)
(三)孤立性(Isolation)
(四)永久性(Durability、Permanency)
※資料庫管理系統如何利用ACID特性達到回復處理及並行控制兩個機制?
五、交易的操作(operations)與狀態(states)
(一)BEGIN_TRANSACTION
(二)END_TRANSACTION
(三)READ
(四)WRITE
(五)COMMIT
(六)ROLLBACK(ABORT)
(七)REDO
(八)UNDO
※交易回寫(Roll forward)
※交易處理的資料庫存取指令
六、交易的系統日誌
(一)系統日誌(System journal、System log)
(二)委任點(Committed point):確認點
(三)系統日誌強迫寫入(System journal force-writing)
(四)檢查點(Checkpoint)
※執行檢查點的頻率應該根據那些因素調整?如何調整?
七、交易的排程
(一)何謂排程(schedule)?
(二)序列排程(Serial Schedule)
※非序列排程(Non-serial Schedule)
※序列排程與非序列排程的比較:依序式執行排程和交錯式執行排程的差異
(三)可序列化排程(Serializable Schedule)
(四)等價的種類
(五)衝突可序列化排程(Conflict Serializable Schedule)
(六)舉例
※可序列化排程vs.衝突可序列化排程
※視界等價性(view equivalence)與視界可循序性(view serializability)
※衝突等價排程與視界等價排程的差異
※每一個視界可循序的且不是衝突可序列化的排程有盲目寫入
※視界可循序的不一定是衝突可循序的排程
※不是視界可循序的以及不是衝突可循序的排程
※如何使用盲目寫入(blind writes)檢查視界可循序的(View Serializable)?
(七)各種排程(schedule)
7-2 並行控制(Concurrency Control)
一、簡介
(一)定義
(二)目的
二、若無並行控制的機制可能會產生的問題
(一)遺失更新(Lost Update)
(二)不一致分析(Inconsistent analysis / Incorrect summary)
※無法重複讀取(Non-Repeatable Read):不可重覆讀取(unrepeatable read) / 不正確的總和 (incorrect summary) 問題 [在聖經書的分類中,它屬於不一致分析]
(三)未委任相依(Uncommitted dependency / Dirty reads / Temporary update)
※幽靈資料的問題(The Phantom Problem):幻影資料問題
三、並行控制(Concurrency Control)技術
(一)並行控制技術
四、鎖定(Locking)技術
(一)鎖定(Locking)
(二)二元鎖定(Binary locking)
(三)共享互斥鎖定(Shared and Exclusive locking):多元鎖定(Multi-mode locking) / X-Locking
(四)兩階段鎖定(Two phase locking, 2PL):兩階段鎖定協定(Two Phase Locking Protocol)
※未遵守2PL排程的交易
※Two-Phase Locking Protocol為何可以保證serializability?
※眾多交易同時執行時,若有交易不遵循兩階段鎖定協定,將導致什麼後果?
※使用2PL不會發生遺失更新(Lost Update)
※使用2PL不會發生不一致分析(Inconsistent analysis)
※使用2PL不會發生未委任相依(Uncommitted dependency)
五、交易並行可能發生的問題
(一)死結(Deadlock)
(二)活結(Livelock)
(三)餓死(Starvation)
※資料項目的鎖定範圍大小
六、時間戳記(Timestamp)同步控制
(一)時間戳記的定義
(二)時間戳記排序法
(三)同步控制的時間戳記
(四)交易提出寫入(write)X要求
(五)交易提出讀取(read)X要求
※採取2PL鎖定可以解決不一致分析問題
※採取時間戳記可以解決不一致分析問題
(六)優點
(七)缺點
(八)死結預防協定(Deadlock Prevention Protocols)
(九)適用狀況
七、多重版本同步控制(Multi-version Concurrency Control)
(一)多重版本同步控制(Multi-version Concurrency Control)定義
(二)方法
(三)優點
(四)缺點
八、樂觀同步控制(Optimistic concurrency control)
(一)定義
(二)適用狀況
(三)三個階段
(四)優點
(五)缺點
九、比較
7-3 復原(Recovery)
一、簡介
(一)定義
(二)失敗(failure)的種類
二、復原的基本方法
(一)針對非毀滅性故障
(二)針對毀滅性故障
※異地備援(Remote Backup)
※資料庫的備份
※完整備份、增量備份以及差異備份的比較
三、交易回復(recovery)技術
(一)延遲更新(Deferred Update)
(二)立即更新(Immediate Update)
(三)Shadowing/Shadow paging
※交易記錄回復處理(Log-based Recovery)
四、延遲更新(Deferred Update)
(一)定義
(二)演算法
(三)代表技術
(四)復原程序
(五)延遲更新的復原動作
(六)缺點
(七)五種交易狀況下,延遲更新的動作
※兩階段確認協定(Two-Phase Commit Protocol, 2PC)
※三階段提交(Three-phase commit)
五、立即更新(Immediate update)
(一)定義
(二)演算法
(三)代表技術
(四)復原程序
(五)復原動作
(六)缺點
(七)五種交易狀況下,立即更新的動作
(八)寫前系統日誌協定(Write-ahead log protocol, WAL):Write ahead log protocol /預寫式日誌
六、Shadowing / Shadow paging
(一)定義
(二)演算法
(三)交易的委任與復原動作
(四)運作方式
(五)特性
(六)優點
(七)缺點
(八)解決方式
※回復技術
第八章 資料庫管理
8-1 資料庫安全(Database Security)
一、定義
二、資訊安全的威脅與防護(ISO)
(一)資料完整性(Integrity)
(二)身分認證性(Authentication)
(三)授權(Authorization)
(四)不可否認性(Non-repudiation)
(五)資料隱密性(Confidentiality)
三、資料庫安全機制
(一)自由裁量的安全機制(discretionary security mechanism)
(二)強制性的安全機制(mandatory security mechanism):委任的的控制
四、資料庫安全管理存取控制策略
(一)自由選擇存取控制(Discretionary Access Control, DAC)
(二)強制存取控制(Mandatory Access Control, MAC)
(三)角色基礎存取控制(Role-Based Access Control, RBAC)
※RBAC包含了三個基本安全原則:
※自由裁量存取控制與強制性存取控制的比較:
※資料庫安全的防護策略:以資料庫安全的預防、偵查與管理,詳細分別說明之
五、資料庫安全控制模式(Security Control Model)
(一)主體(Subject)
(二)物件(Object)
(三)存取權利(Access Right)
六、資料庫安全政策種類
(一)需要知道(Need to know)
(二)最大共用(Maximized sharing)
(三)開放政策(Open policy)
(四)封閉政策(Close policy)
七、存取控制(access control)種類
(一)內容獨立(Content independent)/值無關(value independent)
(二)內容相關(Content dependent)/值相關(value dependent)
(三)統計摘要(Statistical summary)
(四)前後文相關(Context-dependent)
※CGI(Common Gateway Interface)
8-2 資料庫整合(Database Integrity)
一、定義
二、資料庫整合規則的組成
(一)名字(name)
(二)限制(constraint)
(三)違反的回應(violation response)
(四)舉例
三、基本資料庫整合規則的分類
(一)定義域規則(domain rule)
(二)屬性規則(attribute rule)
(三)關聯式規則(relation rule)
(四)資料庫規則(database rule)
※檢查限制語法(CHECK)
8-3 資料庫績效評估方法(Benchmark)
一、定義
二、目的
(一)衡量與評估產生量化績效指標
(二)測試不同硬體平台上,不同軟體績效
(三)測試相同硬體平台上,不同軟體績效
(四)測試相同硬體/軟體平台上,不同應用系統績效
(五)提供採購和標售的系統績效指標
(六)提供系統績效預測和模擬結果
(七)提供系統升級績效評估
(八)提供系統瓶頸監測、預警與解決
三、特色
(一)相關性
(二)可攜性
(三)延展性
(四)簡易性
(五)可信賴程度與可接受程度
四、架構
五、方法
第九章 其他議題
9-1 強化個體關係模型(EER Model)
一、EER模型(Enhanced Entity-Relationship Model)概念
(一)ER模型(ER Model)
(二)類別(class)概念
(三)一般化(generalization)與特殊化(specialization)
(四)特殊化和一般化的限制
二、類別(class)
(一)定義
(二)超類別(superclass)與子類別(subclass)
(三)類別(class)的繼承
三、特殊化(specialization) / 一般化(generalization)
(一)特殊化(specialization)
※特殊化階層(Specialization hierarchy)
(二)一般化(generalization):聯集型態(Union Type)
※一般化關係的分類(Category)
四、分離(disjoint)、重疊(overlap)、與聯集(union)的限制
(一)分離限制(Disjoint Constraints)
(二)重疊限制(Overlap Constraints)
(三)完整性限制(Completeness constraints):完全性限制
※進行特殊化的步驟
※四種可能的特殊化限制組合
五、EER模型範例(與ER模型結合)
※EER Model的關係類型轉換成關聯表格:
9-2 物件導向資料庫(Object-Oriented Database)
一、物件導向資料庫簡介
(一)物件導向資料庫系統
(二)特性
(三)產品
※物件導向式資料庫系統提到的術語與觀念
※繼承的規則
二、採用物件導向資料庫的目的
(一)增加擴充性(extensibility)
(二)增加再用性(reusability)
(三)改良系統被雜度(complexity)
(四)降低成本(cost)
(五)提供抽象資料型態(abstract data types)
(六)提供型態階層(type hierarchies)
(七)物件繼承(inheritance)
(八)提供多型(polymorphism)
三、物件導向資料庫的優點
(一)擴充性(Extensibility)
(二)操作限制
(三)型態定義的彈性
(四)強大的模式化能力
(五)容易與物件導向程式語言整合
四、物件導向資料庫的缺點
(一)沒有高階的查詢語言
(二)並未對關係直接支援
(三)多重繼承
(四)不易進行最佳化
(五)關聯式資料庫的問題依然存在
(六)實作產品不多
五、物件導向資料庫所應具備的能力
(一)具有一般DBMS 的功能
(二)辨識物件(object)
(三)資訊隱藏(Information hiding)與封裝性(Encapsulation)
(四)支援複雜物件(complex object)
(六)表達繼承性(inheritance)與多重繼承(multi-inheritance)
(七)多型能力(polymorphism)
(八)版本管理(version management)
六、物件導向模式的資料結構
七、物件導向式資料庫範例
八、物件導向範例資料庫
九、物件導向資料模式與關聯式資料模式的對應表
※關聯式資料庫與物件導向資料庫的比較
9-3 資料倉儲(Data Warehouse)
一、資料倉儲簡介
(一)定義
(二)主要功能 / 主要用途
(三)目的
二、資料倉儲的特性
(一)主題導向(Subject-oriented)
(二)整合性(Integrated)
(三)時間變動性(Time-variant)
(四)不可揮發性(Nonvolatile)
三、資料倉儲中的資料
(一)細目(detailed)資料
(二)整合性(integrated)資料
(三)彙整(summarized)資料
(四)歷史性(historical)資料
(五)中繼資料(metadata)
(六)其他
四、資料倉儲架構
(一)三層架構
(二)整體環境
※Inmon將資料倉儲分成四個層次
五、資料倉儲的應用
(一)資訊處理的支援
(二)分析性的程序
(三)資料勘測(Data Mining)
六、資料倉儲的優點
(一)資料來源更廣泛
(二)可獲取最新的紀錄,以及歷史性紀錄
(三)可滿足決策上的需求
(四)包含對資料模式化與重新模式化的能力
(五)存取資料不會影響正在執行作業程式的效率
(六)降低企業成本,增加效率
七、資料倉儲與資料庫的比較
(一)資料倉儲可為多處資料來源的集合
(二)資料倉儲可包含歷史性(時間相關)的資料
(三)資料倉儲的資料不可再異動
(四)資料倉儲可包含額外的資料
(五)資料倉儲可由不同維度展現資料
※資料倉儲的建置
※資料倉儲處理程序
※ETL(Extract-Transform-Load)
※資料倉儲系統與營運系統分離的原因
※OLTP、ETL、Data Warehouse、Data Mining以及OLAP相互運作的關係
※資料超市(Data mart)
※資料超市的建置方式
※資料超市的主要用途:建立資料超市的原因
※星狀綱要(Star Schema)
※雪花狀綱要(Snowflake Schema)
※星座綱要(Constellation Schema):事實星座綱要 / 銀河綱要(Galaxy Schema)
※資料庫與資料倉儲的比較
※資料庫、資料倉儲與資料探勘的比較
9-4 線上交易處理(OLTP)與線上分析處理(OLAP)
一、定義
(一)線上交易處理(On-Line Transaction Processing, OLTP)
(二)線上分析處理(On-Line Analytical Processing, OLAP)
(三)線上分析處理的主要功能
二、OLTP與OLAP的比較
三、線上分析處理(On-Line Analytical Processing, OLAP)的特性
(一)可含有簡單的資料探勘功能
(二)快速回覆查詢
(三)從不同角度(多維度)看資料
(四)資料互動式分析
(五)資料的操作
四、OLAP的分類
(一)ROLAP(Relational OLAP)
(二)MOLAP(Multi-dimensional OLAP)
(三)HOLAP(Hybrid OLAP)
※ROLAP、MOLAP與HOLAP的比較
9-5 資料探勘(Data Mining)
一、定義
二、資料探勘的目的
三、資料探勘的步驟
(一)定義問題(define problem)
(二)資料選擇(data selection)
(三)資料處理(data preparation)
(四)知識擷取(knowledge extraction)
四、資料探勘(Data Mining)與傳統統計方法
五、從知識獲取(Knowledge discovery)的角度來看
六、資料探勘的系統架構
七、資料探勘的技術
(一)鏈結分析(Association Rule Analysis)
(二)分類分析(Classification)
(三)群集分析(Clustering Analysis)
(四)次序相關分析(Sequential Pattern Analysis)
(五)預測分析(Forecasting Analysis)
※從資料庫存取資訊來改善企業績效與決策制定的主要工具及技術為何?
※資料庫知識探勘(KDD Discovery in Database, KDD):知識探索
※資訊檢索(Information Retrieval)與資料探勘(Data Mining)的異同
※單純貝氏分類器(naive Bayes classifier):樸素貝葉斯分類器
※資料探勘中的關聯規則(Association Rule)
※最近鄰居分類法(Nearest-Neighbor Classification)
※混淆矩陣(Confusion Matrix)
9-6 知識庫(Knowledge Base)
※UML(Unified Modeling Language)
※可延伸式標記語言(eXtensible Markup Language, XML)
※DTD
※XML Schema
※比較兩種查詢XML資料的語言
※URL與XPath的比較
※unique項目必須依序包含下列項目
※實作事項
※DTD與XML Schema的比較
※用關聯式資料庫與用檔案儲存XML資料的比較
※Transact-SQL
※使用者定義函數(User Defined Functions)
※預存程序與使用者定義函數的比較
※建立觸發程序
※資料指標(Data Cursor)
※在SQL語法中CURSOR與SELECT在使用上的差異
※冗餘陣列廉價磁碟(Redundant Array Inexpensive Disk, RAID)
※海量資料(Big Data):大數據
※大數據與一般傳統資料庫處理的資料其不同之處
※商業智慧、資料倉儲及巨量資料分析三者的關係與重要啟示
※政府資料開放(Open Data)
留言列表