7.1 資料庫設計概述: 資料庫設計一般定義:資料庫設計是指對於一個給定的應用環境,構造(設計)優化的資料庫邏輯模式和物理結構,並據此建立資料庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據操作要求 定的應用環境:一個資料庫不可能什麼數據都接收,如在學校或 ...
7.1 資料庫設計概述:
- 資料庫設計一般定義:資料庫設計是指對於一個給定的應用環境,構造(設計)優化的資料庫邏輯模式和物理結構,並據此建立資料庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據操作要求
- 定的應用環境:一個資料庫不可能什麼數據都接收,如在學校或工廠,就要建立相當於的資料庫,學校工廠就是環境
- 邏輯模式:如設計的一張表,表的屬性設計,每個表中應該放什麼數據,是第幾範式,這就是在邏輯模式設計的
- 物理結構:就是數據存儲在什麼地方,怎麼存放
- 信息管理要求:在資料庫中應該存儲和管理哪些數據對象
- 數據操作要求:對數據對象需要進行哪些操作,如查詢、增、刪、 改、統計等操作
- 資料庫設計的目標:為用戶和各種應用系統提供一個信息基礎設施和高效的運行環境
- 高效的運行環境:(資料庫是應用程式理最底層的交互平臺,所以要保證高效的操作,要求如下)
- 資料庫數據的存取效率高
- 據庫存儲空間的利用率高
- 資料庫系統運行管理的效率高
7.1.1 資料庫設計的特點:
- 三分技術,七分管理,十二分基礎數據
- 管理:資料庫建設項目管理、企業(即應用部門)的業務管理
- 基礎數據:數據的收集、整理、組織和不斷更新是資料庫建設中的重要環節
- 結構(數據)設計和行為(處理)設計相結合
- 整個設計過程中把資料庫結構設計和對數據的處理設計密切結合起來
- 結構和行為分離的設計:(如圖,資料庫和軟體設計分離,不好的設計)
- 傳統的軟體工程:重行為設計,忽視對應用中數據語義的分析和抽象,只要有可能就儘量推遲數據結構設計的決策
- 早期的資料庫設計:重結構設計,致力於數據模型和資料庫建模方法研究,忽視了行為設計對結構設計的影響
7.1.2 資料庫設計方法:
- 大型資料庫設計是涉及多學科的綜合性技術,又是一項龐大的工程項目。它要求資料庫設計人員具有多方面的知識和技術主要包括:
- 電腦的基礎知識
- 軟體工程的原理和方法
- 程式設計的方法和技巧
- 資料庫的基本知識
- 資料庫設計技術
- 應用領域的知識
- 早期資料庫設計:主要採用手工與經驗相結合的方法:
- 設計質量與設計人員的經驗和水平有直接關係
- 缺乏科學理論和工程方法的支持,設計質量難以保證
- 資料庫運行一段時間後又不同程度地發現各種問題,增加了系統維護的代價
- 規範設計法基本思想:過程迭代和逐步求精,典型方法如下:
- 新奧爾良(New Orleans)方法
- 簡介:把資料庫設計分為四個間階段,目前不同的階段做什麼事,如第一個階段需求分析(瞭解用戶和應用程式對資料庫的要求),第二個階段概念結構設計根據需求分析設計出資料庫大致長什麼樣(如用E-R圖),第三階段邏輯設計根據E-R設計轉為資料庫中實際的表,第四階段物理結構設計(就是數據存儲在什麼地方,怎麼存放)
- 基於 E-R 模型的設計方法
- 簡介:根據需求分析得到實體與實體之間的聯繫,做成E-R圖
- 3NF(第三範式)的設計方法
- 簡介:就是取消了表中的傳遞函數依賴
- 面向對象的資料庫設計方法
- 簡介:和java中的面向對象一樣的原理
- 統一建模語言(UML)方法
- 簡介:這是一種工具,和E-R圖有點類似,表達出實體與實體間的聯繫
- 新奧爾良(New Orleans)方法
7.1.3 資料庫設計的基本步驟:
- 資料庫設計分 6 個階段:(在上述的新奧爾良方法中增加了兩個設計)
- 需求分析 -- 就是瞭解資料庫要建成什麼樣
- 概念結構設計 -- 把資料庫描述出來(如用E-R或UML)
- 邏輯結構設計 -- 根據概念結構設計,在資料庫中設置出一張張表
- 物理結構設計 -- 數據存儲在什麼地方,怎麼存放
- 資料庫實施 -- 上面四步資料庫就建成,那怎麼用,就是實施
- 資料庫運行和維護 -- 資料庫進行使用枚舉需要運行和維護
- 細節:
- 需求分析和概念結構設計獨立於任何資料庫管理系統
- 理解:這兩個階段不是真得要建立資料庫,只是設計階段,獨立於任何資料庫管理系統,就是那我設計完了,可能用MySQL或SqlServer
- 邏輯結構設計和物理結構設計與選用的資料庫管理系統密切相關
- 理解:就是不同的資料庫管理系統,設計的操作也不同,所以密切相關,像MySQL或SqlServer的很多操作就不同
- 這個圖可以多看:
- 需求分析和概念結構設計獨立於任何資料庫管理系統
- 參加資料庫設計的人員
- 系統分析人員和資料庫設計人員:資料庫設計的核心人員,將自始至終參與資料庫設計,其水平決定了資料庫系統的質量
- 資料庫管理員和用戶代表:主要參加需求分析與資料庫的運行和維護
- 應用開發人員(包括程式員和操作員):在實施階段參與進來,分別負責編製程式和準備軟硬體環境
- 各階段的主要任務:
- 1. 需求分析階段
- 整個設計過程的基礎,是最困難和最耗費時間的一步
- 是否做得充分與準確,決定了構建資料庫的速度和質量
- 2. 概念結構設計階段
- 整個資料庫設計的關鍵
- 通過對用戶需求進行綜合、歸納與抽象,形成一個獨立於具體資料庫管理系統的概念模型
- 3. 邏輯結構設計階段
- 將概念結構轉換為某個資料庫管理系統所支持的數據模型,並對其進行優化
- 4.物理結構設計階段
- 為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)
- 5. 資料庫實施階段
- 根據邏輯設計和物理設計的結果建立資料庫
- 編寫與調試應用程式
- 組織數據入庫併進行試運行
- 6. 資料庫運行和維護階段
- 經過試運行後即可投入正式運行
- 在運行過程中必須不斷對其進行評估、調整與修改
- 1. 需求分析階段
- 細節:
- 設計一個完善的資料庫應用系統,往往是上述 6 個階段的不斷反覆
- 這個設計步驟既是資料庫設計的過程,也包括了資料庫應用系統的設計過程
- 在設計過程中把資料庫的設計和對資料庫中數據處理的設計緊密結合起來,將這兩個方面的需求分析、抽象、設計、實現在各個階段同時進行,相互參照,相互補充,以完善兩方面的設計
- 各階段的數據設計描述:
- 對上述圖簡單的說明:
- 1.需求分析階段
- 綜合各個用戶的應用需求
- 2.概念設計階段
- 用圖像的方式(E-R圖)表示出需要分析
- 3.邏輯設計階段
- 將E-R圖轉換成具體的資料庫產品支持的數據模式(就是表)
- 然後根據用戶處理的要求、安全性考慮,在基本表上在建立視圖,形成數據外模式
- 4.物理設計階段
- 根據(不同的產品資料庫)資料庫管理系統特點和處理的需要,進行物理存儲安排,建立索引,形成資料庫內模式
- 1.需求分析階段
7.1.4 資料庫設計過程中的各級模式:
7.2 需求分析:
- 什麼是需求分析?分析用戶的要求
7.2.1 需求分析的任務:
- 詳細調查現實世界要處理的對象(組織、部門、企業等)
- 充分瞭解原系統(手工系統或電腦系統)的工作概況
- 明確用戶的各種需求,然後在此基礎上確定新系統的功能
- 新系統必須充分考慮今後可能的擴充和改變
- 調查的重點:是“數據”和“處理”,通過調查、收集與分析,獲得用戶對資料庫的信息要求、處理要求、安全性與完整性要求
7.2.2 需求分析的方法:
- 需求分析的目標:
- 調查清楚用戶的實際要求併進行初步分析,與用戶達成共識,分析與表達這些需求
- 調查用戶需求的具體步驟:
- 調查組織機構情況
- 調查各部門的業務活動情況
- 協助用戶明確對新系統的各種要求,包括信息要求、 處理要求、完全性與完整性要求
- 確定新系統的邊界
- 常用的調查方法:
- 跟班作業。通過親身參加業務工作來瞭解業務活動的情況
- 開調查會。通過與用戶座談來瞭解業務活動情況及用戶需求
- 請專人介紹
- 詢問。對某些調查中的問題可以找專人詢問
- 設計調查表請用戶填寫。如果調查表設計得合理,則很有效
- 查閱記錄。查閱與原系統有關的數據記錄
- 結構化分析方法(Structured Analysis,SA):從最上層的系統組織機構入手,採用自頂向下、逐層分解的方式分析系統
7.2.3 數據字典:
- 什麼是數據字典?數據字典和新華字典一樣,但數據字典解釋的是每一個數據,解釋每一個數據裡面有什麼屬性和什麼操作
- 數據字典是關於資料庫中數據的描述,即元數據(不是直接描述,如存的是張三,學號001不是這樣描述,而是描述出學號是什麼樣的,應該學號是三位的的數字,範圍是多少,是這樣描述的),不是數據本身。數據字典是在需求分析階段建立,是繼續詳細的數據收集和數據分析所得到的,併在資料庫設計過程中不斷修改、充實、完善的
- 數據字典包括:數據項(有哪些數據)、數據結構(這個數據是什麼結構,如:學號的結構是什麼)、數據流(數據的流向,部門A指向部門B)、數據存儲(數據是B+樹存儲還是表的形式存儲)、處理過程(資料庫哪些數據要進行增刪改查,這個操作可以被哪些用戶擁有)
- 數據項:數據項是不可再分的數據單位
- 數據項描述={數據項名,數據項含義說明,別名,數據類型,長度,取值範圍,取值含義,與其他數據項的邏輯關係,數據項之間的聯繫}
- 理解:
- 數據項名 -- 如Sno
- 數據項含義說明 -- Sno的作用
- 別名 -- Sno在其它其它表中是否有別名,如學號
- 數據類型 -- Sno的數據類型,然char(3)
- 長度 -- char(3),3就是它的長度
- 取值範圍 -- Sno的取值範圍001-999
- 取值含義 -- 001是學號,或表示男女生0是女1是男
- 與其他數據項的邏輯關係 --如: SC(Sno,Cno),就是外鍵
- 數據項之間的聯繫:如知道Sno就可以推出學生的姓名,就是函數依賴
- “取值範圍”、“與其他數據項的邏輯關係”定義了數據的完整性約束條件,是設計數據檢驗功能的依據
- 可以用關係規範化(範式)理論為指導,用數據依賴的概念分析和表示數據項之間的聯繫
- 數據結構:數據結構反映了數據之間的組合關係
- 數據結構描述={數據結構名,含義說明,組成:{數據項或數據結構}}
- 說明:一個數據結構可以由若幹個數據項組成,也可以由若幹個數據結構組成,或由若幹個數據項和數據結構混合組成
- 理解:如倉庫進貨,入庫單就是數據結構,入庫單上又有很多信息
- 數據流:數據流是數據結構在系統內傳輸的路徑
- 數據流描述={數據流名,說明,數據流來源,數據流去向,組成:{數據結構},平均流量,高峰期流量}
- 理解:如從選課表中抽取一個成績反饋給用戶
- 數據流名 -- 就可以是成績
- 說明 -- 該數據是乾什麼的
- 數據流來源 -- 數據從哪來的SC表
- 數據流去向 -- 數據到哪去,到應用程式
- 組成 -- 如學號、姓名和成績組成
- 平均流量 -- 如12小時或一個月的傳輸次數
- 高峰期流量 -- 如15號來查詢成績,15號就是高峰期流量
- 說明:
- 數據流來源:說明該數據流來自哪個過程
- 數據流去向:說明該數據流將到哪個過程去
- 平均流量:在單位時間(每天、每周、每月等)里的傳輸次數
- 高峰期流量:在高峰時期的數據流量
- 數據存儲:數據存儲是數據結構停留或保存的地方,也是數據流的來源和去向之一
- 數據存儲描述={數據存儲名,說明,編號,輸入的數據流,輸出的數據流,組成:{數據結構},數據量,存取頻度,存取方式}
- 理解:
- 數據存儲名 -- 這個存儲的名字
- 說明 -- 存儲什麼信息
- 編號 -- 存儲編號
- 輸入/出的數據流 -- 輸入輸出的信息
- 組成 -- 輸入輸出的是哪些數據,存取的量,存取的頻率,存取的方式
- 說明:
- 存取頻度:每小時、每天或每周存取次數及每次存取的數據量等信息
- 存取方式:批處理/ 聯機處理;檢索/ 更新;順序檢索/隨機檢索
- 輸入的數據流:數據來源
- 出的數據流:數據去向
- 處理過程:處理過程的具體處理邏輯一般用判定表或判定樹來描述。數據字典中只需要描述處理過程的說明性信息
- 處理過程描述={處理過程名,說明,輸入:{數據流},輸出:{數據流},處理:{簡要說明}}
- 說明: -- 說白了就是我要對該數據做什麼
- 說明該處理過程的功能及處理要求 -- 如該處理要達到什麼目的,如查詢成績最高的學生
- 功能:該處理過程用來做什麼
- 處理要求:處理頻度要求(如多次時間執行一次),如單位時間里處理多少事務,多少數據量、響應時間要求等
- 這些處理要求是後面物理設計的輸入及性能評價的標準
- 需求分析小結:
- 需求收集和分析作為資料庫設計的第一階段是十分重要的
- 第一階段收集的基礎數據(用數據字典來表達)是下一步進行概念設計的基礎
- 強調兩點:
- 設計人員應充分考慮到可能的擴充和改變,使設計易於更改、系統易於擴充
- 必須強調用戶的參與
7.3 概念結構設計(E-R):
- 什麼是概念結構設計?將需求分析得到的用戶需求抽象為信息結構(即概念模型)的過程就是概念結構設計
7.3.1 概念模型:
- 什麼是概念模式?將需求分析得到的用戶需求抽象為信息結構(即概念模型)
-
概念模型的主要特點:
(1)能真實、充分地反映現實世界,包括事物和事物之間的聯繫,是現實世界的一個真實模型
(2)易於理解,可以用它和不熟悉電腦的用戶交換意見
(3)易於更改,當應用環境和應用要求改變時容易對概念模型修改和擴充
(4)易於向關係、網狀、層次等各種數據模型轉換
7.3.2 E-R模型:
- 描述現實世界的概念模型的工具:E-R 模型
- 實體是E-R圖的核心,做E-R圖的時要先找實體,實體包括實體的名稱,實體的屬性,在找另外一個實體,在找實體與實體的聯繫
- 什麼是實體?在現實世界中客觀存在並可相互區別的事物,如一個人,商店等
- 實體之間的聯繫: 兩個實體型之間的聯繫
- 一對一聯繫(1:1)、一對多聯繫(1:n)、多對多聯繫(m:n)
-
兩個以上的實體型之間的聯繫:
- 多個以上的實體型之間也存在著一對一、一對多、多對多聯繫
-
單個實體型內的聯繫:
-
同一個實體集內的各實體之間也可以存在一對一、一對多、多對多聯繫
-
-
- 聯繫的度:參與聯繫的實體型的數目
- 兩個實體型之間的聯繫度為 2,也稱為二元聯繫
- 三個實體型之間的聯繫度為 3,稱為三元聯繫
- N個實體型之間的聯繫度為 N,也稱為 N 元聯繫
- E-R 圖:
- E-R 圖提供了表示實體型、屬性和聯繫的方法:
- 實體型:用矩形表示,矩形框內寫明實體名
- 屬性:用橢圓形表示,並用無向邊將其與相應的實體型連接起來
- 聯繫:用菱形表示,菱形框內寫明聯繫名,並用無向邊分別與有關實體型連接起來,同時在無向邊旁標上聯繫的類型(1:1、1:n 或 m:n)
- E-R 圖提供了表示實體型、屬性和聯繫的方法:
- 例子:
- 某個工廠物資管理的概念模型。物資管理涉及的實體有:
- 倉庫:屬性有倉庫號、面積、電話號碼
- 零件:屬性有零件號、名稱、規格、單價、描述
- 供應商:屬性有供應商號、姓名、地址、電話號碼、賬號
- 項目:屬性有項目號、預算、開工日期
- 職工:屬性有職工號、姓名、年齡、職稱
- 這些實體之間的聯繫如下:
- 一個倉庫可以存放多種零件,一種零件可以存放在多個倉庫中,因此倉庫和零件具有多對多的聯繫。用庫存量來表示某種零件在某個倉庫中的數量
- 一個倉庫有多個職工當倉庫保管員,一個職工只能在一個倉庫工作,因此倉庫和職工之間是一對多的聯繫
- 職工之間具有領導與被領導關係,即倉庫主任領導若幹保管員,因此職工實體型中具有一對多的聯繫
- 供應商、項目和零件三者之間具有多對多的聯繫,即一個供應商可以供給若幹項目多種零件,每個項目可以使用不同供應商供應的零件,每種零件可由不同供應商供給
-
- 某個工廠物資管理的概念模型。物資管理涉及的實體有: