第六章 數據庫設計(E-R圖)
6.1 數據庫設計概述
6.1.1 數據庫設計的任務、內容和特點
- 數據庫設計的任務:根據用戶需求研製數據庫結構的過程
- 數據庫設計的內容
- 數據庫的結構設計:給定應用環境,進行數據庫的子模式或模式的設計。包括概念設計、邏輯設計和物理設計。又稱靜態模型設計。
- 數據庫的行爲設計:確定數據庫用戶的行爲和動作。又稱動態模型設計。
- 數據庫設計的特點:強調結構設計和行爲設計相結合,以數據模型爲核心,建立一個完整、獨立、共享、冗餘小和安全有效的數據庫系統。
6.1.2 數據庫設計方法簡述
- 設計方法種類
- 直觀設計法(手工試湊法)
- 規範設計法:其中有個公認的權威,新奧爾良法。
- 計算機輔助設計法
- 自動化設計法
- 規範設計法
- 基於E-R模型的數據庫設計方法
- 基於3NF的數據庫設計方法
- 基於視圖的數據庫設計方法
6.1.3 數據庫設計的步驟
- 系統需求分析階段:確保用戶目標一致性
- 概念結構設計階段
- 邏輯結構設計階段
- 物理結構設計階段
- 數據庫實施階段
- 數據庫運行與維護階段
6.2 系統需求分析
6.2.1 需求分析的任務
- 調查分析用戶活動
- 手機和分析需求數據,確定系統邊界
- 編寫系統分析報告
6.2.2 需求分析的方法
- 方法
- 自頂向下(主要,又稱結構化分析方法,SA):用數據流圖(DFD)和數據字典(DD)描述系統
- 自底向上
- 數據流圖:表達了數據和處理過程的關係
- 數據字典:對系統中數據的詳細描述,是各類數據結構和屬性的清單。
- 數據項
- 數據結構
- 數據流
- 數據存儲
- 處理過程
6.2.3 案例的需求分析
- 案例的數據流程圖
- 案例的數據字典
學生自然情況信息:學生的學號、學生的姓名、學生的年齡和學生的院系等
課程信息:課程的編號、課程的名字和授課教師等
教師的信息:教師的編號、教師的姓名、教師的性別、教師的職稱和教授課程
任課信息:課程名和授課教師名等
學生選課信息:學生名、課程名和教師名等
課程分數信息:學生名、課程名和分數等
6.3 概念結構設計
6.3.1 概念結構設計的必要性
- 概念結構設計就是將需求分析得到的用戶需求抽象爲信息結構,即概念模型
- 優點
- 設計複雜程度大大降低,便於組織管理
- 概念模型不收特定的DBMS的限制,也獨立於存儲安排和效率方面的考慮,比邏輯模型更穩定
- 不含具體的DBMS附加的基數細節,更容易理解,因而更準確反映用戶的信息需求
6.3.2 概念模型的特點
- 語義表達能力豐富
- 易於交流和理解
- 易於修改和擴充
- 易於向各種數據模型轉換
6.3.3 概念模型的E-R表示方法
- 實體型:用矩形框表示,框內標註實體名稱
- 屬性:用橢圓形框表示,框內標註屬性名稱,並用無向線將與其實體向連
- 聯繫:用菱形框表示,框內標註聯繫名稱
- 聯繫本身就是實體的一種,也可以有屬性
6.3.4 概念結構設計的方法與步驟
- 概念結構設計的方法
- 自頂向下:先定義去全局,在逐步細化
- 自底向上:先定義各局部應用的概念結構E-R模型,然後集成,得到全局概念結構E-R模型
- 逐步擴張:先定義核心的E-R模型,然後向外擴充,滾雪球一樣
- 混合策略:自頂向下的需求分析,自底向上的設計概念結構
- 概念設計的步驟(自底向上的設計方法)
- 進行數據抽象,設計局部E-R圖,即設計用戶視圖
- 集成各局部E-R模型,形成全局E-R模型,即視圖集成
- 數據抽象與局部E-R模型設計
- E-R方法;關鍵在於正確劃分實體和屬性
- 數據抽象:分類和聚集
- 分類(Classification):定義某一類概念,將一組具有某些共同特性和行爲的對象抽象爲一個實體
- 聚集(Aggregation):定義某一類型的組成成分,將對象類型的組成成分抽象爲實體的屬性
- 局部的E-R模型設計
- 實體具有描述信息,屬性沒有
- 屬性不能有其他實體具有聯繫,聯繫只能發生在實體之間
- 一般情況下,能作爲屬性對待的,儘量作爲屬性
- 全局的E-R模型設計
- 視圖集成的方法:多元集成法、二元集成法
- 合併:合併局部E-R圖,消除局部E-R圖之間的衝突
- 屬性衝突:屬性值域衝突、屬性的取值單位衝突
- 命名衝突:同名異義、異名同義
- 結構衝突:
- 同一對象在不同應用中有不同抽象
- 同一實體在不同應用中屬性組成不同
- 同一聯繫在不同應用中程序不同類型
- 優化:消除不必要的冗餘,生成基本E-R圖
6.3.5 案例的概念結構設計
6.4 邏輯結構設計
6.4.1 任務和步驟
6.4.2 初始關係模式設計
- 轉換原則
- 一個實體轉換爲一個關係模式,實體的屬性就是關係的屬性,實體的碼就是關係的主碼
- 一個聯繫轉換爲一個關係模式,與該聯繫相連的各實體的主碼及其聯繫的屬性均轉換爲該關係的屬性,該關係的碼有3種情況
- 如果爲1:1,則每個實體的主碼都可以是關係的候選碼
- 如果爲1:n,則N端實體的主碼是關係的主碼
- 如果聯繫爲n:M,則每個實體的主碼的組合是關係的主碼
6.4.3 關係模式規範化
- 確定範式級別
- 實施規範化處理
6.4.4 模式評價和改進
- 模式評價
- 功能評價
- 性能評價
- 模式改進
- 合併
- 分解:水平分解,垂直分解
6.5 物理結構設計
6.5.1 確定物理結構
- 存儲記錄結構的設計
- 數據的基本存取單位是存儲記錄。某一類型的所有存儲記錄的集合稱爲“文件”
- 文件組織和文件結構是組成文件的存儲記錄的表示法
- 覺得存儲結構的主要因素是:存取時間、存儲空間和維護代價
- 聚集(Cluster):爲了提高查詢速度,把一個(或一組)屬性上具有相同值的元組集中地存放在一個物理塊中,其中這個(或這組)屬性稱爲聚集碼。
- 聚集能節省存儲空間
- 聚集能大大提高按聚集碼查詢的效率
- 索引
- 在主碼上建立唯一索引,可以提高查詢速度,也能避免主碼重複值錄入
- 建立多個索引可以縮短存取時間,但是增加了空間佔用和維護的開銷
- 訪問方法的設計
- 數據存放位置的設計
- 系統配置的設計
6.6 數據庫實施
- 建立實際數據庫結構
- 裝入數據
- 應用程序編碼與調試
- 數據庫試運行
- 整理文檔
6.7 數據庫運行和維護
- 維護數據庫的安全性與完整性
- 檢測並改善數據庫性能
- 重新組織和構造數據庫