數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)定義
數(shù)據(jù)庫(kù)設(shè)計(jì) 是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造(設(shè)計(jì))優(yōu)化的數(shù)據(jù)庫(kù)邏輯模式和物理結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效的存儲(chǔ)和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求。-
數(shù)據(jù)庫(kù)設(shè)計(jì)的特點(diǎn)
數(shù)據(jù)庫(kù)建設(shè)的基本規(guī)律
三分技術(shù),七分管理,十二分基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù))設(shè)計(jì)和行為(處理)設(shè)計(jì)相結(jié)合
- 數(shù)據(jù)庫(kù)設(shè)計(jì)方法
- 新奧爾良(New Orleans) 方法
屬于規(guī)范設(shè)計(jì)法,思想:過(guò)程迭代逐步求精 - 基于 E-R 模型的數(shù)據(jù)庫(kù)設(shè)計(jì)方法(最常用的方法)
- 3NF(第三范式)設(shè)計(jì)方法
- ODL(Object Definition Language) 面向?qū)ο髷?shù)據(jù)庫(kù)設(shè)計(jì)方法
- 新奧爾良(New Orleans) 方法
- 數(shù)據(jù)庫(kù)設(shè)計(jì)基本步驟
- 需求分析
- 概念結(jié)構(gòu)設(shè)計(jì)
- 邏輯結(jié)構(gòu)設(shè)計(jì)
- 物理結(jié)構(gòu)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)實(shí)施
- 數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)
需求分析的方法
調(diào)查用戶需求的具體步驟:
- 調(diào)查組織機(jī)構(gòu)情況,包括了解該組織的部門組成情況,各部門的職責(zé)等,為分析信息流程做準(zhǔn)備
- 調(diào)查各部門的業(yè)務(wù)活動(dòng)情況,包括了解各個(gè)部門輸入和使用什么數(shù)據(jù),如何加工處理這些數(shù)據(jù),輸出什么信息,輸出到什么部門,輸出結(jié)果的格式是什么。這是調(diào)查的重點(diǎn)
- 再熟悉了業(yè)務(wù)活動(dòng)基礎(chǔ)上,協(xié)助用戶明確對(duì)新系統(tǒng)的各種要求,包括信息要求,處理要求,安全性與完整性要求
- 確定新系統(tǒng)的邊界,對(duì)前面調(diào)查的結(jié)果進(jìn)行初步分析,確定哪些功能由計(jì)算機(jī)完成或?qū)?lái)準(zhǔn)備讓計(jì)算機(jī)完成,哪些活動(dòng)由人工完成,由計(jì)算機(jī)完成的功能就是新系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能。
常用的調(diào)查方法:
- 跟班作業(yè),通過(guò)親身參加業(yè)務(wù)工作來(lái)了解業(yè)務(wù)活動(dòng)情況
- 開調(diào)查會(huì)。通過(guò)與用戶座談來(lái)了解業(yè)務(wù)活動(dòng)情況及用戶需求
- 請(qǐng)專人調(diào)查
- 詢問(wèn),對(duì)某些調(diào)查中的問(wèn)題,可以找專人詢問(wèn)
- 設(shè)計(jì)調(diào)查表請(qǐng)用戶填寫。如果調(diào)查表設(shè)計(jì)的合理,這種方法是很有效的
- 查閱記錄,查閱與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄
數(shù)據(jù)字典
數(shù)據(jù)字典:系統(tǒng)中各類數(shù)據(jù)描述的集合。進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要成果
- 數(shù)據(jù)項(xiàng)
不可分的數(shù)據(jù)單位
數(shù)據(jù)項(xiàng)描述 = |數(shù)據(jù)項(xiàng)名,數(shù)據(jù)項(xiàng)含義說(shuō)明,別名,數(shù)據(jù)類型,長(zhǎng)度,取值范圍,取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系,數(shù)據(jù)項(xiàng)之間的聯(lián)系|
數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)反應(yīng)了數(shù)據(jù)之間的組合關(guān)系,一個(gè)數(shù)據(jù)結(jié)構(gòu)可以由若干個(gè)數(shù)據(jù)項(xiàng)組成,也可以由若干個(gè)數(shù)據(jù)結(jié)構(gòu)組成,或由若干個(gè)數(shù)據(jù)結(jié)構(gòu)混合組成,對(duì)數(shù)據(jù)結(jié)構(gòu)的描述通常包含以下內(nèi)容:
數(shù)據(jù)結(jié)構(gòu)描述 = |數(shù)據(jù)結(jié)構(gòu)名,含義說(shuō)明,組成:|數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)||數(shù)據(jù)流
數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂健?duì)數(shù)據(jù)流的描述通常包括下面的內(nèi)容
數(shù)據(jù)流描述 = |數(shù)據(jù)流名,說(shuō)明,數(shù)據(jù)流來(lái)源,數(shù)據(jù)流去向,組成:|數(shù)據(jù)結(jié)構(gòu)|,平均流量,高峰期流量|數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)描述 = |數(shù)據(jù)存儲(chǔ)名,說(shuō)明,編號(hào),輸入的數(shù)據(jù)流,輸出的數(shù)據(jù)流,責(zé)成|數(shù)據(jù)結(jié)構(gòu)|,數(shù)據(jù)量,存取頻度,存取方式|-
處理過(guò)程
處理過(guò)程描述 = |處理過(guò)程名,說(shuō)明,輸入:|數(shù)據(jù)流|,輸入:|數(shù)據(jù)流|,處理:|簡(jiǎn)要說(shuō)明||數(shù)據(jù)字典是關(guān)于數(shù)據(jù)庫(kù)中數(shù)據(jù)的描述,即元數(shù)據(jù),而不是數(shù)據(jù)本身
概念結(jié)構(gòu)設(shè)計(jì)
將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過(guò)程就是概念結(jié)構(gòu)設(shè)計(jì)
-
概念結(jié)構(gòu)
特點(diǎn)如下:- 能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求,是對(duì)現(xiàn)實(shí)世界的一個(gè)真實(shí)模型
- 易于理解,從而可以用它和不熟悉計(jì)算機(jī)的用戶交換意見,用戶的積極參與是數(shù)據(jù)庫(kù)設(shè)計(jì)成功的關(guān)鍵
- 易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求更改時(shí),容易對(duì)概念模型修改和擴(kuò)充
- 易于向關(guān)系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉(zhuǎn)換。
概念模型的工具是 E-R 模型
概念結(jié)構(gòu)設(shè)計(jì)的方法與步驟
- 自頂向下,首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化
- 自底向上,首先定義各個(gè)局部應(yīng)用的概念結(jié)構(gòu),然后將他們集成起來(lái),得到全局概念結(jié)構(gòu)。
- 逐步擴(kuò)展。首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)
- 混合策略。即將自頂下下和自底向上相結(jié)合,用自頂向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架,以它為骨架集成自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)
經(jīng)常采用的策略是自底向上的方法,即自頂向下的錦訊需求分析,然后再自底向上的設(shè)計(jì)概念結(jié)構(gòu)
需求分析--> 分 E-R 圖--> 總 E-R 圖
數(shù)據(jù)抽象與局部視圖設(shè)計(jì)
三種抽象
- 分類 (Classification)
- 聚集 (Aggregation)
- 概括 (Generalization)
E-R 圖調(diào)整:
為了簡(jiǎn)化 E-R 圖的處置,現(xiàn)實(shí)世界的事物能作為屬性對(duì)待的,盡量作為屬性對(duì)待。
屬性:
- 作為屬性,不能再具有需要描述的性質(zhì)。屬性必須是不可分割的數(shù)據(jù)項(xiàng),不能包含其他屬性
- 屬性不能與其他實(shí)體具有聯(lián)系,即 E-R 圖中所表示的聯(lián)系是實(shí)體之間的聯(lián)系
根據(jù)需求分析結(jié)果 畫出第一層數(shù)據(jù)流圖,第二層數(shù)據(jù)流圖等
分別設(shè)計(jì)它們的 分 E-R 圖 再匯總成 局部應(yīng)用的 分 E-R 圖
視圖的集成
將所有的分 E-R 圖綜合成一個(gè)系統(tǒng)的總 E-R 圖。
-
兩種集成方式
- 多個(gè)分 E-R 圖一次集成
- 逐步集成,用累加的方式一次集成兩個(gè)分 E-R 圖
-
集成過(guò)程
- 合并,解決各分 E-R 圖之間的沖突,將各分 E-R 圖合并起來(lái)生成初步 E-R 圖
- 修改和重構(gòu)。消除不必要的冗余,生成基本 E-R 圖
-
合并分 E-R 圖,生成初步 E-R 圖
- 屬性沖突
屬性域沖突,即屬性值得類型、取值范圍或取值集合不同、例如零件號(hào),有的部門把它定義為整數(shù),有的部門把它定義為字符型。不同的部門對(duì)零件號(hào)和編碼也不同。又如年齡,某些部門以出生年月日期形式表示職工的年齡,而另一些部門用整數(shù)表示職工的年齡。
屬性取值單位沖突,例如,零件的重量有的以公斤為單位,有的以斤為單位,有的以克為單位。
屬性沖突需要各部門討論協(xié)商,解決起來(lái)并非易事
- 命名沖突
同名異議,不同意義的對(duì)象在不同的局部應(yīng)用中具有相同的名字
異名同義(一義多名),即同一意義的對(duì)象在不同的局部應(yīng)用中具有不同的名字。如對(duì)科研項(xiàng)目,財(cái)務(wù)科稱為項(xiàng)目,科研處稱為課題,生產(chǎn)管理處稱為工程
處理命名沖突通常也像處理屬性沖突一樣,通過(guò)討論,協(xié)商等行政手段加以解決
- 結(jié)構(gòu)沖突
同一對(duì)象在不同應(yīng)用中具有不同的抽象,例如,職工在某一局部應(yīng)用中被當(dāng)做實(shí)體,而在另一局部應(yīng)用中則被當(dāng)做屬性
解決辦法,通常是把屬性變換為實(shí)體 或 把實(shí)體變換為屬性,使同一對(duì)象具有相同的抽象。
- 屬性沖突
同一實(shí)體在不同分 E-R 圖中所包含的屬性個(gè)數(shù)和屬性排列次序不完全相同。
解決辦法,使該實(shí)體的屬性取各分 E-R 圖中屬性的并集,再適當(dāng)調(diào)整屬性的次序
- 消除不必要的冗余,設(shè)計(jì)基本 E-R 圖
邏輯結(jié)構(gòu)設(shè)計(jì)
邏輯結(jié)構(gòu)設(shè)計(jì)步驟
- 將概念結(jié)構(gòu)轉(zhuǎn)換為一般關(guān)系、網(wǎng)狀、層次模型
- 將轉(zhuǎn)換來(lái)的關(guān)系、網(wǎng)狀、層次模型向指定
DBMS 支持下的數(shù)據(jù)模型轉(zhuǎn)換。
對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化
E-R 圖向關(guān)系模型的轉(zhuǎn)換
一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式,實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼
對(duì)于實(shí)體型間的聯(lián)系則有一下不同的情況:
一個(gè) 1:1 聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。如果與某一端實(shí)體對(duì)應(yīng)的關(guān)系模式合并,則需要在該關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼和聯(lián)系本身的屬性。
一個(gè) 1:n 聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與 n 端 對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)化為關(guān)系的屬性,而關(guān)系的碼為 n 端實(shí)體的碼
一個(gè) m:n 聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,各實(shí)體的碼組成關(guān)系的碼或關(guān)系碼的一部分
3 個(gè)或 3 個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系模式。與該多元聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,各實(shí)體的碼組成關(guān)系的碼或關(guān)系嗎的一部分
具有相同碼的關(guān)系模式可以合并
-
數(shù)據(jù)模型的優(yōu)化
- 確定數(shù)據(jù)依賴,按需求分析階段所得到的語(yǔ)義,分別寫出每個(gè)關(guān)系模式內(nèi)部各屬性之間的數(shù)據(jù)依賴以及不同關(guān)系模式屬性之間的數(shù)據(jù)依賴。
2.對(duì)于各個(gè)關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余的聯(lián)系
按照數(shù)據(jù)依賴的理論對(duì)關(guān)系模式逐一進(jìn)行分析,考察是否存在部分函數(shù)依賴、傳遞函數(shù)依賴、多值依賴等,確定各關(guān)系模式分別屬于第幾范式
按照需求分析階段得到的處理要求,分析對(duì)于這樣的應(yīng)用環(huán)境這些模式是否合適,確定是否要對(duì)某些模式進(jìn)行合并或分解
-
對(duì)關(guān)系模式進(jìn)行必要的分解,提高數(shù)據(jù)操作的效率和存儲(chǔ)空間的利用率。常用的兩種分解方法是水平分解和垂直分解。
水平分解是把(基本)關(guān)系的元祖分成若干子集合,定義每個(gè)子集合為一個(gè)子關(guān)系,以提高系統(tǒng)的效率。根據(jù)“80/20”原則,一個(gè)大關(guān)系中,經(jīng)常被使用的數(shù)據(jù)只是關(guān)系的一部分,約20%,可以把經(jīng)常使用的數(shù)據(jù)分解出來(lái),形成一個(gè)子關(guān)心。如果關(guān)系 R 上 具有 n 個(gè)事物,而且多數(shù)事物存取的數(shù)據(jù)不想交,則 R 可以分解為少于或等于 n 個(gè)子關(guān)系, 使每個(gè)事物存取的數(shù)據(jù)對(duì)應(yīng)一個(gè)關(guān)系
垂直分解就是把關(guān)系模式 R 的屬性分解為若干子集合,形成若干子關(guān)系模式。垂直分解的原則是,經(jīng)常在一起使用的屬性從 R 中 分解出來(lái)形成一個(gè)子關(guān)系模式。垂直分解可以提高某些事物的效率,但也可以使另一些事務(wù)不得不執(zhí)行鏈接操作,從而降低了效率。因此是否進(jìn)行垂直分解取決于分解后 R 上的所有事務(wù)的總效率是否得到了提高。垂直分解需要確保無(wú)損鏈接性和保持函數(shù)依賴,即保證分解后的關(guān)系具有無(wú)損連接性和保持函數(shù)依賴性。
-
設(shè)計(jì)用戶子模式 (view 視圖模式)
使用更符合用戶習(xí)慣的別名
可以對(duì)不同級(jí)別的用戶定義不同的 View,以保證系統(tǒng)的安全性
簡(jiǎn)化用戶對(duì)系統(tǒng)的使用
數(shù)據(jù)庫(kù)的物理設(shè)計(jì)
數(shù)據(jù)庫(kù)物理設(shè)計(jì)通常分為兩步:
確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫(kù)中主要指存取方法和存儲(chǔ)結(jié)構(gòu)
對(duì)物理結(jié)構(gòu)進(jìn)行評(píng)價(jià),評(píng)價(jià)的終點(diǎn)是時(shí)間和空間效率
-
數(shù)據(jù)庫(kù)物理設(shè)計(jì)的內(nèi)容和方法
查詢:- 查詢的關(guān)系
- 查詢條件所設(shè)計(jì)的屬性
- 鏈接條件所涉及的屬性
- 查詢的投影屬性
更新:
- 被更新的關(guān)系
- 每個(gè)關(guān)系上的更新操作條件所涉及的屬性
- 修改操作要改變的屬性值
內(nèi)容:
為關(guān)系模式選擇存取方法
設(shè)計(jì)關(guān)系、索引等數(shù)據(jù)庫(kù)文件的物理存儲(chǔ)結(jié)構(gòu)
關(guān)系模式存取方法選擇
存取方法是快讀存取數(shù)據(jù)庫(kù)中的數(shù)據(jù),常用的有三類-
索引存取方法
根據(jù)應(yīng)用要求確定對(duì)關(guān)系的哪些屬性列建立索引、哪些屬性列建立組合索引、哪些索引要設(shè)計(jì)為唯一索引等- 如果一個(gè)(或一組)屬性經(jīng)常在查詢條件中出現(xiàn),則考慮在這個(gè)(或這組)屬性上建立索引(或組合索引)
- 如果一個(gè)屬性經(jīng)常違最大值和最小值等聚集函數(shù)的參數(shù),則考慮在這個(gè)屬性上建立索引。
- 如果一個(gè)(或一組)屬性經(jīng)常在鏈接操作的鏈接條件中出現(xiàn),則考慮在這個(gè)(或這組)屬性上建立索引
-
聚簇存取方法
為了提高某個(gè)屬性(或?qū)傩越M)的查詢素的,把這個(gè)或這些屬性(稱為聚簇碼)上具有相同值得元祖集中存放在連續(xù)的物理塊稱為聚簇- 經(jīng)常在一起進(jìn)行連接操作的關(guān)系可以建立聚簇
- 如果一個(gè)關(guān)系的一組屬性經(jīng)常出現(xiàn)在相等比較條件中,則該單個(gè)關(guān)系可建立聚簇
- 如果一個(gè)關(guān)系的一個(gè)(或一組)屬性上的值重復(fù)率很高,則此單個(gè)關(guān)系可建立聚簇。
- HASH 存取方法的選擇
如果一個(gè)關(guān)系的屬性主要出現(xiàn)在等值鏈接條件中或主要出現(xiàn)在相等比較選擇條件中,而且滿足下列兩個(gè)條件之一,則此關(guān)系可以選擇 HASH 存取方法。- 如果一個(gè)關(guān)系的大小可以預(yù)知,而且不變
- 如果關(guān)系的大小動(dòng)態(tài)改變,而且數(shù)據(jù)庫(kù)管理系統(tǒng)提供了動(dòng)態(tài) HASH 存取方法
-
確定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)
確定數(shù)據(jù)庫(kù)物理結(jié)構(gòu)主要指確定數(shù)據(jù)的存放位置和存儲(chǔ)結(jié)構(gòu),包括:確定關(guān)系、索引、聚簇、日志、備份等存儲(chǔ)安排和存儲(chǔ)結(jié)構(gòu),確定系統(tǒng)配置等- 確定數(shù)量的存放位置
- 確定系統(tǒng)配置
評(píng)價(jià)物理結(jié)構(gòu)
對(duì)時(shí)間效率、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡。
數(shù)據(jù)庫(kù)的實(shí)施和維護(hù)
數(shù)據(jù)的載入和應(yīng)用程序的調(diào)試
先載入少量數(shù)據(jù)調(diào)試,運(yùn)行合格后,再大批輸入數(shù)據(jù),逐步增加數(shù)據(jù)量。。。數(shù)據(jù)庫(kù)調(diào)試試運(yùn)行
首先調(diào)試運(yùn)行DBMS 的恢復(fù)功能。-
數(shù)據(jù)庫(kù)的運(yùn)行和維護(hù)
下面都是 DBA 的職責(zé)- 數(shù)據(jù)看的轉(zhuǎn)儲(chǔ) 和 恢復(fù)
- 數(shù)據(jù)庫(kù)的安全性、完全性控制
- 數(shù)據(jù)庫(kù)性能的監(jiān)督、分析和改造
- 數(shù)據(jù)庫(kù)的重組織與重構(gòu)造