1. 程式人生 > >第二章 資料庫設計和ER模型

第二章 資料庫設計和ER模型

2.1 資料庫系統生存期

軟體生存期是指從軟體的規劃、研製、實現、投入執行後的維護,直到它被新的軟體所取代而停止使用的整個期間。

定義2.1 我們把資料庫應用系統從開始規劃、設計、實現、維護到最後被新的系統取代而停止使用的整個期間,稱為資料庫系統生存期。

一般分為7個階段:規劃、需求分析、概念設計、邏輯設計、物理設計、實現、執行維護。

2.1.1 規劃階段

三步驟:

1)系統調查

2)可行性分析

3)確定資料庫系統的總目標,制定計劃。批准後進入資料庫系統的開發工作。

2.1.2 需求分析階段

分四步:

(1)分析使用者活動,產生業務流程圖

(2)確定系統範圍,產生系統關聯圖

(3)分析使用者活動涉及的資料,產生資料流圖

資料流圖(Data Flow Diagram ,簡記為DFD)是從“資料”和“對資料的加工”兩方面表達資料處理系統工作過程的一種圖形表示法,具有直觀、易於被使用者和軟體人員雙方都能理解的一種表達系統功能的描述方式。

(4)分析系統資料,產生資料字典

資料字典是對資料描述的集中管理,它的功能呢個是儲存和檢索各種資料描述(稱為元資料Metadata)。對資料庫設計來說,資料字典是進行詳細的資料收集和資料分析所獲得的主要成果。

資料字典中通常包括資料項、資料結構、資料流、資料儲存和處理過程5個部分。

2.1.3 概念設計階段

概念設計的目標是產生反映使用者單位資訊需求的資料庫概念結構,即概念模型。

1.概念設計的重要性

2.概念設計的主要步驟

(1)進行資料抽象,設計區域性概念模型

設計概念結構時,常用的資料抽象方法是“聚集”和“概括”。聚集是將若干物件和它們之間的聯絡組合成一個新的物件。概括是將一組具有某些共同特性的物件抽象成更高一層意義上的物件。

(2)將區域性概念模型綜合成全域性概念模型

3)評審

2.1.4 邏輯設計階段

邏輯設計的目的是把概念設計階段設計好的概念模型轉換成與選用的具體機器上的DBMS所支援的資料模型相符合的邏輯結構(包括資料庫邏輯模型和外模型)。

邏輯設計的主要步驟有五步:

(1)把概念模型轉換成邏輯模型

(2)設計外模型

(3)設計應用程式與資料庫的介面

(4)

評價模型

評價資料庫結構的方法通常有定量分析和效能測量。

定量分析有兩個引數:處理頻率和資料容量。處理頻率是在資料庫執行期間應用程式的使用次數。資料容量是資料庫中記錄的個數。資料庫增長過程的具體表現就是這兩個引數值的增加。

效能測試是指邏輯記錄的訪問數目。

(5)修正模型

2.1.5 物理設計階段

對於給定的基本資料模型選取一個最適合應用環境的物理結構的過程,稱為物理設計。

資料庫的物理結構主要指資料庫的存取記錄格式、存取記錄安排和存取方法。

物理設計分五步:

(1)儲存記錄結構設計

(2)確定資料存放位置

(3)存取方法的設計

(4)完整性和安全性考慮

(5)程式設計

2.1.6 資料庫的實現

(1)定義資料庫結構

(2)資料裝載

(3)編制與除錯應用程式

(4)資料庫試執行

2.1.7 資料庫的執行與維護

在資料庫執行階段,對資料庫經常性的維護工作主要是由DBA完成的,它包括以下內容:

(1)資料庫的轉儲和恢復

(2)資料庫安全性、完整性控制

(3)資料庫效能的監督、分析和改進

(4)資料庫的重組織和重構造

2.2 ER模型的基本概念

2.2.1 ER模型的基本元素

ER模型的基本元素是:實體、聯絡和屬性

1.實體

定義2.2 實體、實體集、實體型別的定義如下:

(1)實體(Entity)是一個數據物件,指應用中可以區別的客觀存在的事物。

(2)實體集(Entity Set)是指同一類實體構成的集合。

(3)實體型別(Entity Type)是對實體集中的實體的定義。

2.聯絡

定義2.3 聯絡、聯絡集、聯絡型別的定義如下

(1)聯絡(Relationship)表示一個或多個實體之間的關聯關係。

(2)聯絡集(Relationship Set)是指同一類聯絡構成的集合。

(3)聯絡型別(Relationship Type)是對聯絡集中聯絡的定義。

3.屬性

定義2.4 實體的某一特性稱為屬性(Attribute)。在一個實體中,能夠唯一標識實體的屬性或屬性集稱為“實體識別符號”。

2.2.2 屬性的分類

1.簡單屬性和複合屬性

簡單屬性(Simple Attribute)是不可再分割的屬性。複合屬性(Composite Attribute)是可再分解為其他屬性的屬性(即屬性可巢狀)。

2.單值屬性和多值屬性

單值屬性(Single -Value Attribute)指的是同一實體的屬性只能取一個值。

多值屬性(Multi-Value Attribute)指的是同一實體的某些屬性可能取多個值。

多值屬性進行變換的方法:

(1)將原來的多值屬性用幾個新的單值屬性來表示。

(2)將原來的多值屬性用一個新的實體型別表示。

3.儲存屬性和派生屬性

可從其他屬性值推匯出值的屬性,稱為派生屬性(Derived Attribute)。派生屬性的值不必儲存在資料庫內,而其他需要儲存值的屬性稱為儲存屬性(Stored Attribute)。

4.允許為空值的屬性

當實體在某個屬性上沒有值時應使用空值(Null Value)。

2.2.3 聯絡的設計

1.聯絡的元數

定義2.5 一個聯絡涉及到的實體集個數,稱為該聯絡的元數或度數(Degree)。

2.聯絡型別的約束

1)基數約束

二元聯絡的對映基數(Mapping Cardinalities

定義2.6 實體集E1E2之間有二元聯絡,則參與一個聯絡中的實體數目稱為對映基數。

(2)參與約束

定義2.7 如果實體集E中的每個實體都參與聯絡集R的至少一個聯絡中,我們稱實體集E“完全參與”實體集R。如果實體集E中只有部分實體參與聯絡R的聯絡中,我們稱實體集E“部分參與”聯絡集R。在ER圖中表示時,完全參與用雙邊線表示,部分參與用單邊線表示。

2.2.4 ER模型的操作

2.2.5 採用ER模型的資料庫概念設計步驟

1.設計區域性ER模型

2.設計全域性ER模型

3.全域性ER模型的優化

2.3 關係模型的基本概念

2.3.1 關係模型的基本術語

定義2.8 用二維表格表示實體集,用關鍵碼錶示實體之間聯絡的資料模型稱為關係模型(Realtional Model)。

在關係模型中,欄位稱為屬性,欄位值稱為屬性值,記錄型別稱為關係模式。記錄稱為元組(Tuple),元組的集合稱為關係(Relation)或例項(Instance)。

關係中屬性個數稱為“元數”(Arity),元組個數稱為“基數”(Cardinality)。

關鍵碼(key,簡稱鍵)由一個或多個屬性組成。在實際使用中,有以下幾種鍵。

(1)超鍵(Super Key):在關係中能惟一標識元組的屬性稱為關係模式的超鍵。

(2)候選鍵(Candidate Key):不含有多餘屬性的超鍵稱為候選鍵。也就是在候選鍵中,若在刪除屬性,就不是鍵了。

(3)主鍵(Primary Key):使用者選作元組標識的候選鍵稱為主鍵。

(4)外來鍵(Foreign Key):如果模式R中屬性K是其他模式的主鍵,那麼K在模式R中為外來鍵。

2.3.2 關係的定義和性質

定義2.9 關係式一個屬性數目相同的元組的集合。

2.3.3 三類完整性規則

1.實體完整性規則(Entity Integrity Rule

這條規則要求關係中元組在組成主鍵的屬性上不能有空值。如果出現空值,那麼主鍵值就起不了惟一標識元組的作用。

2.參照完整性規則(Reference Integrity Rule

定義2.10 參照完整性規則的形式定義如下:

如果屬性集K是關係模式R1的主鍵,K也是關係模式R2的外來鍵,那麼在R2的關係中,K的取值只允許兩種可能,或者為空值,或者等於R1關係中的某個主鍵值。

3.使用者定義的完整性規則

2.4 ER模型到關係模型的轉換

2.4.1 ER圖轉換成關係模式集的演算法

2.4.2 採用ER模型的邏輯設計步驟

關係資料庫的邏輯設計的結果是一組關係模式的定義。分五步

1.匯出出事關係模式集

2.規範化處理

3.模式評價

4.模式修正

5.設計子模式

2.5 ER模型例項分析

2.6 增強的ER模型

增強的ER模型(Enhanced-ER模型,簡稱為EER模型)

2.6.1 弱實體和強實體

定義2.11 一個實體對於另一個實體(稱為強實體)具有很強的依賴關係,而且該實現主鍵的一部分或全部從其強實體中獲得,則稱該實體為弱實體。

強實體與弱實體的聯絡只能是1:11:N

2.6.2 子類實體與超類實體

定義2.12 當較低層上實體型別表達了與之聯絡的較高層上的實體型別的特殊情況時,就稱較高層上實體型別為超型別(Supertype),較低層上實體型別為子型別(Subtype)。

在資料庫設計中,從子類到超類的抽象化過程稱為“概化”,這是自底向上的概念綜合(Synthesis);從超類到子類的具體化過程稱為“特化”,這是自頂向下的概念發揮(Refinement)。

子類與超類有兩個性質:

(1)子類與超類之間具有繼承性特點,即子類實體繼承超類實體的所有屬性。但子類實體本身還可以包含比超類實體更多的屬性。

(2)這種繼承性是通過子類實體和超類實體有相同的實體識別符號實現的。

有兩種約束適用於特化工程:不相交約束和完備性約束

(1)不相交約束(Disjointness Constraint

不相交約束是指特化的子類是否相交。不相交約束又分成不相交和重疊兩種情況:

① 不相交(Disjoint)約束規定了在特化過程中,子類必須是不相交的。這意味著一個實體至多是特化中一個子類的成員。

② 重疊(Overlap)約束規定了在特化過程中,子類可以是相交的。這意味著一個實體可出現在特化中的多個子類裡。

(2)完備性約束(Complete Constraint

① 整體特化(Total  Specialization)約束指定超類中的每個實體必須是特化中某個子類的成員。

② 部分特化(Partial Specialization)約束允許超類中的實體可以不屬於任何一個子類。

<!--EndFragment-->