數據庫設計
數據庫設計是指對於一個給定的應用環境,構造(設計)優化的數據庫邏輯模式和物理結構,並據此建立數據庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據操作要求。
目標:為用戶和各種應用系統提供一個信息基礎設施和高效率的運行環境
數據庫建設的基本規律
三分技術,七分管理,十二分基礎數據
管理
數據庫建設項目管理
企業(即應用部門)的業務管理
基礎數據
收集、入庫
更新新的數據
結構(數據)設計和行為(處理)設計相結合
將數據庫結構設計和數據處理設計密切結合
手工與經驗相結合方法
設計質量與設計人員的經驗和水平有直接關系
數據庫運行一段時間後常常不同程度地發現各種問題,增加了維護代價
規范設計法
基本思想:過程迭代和逐步求精
新奧爾良(New Orleans)方法
將數據庫設計分為若干階段和步驟
基於E-R模型的數據庫設計方法
概念設計階段廣泛采用
3NF(第三范式)的設計方法
邏輯階段可采用的有效方法
ODL(Object Definition Language)方法
面向對象的數據庫設計方法
計算機輔助設計
ORACLE Designer 2000
SYBASE PowerDesigner
數據庫設計分6個階段
需求分析
概念結構設計
邏輯結構設計
物理結構設計
數據庫實施
數據庫運行和維護
需求分析和概念設計獨立於任何數據庫管理系統
邏輯設計和物理設計與選用的DBMS密切相關
一、數據庫設計的准備工作:選定參加設計的人
1.系統分析人員、數據庫設計人員
自始至終參與數據庫設計
2. 用戶和數據庫管理員
主要參加需求分析和數據庫的運行維護
3.應用開發人員(程序員和操作員)
在系統實施階段參與進來,負責編制程序和准備軟硬件環境
二、數據庫設計的過程(六個階段)
⒈需求分析階段
准確了解與分析用戶需求(包括數據與處理)
最困難、最耗費時間的一步
⒉概念結構設計階段
整個數據庫設計的關鍵
通過對用戶需求進行綜合、歸納與抽象,形成一個獨立於具體DBMS的概念模型
⒊邏輯結構設計階段
將概念結構轉換為某個DBMS所支持的數據模型
對其進行優化
⒋數據庫物理設計階段
為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)
⒌數據庫實施階段
運用DBMS提供的數據庫語言(如SQL)及宿主語言,根據邏輯設計和物理設計的結果
建立數據庫
編制與調試應用程序
組織數據入庫
進行試運行
⒍數據庫運行和維護階段
數據庫應用系統經過試運行後即可投入正式運行
在數據庫系統運行過程中必須不斷地對其進行評價、調整與修改
詳細調查現實世界要處理的對象(組織、部門、企業等)
充分了解原系統(手工系統或計算機系統)
明確用戶的各種需求
確定新系統的功能
充分考慮今後可能的擴充和改變
調查的重點是“數據”和“處理”,獲得用戶對數據庫要求
信息要求
處理要求
安全性與完整性要求
確定用戶最終需求
用戶缺少計算機知識
設計人員缺少用戶的專業知識
解決方法
設計人員必須不斷深入地與用戶進行交流
⑴ 調查組織機構情況
⑵ 調查各部門的業務活動情況。
⑶ 在熟悉業務活動的基礎上,協助用戶明確對新系統的各種要求。
⑷ 確定新系統的邊界
(1)跟班作業
(2)開調查會
(3)請專人介紹
(4)詢問
(5)設計調查表請用戶填寫
(6)查閱記錄
結構化分析方法(Structured Analysis,簡稱SA方法)
從最上層的系統組織機構入手
自頂向下、逐層分解分析系統
2.分解處理功能和數據
(1)分解處理功能
將處理功能的具體內容分解為若干子功能
(2)分解數據
處理功能逐步分解同時,逐級分解所用數據,形成若干層次的數據流圖
(3)表達方法
處理邏輯:用判定表或判定樹來描述
數據:用數據字典來描述
3.將分析結果再次提交給用戶,征得用戶的認可
數據字典的用途
進行詳細的數據收集和數據分析所獲得的主要結果
數據字典的內容
數據項
數據結構
數據流
數據存儲
處理過程
數據項是不可再分的數據單位
對數據項的描述
數據項描述={ 數據項名,數據項含義說明,別名,
數據類型,長度,取值范圍,取值含義,
與其他數據項的邏輯關系,數據項之間的 聯系 }
數據結構反映了數據之間的組合關系。
一個數據結構可以由若干個數據項組成,也可以由若干個數據結構組成,或由若干個數據項和數據結構混合組成。
對數據結構的描述
數據結構描述={數據結構名,含義說明,
組成:{數據項或數據結構}}
數據流是數據結構在系統內傳輸的路徑。
對數據流的描述
數據流描述={ 數據流名,說明,數據流來源,
數據流去向,組成:{數據結構},
平均流量,高峰期流量}
數據存儲是數據結構停留或保存的地方,也是數據流的來源和去向之一。
對數據存儲的描述
數據存儲描述={數據存儲名,說明,編號,
輸入的數據流 ,輸出的數據流 ,
組成:{數據結構},數據量,存取頻度, 存取方式}
具體處理邏輯一般用判定表或判定樹來描述
處理過程說明性信息的描述
處理過程描述={處理過程名,說明,輸入:{數據流},
輸出:{數據流},處理:{簡要說明}}
例:學生學籍管理子系統的數據字典。
數據項,以“學號”為例: 數據項: 學號 含義說明:唯一標識每個學生
別名: 學生編號
類型: 字符型
長度: 8
取值范圍:00000000至99999999
取值含義:前兩位標別該學生所在年級,
後六位按順序編號
與其他數據項的邏輯關系:
數據結構,以“學生”為例
“學生”是該系統中的一個核心數據結構: 數據結構: 學生 含義說明: 是學籍管理子系統的主體數據結構, 定義了一個學生的有關信息 組成: 學號,姓名,性別,年齡,所在系,年級
數據流,“體檢結果”可如下描述:
數據流: 體檢結果
說明: 學生參加體格檢查的最終結果
數據流來源:體檢
數據流去向:批准
組成: ……
平均流量: ……
高峰期流量:……
數據存儲,“學生登記表”可如下描述:
數據存儲: 學生登記表
說明: 記錄學生的基本情況
流入數據流:……
流出數據流:……
組成: ……
數據量: 每年3000張
存取方式: 隨機存取
處理過程“分配宿捨”可如下描述:
處理過程:分配宿捨
說明: 為所有新生分配學生宿捨
輸入: 學生,宿捨
輸出: 宿捨安排
處理: 在新生報到後,為所有新生分配學生宿捨。
要求同一間宿捨只能安排同一性別的學生,
同一個學生只能安排在一個宿捨中。
每個學生的居住面積不小於3平方米。
安排新生宿捨其處理時間應不超過15分鐘。
數據字典是關於數據庫中數據的描述,是元數據,而不是數據本身
數據字典在需求分析階段建立,在數據庫設計過程中不斷修改、充實、完善
設計人員應充分考慮到可能的擴充和改變,使設計易於更改,系統易於擴充
必須強調用戶的參與