數(shù)據(jù)庫原理與應(yīng)用 課件 孟凡榮 第5、6章 數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)庫保護(hù)_第1頁
數(shù)據(jù)庫原理與應(yīng)用 課件 孟凡榮 第5、6章 數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)庫保護(hù)_第2頁
數(shù)據(jù)庫原理與應(yīng)用 課件 孟凡榮 第5、6章 數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)庫保護(hù)_第3頁
數(shù)據(jù)庫原理與應(yīng)用 課件 孟凡榮 第5、6章 數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)庫保護(hù)_第4頁
數(shù)據(jù)庫原理與應(yīng)用 課件 孟凡榮 第5、6章 數(shù)據(jù)庫設(shè)計(jì)、數(shù)據(jù)庫保護(hù)_第5頁
已閱讀5頁,還剩187頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章數(shù)據(jù)庫設(shè)計(jì)1數(shù)據(jù)庫原理TheTheoryofDatabaseSystem需求分析概念結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫的物理設(shè)計(jì)數(shù)據(jù)庫的實(shí)施數(shù)據(jù)庫運(yùn)行和維護(hù)主要內(nèi)容2

數(shù)據(jù)庫設(shè)計(jì)

對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用需求。5.1數(shù)據(jù)庫設(shè)計(jì)概述3

信息需求:數(shù)據(jù)庫內(nèi)容及結(jié)構(gòu)的要求,靜態(tài)

處理需求:數(shù)據(jù)庫要進(jìn)行的數(shù)據(jù)處理,動態(tài)1、計(jì)算機(jī)科學(xué)基礎(chǔ)知識和程序設(shè)計(jì)技術(shù)2、DB基本知識和DB設(shè)計(jì)技術(shù)3、軟件工程的原理和方法4、應(yīng)用領(lǐng)域的知識數(shù)據(jù)庫設(shè)計(jì)人員應(yīng)具備的技術(shù)和知識45.1.2數(shù)據(jù)庫設(shè)計(jì)的內(nèi)容5現(xiàn)實(shí)世界數(shù)據(jù)分析功能分析概念模型設(shè)計(jì)邏輯數(shù)據(jù)庫設(shè)計(jì)物理數(shù)據(jù)庫設(shè)計(jì)子模式設(shè)計(jì)建立數(shù)據(jù)功能模型事務(wù)設(shè)計(jì)程序說明應(yīng)用程序設(shè)計(jì)程序編碼調(diào)試結(jié)構(gòu)設(shè)計(jì)行為設(shè)計(jì)三分技術(shù)、七分管理、十二分基礎(chǔ)數(shù)據(jù)直觀設(shè)計(jì)法規(guī)范設(shè)計(jì)法計(jì)算機(jī)輔助設(shè)計(jì)法自動化設(shè)計(jì)法。5.1.3、數(shù)據(jù)庫的設(shè)計(jì)方法基于實(shí)體聯(lián)系的設(shè)計(jì)方法、基于3NF的數(shù)據(jù)庫設(shè)計(jì)方法、基于視圖概念的數(shù)據(jù)庫設(shè)計(jì)方法等。

6需求分析:是整個設(shè)計(jì)過程的基礎(chǔ)。

(1)信息需求分析(2)操作需求分析概念結(jié)構(gòu)設(shè)計(jì):將需求分析的結(jié)果用一種工具進(jìn)行形式化的定義和描述,是整個DB設(shè)計(jì)的關(guān)鍵。如:E-R圖邏輯結(jié)構(gòu)設(shè)計(jì):概念模型→數(shù)據(jù)模型根據(jù)需求分析和概念設(shè)計(jì)的結(jié)果,選擇合適的數(shù)據(jù)模型,并選用某一設(shè)計(jì)方法構(gòu)造一數(shù)據(jù)庫模式。5.1.4、數(shù)據(jù)庫設(shè)計(jì)的基本步驟74、物理設(shè)計(jì):選擇合適的物理結(jié)構(gòu)。

包括存儲結(jié)構(gòu)和存取方法5、實(shí)施階段:根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)建立數(shù)據(jù)庫;編制和調(diào)試應(yīng)用程序;試運(yùn)行;6、DB運(yùn)行和維護(hù)階段

根據(jù)運(yùn)行記錄對DB進(jìn)行評價根據(jù)評價對DB調(diào)整和修改85.1.4、數(shù)據(jù)庫設(shè)計(jì)的基本步驟需求分析概念結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)設(shè)計(jì)物理結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫實(shí)施運(yùn)行維護(hù)9數(shù)據(jù)庫設(shè)計(jì)的基本步驟需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象,充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。新系統(tǒng)必須充分考慮今后可能的擴(kuò)充和改善,不能僅僅按當(dāng)前應(yīng)用需求來設(shè)計(jì)數(shù)據(jù)庫。5.2需求分析10信息要求:DB中需存儲的數(shù)據(jù)處理要求:用戶要求的處理功能對各處理的響應(yīng)時間的要求安全性與完整性要求5.2.1、需求分析的任務(wù)11確定用戶的最終需求是非常困難的!1.調(diào)查用戶需求的具體步驟:分析用戶活動,產(chǎn)生業(yè)務(wù)流程圖。確定系統(tǒng)范圍,產(chǎn)生業(yè)務(wù)范圍圖。分析用戶活動及所設(shè)計(jì)的數(shù)據(jù),產(chǎn)生數(shù)據(jù)流圖分析系統(tǒng)數(shù)據(jù),產(chǎn)生數(shù)據(jù)字典5.2.2、需求分析的方法和過程12

跟班作業(yè)開調(diào)查會請專人介紹詢問調(diào)查表查閱記錄2、需求分析的常用方法強(qiáng)調(diào):數(shù)據(jù)的收集要盡可能詳盡,全面反映用戶需求。要考慮可能的擴(kuò)充和改變。必須強(qiáng)調(diào)用戶的參與。135.2.3、需求分析常用工具1.數(shù)據(jù)流圖(DFD)

DFD由四種基本符號組成。如下圖所示。數(shù)據(jù)加工(P)外部項(xiàng)(S)數(shù)據(jù)流(F)數(shù)據(jù)存儲(D)14F3帳簿F2明細(xì)帳F1付款單D總帳打印帳簿P2帳務(wù)處理P1S1客戶S2會計(jì)

下圖是一個簡單的DFD。它表示數(shù)據(jù)流“付款單”從外部項(xiàng)“客戶”(源點(diǎn))流出,經(jīng)加工“帳務(wù)處理”轉(zhuǎn)換成數(shù)據(jù)流“明細(xì)帳”,再經(jīng)加工“打印帳簿”轉(zhuǎn)換成數(shù)據(jù)流“帳簿”,最后流向外部項(xiàng)“會計(jì)”(終點(diǎn)),加工“打印帳簿”在進(jìn)行轉(zhuǎn)換時,從數(shù)據(jù)存儲“總帳”中讀取數(shù)據(jù)。15繪制數(shù)據(jù)流圖的過程a關(guān)聯(lián)圖….3.2圖0BQRLSMABCABCDEFG1235631NMPBL圖2b頂層圖d三層圖c二層圖繪制數(shù)據(jù)流圖過程示意圖F1617頂層數(shù)據(jù)流圖購書單缺書單教材管理系統(tǒng)教材存量表學(xué)生F1缺書登記表F3書庫保管員進(jìn)書通知領(lǐng)書單學(xué)生用書表F217無效書單0層數(shù)據(jù)流圖購書單缺書單單據(jù)審查庫存

管理12教材存量表學(xué)生F1缺書登記表F3書庫保管員進(jìn)書通知入庫信息領(lǐng)書單學(xué)生用書表F218缺書信息無效書單“單據(jù)審查”1層數(shù)據(jù)流圖購書單領(lǐng)書信息領(lǐng)書單審查開領(lǐng)書單學(xué)生1.11.2學(xué)生用書表學(xué)生教材存量表無效書單F1F219“庫存管理”1層數(shù)據(jù)流圖

按書號匯總?cè)睍?.12.3書庫保管員進(jìn)書通知入庫信息教材存量表F12.2按出版社統(tǒng)計(jì)缺書修改教材庫存F3缺書登記表缺書單20教材存量表F1缺書單缺書信息缺書信息數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的數(shù)據(jù)庫,它是對數(shù)據(jù)流程圖上各個元素作出詳細(xì)的定義和說明。2.數(shù)據(jù)字典(DD)數(shù)據(jù)字典數(shù)據(jù)項(xiàng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)流數(shù)據(jù)存儲處理過程21數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位。數(shù)據(jù)項(xiàng)的描述={數(shù)據(jù)項(xiàng)名,含義說明,別名,數(shù)據(jù)類型,長度,取值范圍,取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系,數(shù)據(jù)項(xiàng)之間的聯(lián)系}(1).數(shù)據(jù)項(xiàng)22數(shù)據(jù)項(xiàng)名:學(xué)號別名:學(xué)生編號取值:8{數(shù)字}8注釋:

*例如:20110101*數(shù)據(jù)結(jié)構(gòu)反應(yīng)了數(shù)據(jù)之間的組合關(guān)系。數(shù)據(jù)結(jié)構(gòu)描述={數(shù)據(jù)結(jié)構(gòu)名,含義說明,組成{數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)}}(2).數(shù)據(jù)結(jié)構(gòu)23數(shù)據(jù)流名:領(lǐng)書單別名:購書發(fā)票組成:(學(xué)號)+姓名+書號+單價+數(shù)量+總價數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)耐緩?。?shù)據(jù)流的描述={數(shù)據(jù)流名,說明,數(shù)據(jù)流來源,數(shù)據(jù)流去向,組成:{數(shù)據(jù)結(jié)構(gòu)},平均流量,高峰期流量}(3).數(shù)據(jù)流24數(shù)據(jù)流名:領(lǐng)書信息數(shù)據(jù)流來源:審查數(shù)據(jù)流去向:開領(lǐng)書單組成:(學(xué)號)+姓名+書號+單價+數(shù)量+總價數(shù)據(jù)量:100次/天高峰值:開學(xué)期間400次/天數(shù)據(jù)存儲是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方,也是數(shù)據(jù)流的來源和去向之一。它可以是手工文檔或手工憑單,也可以是計(jì)算機(jī)文檔。數(shù)據(jù)存儲描述={數(shù)據(jù)存儲名,說明,編號,輸入的數(shù)據(jù)流,輸出的數(shù)據(jù)流,組成{數(shù)據(jù)結(jié)構(gòu)},數(shù)據(jù)量,存取頻度,存取方式}(4)數(shù)據(jù)存儲25文件名:學(xué)生用書表輸入的數(shù)據(jù)流:學(xué)生用書申請信息輸出的數(shù)據(jù)流:學(xué)生用書信息組成:{系編號+專業(yè)和班編號+年級+{書號}}存取要求:關(guān)鍵字是專業(yè)和班編號處理過程的具體處理邏輯一般用判定表或判定樹來描述。數(shù)據(jù)字典只描述處理過程的說明性信息。數(shù)據(jù)存儲描述={數(shù)據(jù)過程名,說明,輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流},處理:{簡要說明}}(5).處理過程26加工名:開領(lǐng)書單編號:2.0加工激活條件:得到圖書采購員采購操作命令加工邏輯:2.0采購={2.1按書號匯總?cè)睍?/p>

+2.2按出版社統(tǒng)計(jì)缺書

+2.3修改教材庫存和待購量}執(zhí)行頻率:隨時27需求分析概念設(shè)計(jì)邏輯設(shè)計(jì)物理設(shè)計(jì)數(shù)據(jù)庫實(shí)施運(yùn)行維護(hù)用戶需求分析用戶環(huán)境、調(diào)查組織結(jié)構(gòu)及業(yè)務(wù)活動、確定系統(tǒng)目標(biāo)

設(shè)計(jì)概念結(jié)構(gòu)、建立局部E-R模型、建立總體E-R模型設(shè)計(jì)邏輯結(jié)構(gòu)數(shù)據(jù)模型優(yōu)化設(shè)計(jì)物理結(jié)構(gòu)性能評價和預(yù)測符合要求物理實(shí)現(xiàn)試運(yùn)行使用和維護(hù)NYNY符合要求數(shù)據(jù)庫設(shè)計(jì)過程需求分析實(shí)例學(xué)校管理信息系統(tǒng)28學(xué)校管理信息系統(tǒng)研究生院人事處學(xué)科辦學(xué)生工作處教務(wù)處科技處財(cái)務(wù)處學(xué)校組織結(jié)構(gòu)圖29教務(wù)管理系統(tǒng)學(xué)籍管理專業(yè)建設(shè)選課管理教務(wù)管理系統(tǒng)功能結(jié)構(gòu)圖30頂層數(shù)據(jù)流圖學(xué)籍管理系統(tǒng)頂層數(shù)據(jù)流圖學(xué)籍管理0學(xué)生學(xué)生卡片輔導(dǎo)員獎懲信息教務(wù)處學(xué)籍變動信息統(tǒng)計(jì)表有關(guān)部門310層數(shù)據(jù)流圖學(xué)籍管理系統(tǒng)一級細(xì)化數(shù)據(jù)流圖學(xué)籍變動管理1學(xué)籍變動信息基本信息管理2學(xué)生卡片獎懲管理3獎懲信息學(xué)籍變動表D1基本信息表D2獎勵表D3懲罰表D4統(tǒng)計(jì)查詢4打印報(bào)表53233降級1.1學(xué)籍變動信息學(xué)籍變動表D1退學(xué)1.2學(xué)籍管理系統(tǒng)二級細(xì)化數(shù)據(jù)流圖基本信息表D21層數(shù)據(jù)流圖數(shù)據(jù)字典—數(shù)據(jù)項(xiàng)數(shù)據(jù)項(xiàng)學(xué)號含義說明唯一標(biāo)識某個學(xué)生別名學(xué)生編號類型字符型長度8取值范圍00000000至99999999取值含義前兩位表示該學(xué)生所在院系,3、4位表示所在年級,5、6位表示班級、后2位按順序標(biāo)號34數(shù)據(jù)字典—數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)學(xué)生含義說明是學(xué)籍管理模塊的主體數(shù)據(jù)結(jié)構(gòu),定義了一個學(xué)生的有關(guān)信息組成學(xué)號,姓名,性別,年齡,院系,年級,專業(yè)3536數(shù)據(jù)字典—數(shù)據(jù)流數(shù)據(jù)流學(xué)籍變動信息含義說明學(xué)籍變化的相關(guān)信息數(shù)據(jù)流來源教務(wù)人員數(shù)據(jù)流去向?qū)W籍變動管理組成{{學(xué)生},變動內(nèi)容}37數(shù)據(jù)字典—數(shù)據(jù)存儲數(shù)據(jù)存儲基本信息表含義說明學(xué)生學(xué)籍基本信息流入的數(shù)據(jù)流新的學(xué)籍信息流出的數(shù)據(jù)流查詢的學(xué)籍信息組成學(xué)生學(xué)號,學(xué)生姓名,性別,入學(xué)年份、學(xué)院、宿舍存取方式順序存取存取量每年4000個新記錄數(shù)據(jù)字典—處理過程處理過程基本信息管理含義說明實(shí)現(xiàn)新生在校學(xué)籍信息的增刪改輸入數(shù)據(jù)流學(xué)生卡片輸出數(shù)據(jù)流學(xué)生在?;拘畔⑻幚硇律鷪?bào)到后,根據(jù)錄取專業(yè),為所有新生錄入宿舍,院系,專業(yè),班級等在校信息385.3概念結(jié)構(gòu)設(shè)計(jì)現(xiàn)實(shí)世界信息世界39不同DBMS基于不同的數(shù)據(jù)模型,而現(xiàn)實(shí)應(yīng)用環(huán)境復(fù)雜多變,將現(xiàn)實(shí)世界中的事物直接轉(zhuǎn)換為機(jī)器中的對象,非常不方便。概念模型是現(xiàn)實(shí)世界到機(jī)器世界的一個中間層次,使用接近計(jì)算機(jī)存儲的方式表示數(shù)據(jù),同時又不涉及具體的DBMS。

5.3.1、概念結(jié)構(gòu)設(shè)計(jì)的定義概念模型的描述工具通常是E_R模型,該模型不依賴于具體的硬件環(huán)境和DBMS。405.3.2、概念結(jié)構(gòu)設(shè)計(jì)方法1、自頂向下(集中模式設(shè)計(jì)):先定義全局,然后再逐步細(xì)化。2、自底向上(視圖集成法):先定義局部,然后再集成起來。3、混合策略:自底向上和自頂向下相結(jié)合。4141需求全局概念模式

需求分析(自頂向下)

概念結(jié)構(gòu)設(shè)計(jì)(自底向上)424、逐步擴(kuò)張(由內(nèi)向外法):先定義核心,然后再逐步向外擴(kuò)充。核心需求需求核心概念結(jié)構(gòu)全局概念結(jié)構(gòu)選擇局部應(yīng)用。一般而言,中層數(shù)據(jù)流圖能較好反應(yīng)系統(tǒng)各局部應(yīng)用的子系統(tǒng)組成,因此通常以中層數(shù)據(jù)流圖作為設(shè)計(jì)分E-R圖的依據(jù)。從數(shù)據(jù)字典中抽取數(shù)據(jù)。依據(jù)數(shù)據(jù)流圖,標(biāo)定局部應(yīng)用中的實(shí)體、實(shí)體屬性、標(biāo)識實(shí)體的碼,確定聯(lián)系及類型。5.3.3、局部(分)E_R圖設(shè)計(jì)4344(1)標(biāo)定局部應(yīng)用中的實(shí)體

實(shí)體ismemberof(2)標(biāo)定實(shí)體的屬性、標(biāo)識實(shí)體的碼

實(shí)體ispartof(3)確定實(shí)體之間的聯(lián)系45學(xué)校管理信息系統(tǒng)應(yīng)用舉例教務(wù)管理系統(tǒng)學(xué)籍管理專業(yè)建設(shè)選課管理教務(wù)管理系統(tǒng)功能結(jié)構(gòu)圖學(xué)籍管理0學(xué)生學(xué)生卡片輔導(dǎo)員獎懲信息教務(wù)處學(xué)籍變動信息統(tǒng)計(jì)表有關(guān)部門學(xué)籍管理頂層數(shù)據(jù)流圖局部視圖設(shè)計(jì)在“學(xué)籍管理模塊”中,涉及到的實(shí)體有哪些?學(xué)生,班級,學(xué)院,專業(yè),宿舍,班主任請分析各個實(shí)體的屬性有哪些?請分析實(shí)體之間的聯(lián)系及類型。46局部應(yīng)用中的實(shí)體及屬性學(xué)生:{學(xué)號,姓名,性別,年齡,出生日期,院系,專業(yè),班級,宿舍}班級:{班級編號,班級備注信息}宿舍:{宿舍編號,地址,電話}學(xué)院:{學(xué)院編號,學(xué)院名稱,院長,辦公電話}專業(yè):{專業(yè)編號,專業(yè)名稱}

班主任:{職工號,姓名,性別}教師:{職工號,姓名,性別,職稱}47實(shí)體之間的聯(lián)系及類型學(xué)生班級所在n1學(xué)生學(xué)院屬于n1學(xué)生專業(yè)學(xué)習(xí)n1學(xué)生宿舍住宿n1學(xué)籍管理子系統(tǒng)分E_R圖4849班主任班級管理11教師學(xué)生指導(dǎo)nm專業(yè)學(xué)院設(shè)置n1班級專業(yè)包含n1學(xué)籍管理子系統(tǒng)分E_R圖5.3.4集成全局視圖50視圖集成要解決的問題(1)確定模式之間的對應(yīng)和沖突

屬性沖突(屬性域沖突取值單位沖突)

命名沖突(同名異議異名同義)

結(jié)構(gòu)沖突(2)修改視圖使得相互一致(3)合并視圖(4)重構(gòu)(可選)5.3.4集成全局視圖需求分析DFDDD數(shù)據(jù)抽象、局部視圖的設(shè)計(jì)分E_R圖視圖集成總E_R圖用戶是否滿意N邏輯結(jié)構(gòu)設(shè)計(jì)51Y52應(yīng)用舉例——消除沖突

學(xué)生:{學(xué)號,姓名,性別,年齡,出生日期,院系,專業(yè),班級,宿舍}班級:{班級編號,班級信息備注}宿舍:{宿舍編號,地址,電話}學(xué)院:{學(xué)院編號,學(xué)院名稱,院長,辦公電話}專業(yè):{專業(yè)編號,專業(yè)名稱}

班主任:{職工號,姓名,性別}命名沖突學(xué)籍管理子系統(tǒng)結(jié)構(gòu)沖突53應(yīng)用舉例——消除沖突教師:{職工號,姓名,性別,職稱}班主任:{職工號,姓名,性別}教師:{職工號,教師姓名,性別,職稱}統(tǒng)一結(jié)構(gòu)沖突54消除冗余屬性和聯(lián)系學(xué)生:{學(xué)號,姓名,性別,年齡,出生日期,學(xué)院編號,專業(yè)編號,班級編號,宿舍編號}出生日期年齡學(xué)生:{學(xué)號,姓名,性別,出生日期,學(xué)院編號,專業(yè)編號,班級編號,宿舍編號}班級編號專業(yè)編號學(xué)生:{學(xué)號,姓名,性別,出生日期,學(xué)院編號,班級編號,宿舍編號}視圖集成學(xué)籍管理子系統(tǒng)總E-R圖55班級所在n學(xué)生1屬于學(xué)院1n1宿舍住宿n專業(yè)包含1n設(shè)置1n教師管理11指導(dǎo)mn學(xué)習(xí)1n數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)是將概念結(jié)構(gòu)轉(zhuǎn)換成特定DBMS所支持的數(shù)據(jù)模型,需要考慮具體的DBMS的性能、具體的數(shù)據(jù)模型特點(diǎn)。5.4

邏輯結(jié)構(gòu)設(shè)計(jì)E_R圖轉(zhuǎn)換為關(guān)系模式,實(shí)質(zhì)就是將實(shí)體和聯(lián)系轉(zhuǎn)換為關(guān)系模式。56將概念模型轉(zhuǎn)化為等價的關(guān)系模式按需要對關(guān)系模式進(jìn)行規(guī)范化對規(guī)范化后的模式進(jìn)行評價

根據(jù)局部應(yīng)用的需要,設(shè)計(jì)用戶外模式5.4.1

邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)和步驟57學(xué)籍管理子系統(tǒng)總E-R圖58班級所在n學(xué)生1屬于學(xué)院1n1宿舍住宿n專業(yè)包含1n設(shè)置1n教師管理11指導(dǎo)mn學(xué)習(xí)1n

實(shí)體:一個實(shí)體轉(zhuǎn)換為一個關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。5.4.2

E_R圖向關(guān)系模型轉(zhuǎn)換的原則學(xué)生學(xué)生(學(xué)號,姓名,出生日期,學(xué)院編號,班級編號,宿舍編號)學(xué)號,59班級學(xué)院專業(yè)宿舍教師類型為1:1聯(lián)系的轉(zhuǎn)換規(guī)則類型為1:n聯(lián)系的轉(zhuǎn)換規(guī)則類型為n:m聯(lián)系的轉(zhuǎn)換規(guī)則5.4.2

E_R圖向關(guān)系模型轉(zhuǎn)換的原則60615.4.2

E_R圖向關(guān)系模型轉(zhuǎn)換的原則

聯(lián)系類型為1:1可以將聯(lián)系轉(zhuǎn)換為一個新的關(guān)系。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性構(gòu)成新關(guān)系的屬性,每個實(shí)體的碼均是該關(guān)系的候選碼。管理(教師號,班級號)管理(教師號,班級號)管理(教師號,班級號)班級教師管理11625.4.2

E_R圖向關(guān)系模型轉(zhuǎn)換的原則聯(lián)系類型為1:1可以與任意一端對應(yīng)的關(guān)系模式合并。在該關(guān)系模式中加入另一關(guān)系的碼和聯(lián)系的屬性,該關(guān)系的碼不變。班級教師管理11教師:{職工號,教師姓名,性別,職稱},班級號}班級:{班級編號,班級信息備注},職工號}635.4.2

E_R圖向關(guān)系模型轉(zhuǎn)換的原則

聯(lián)系類型為1:n可以將聯(lián)系轉(zhuǎn)換為一個新的關(guān)系。將聯(lián)系轉(zhuǎn)換為一個新的關(guān)系模式:與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性構(gòu)成新關(guān)系的屬性,該關(guān)系的碼是n端關(guān)系模式的碼。學(xué)生班級所在n1所在(學(xué)號,班級號)645.4.2

E_R圖向關(guān)系模型轉(zhuǎn)換的原則

聯(lián)系類型為1:n可以與n端對應(yīng)的關(guān)系模式合并。在n端關(guān)系模式中加入1端關(guān)系模式的碼和聯(lián)系的屬性,關(guān)系的碼仍為n端關(guān)系的碼。學(xué)生班級所在n1學(xué)生(學(xué)號,姓名,性別,出生日期,班級號)

聯(lián)系類型為n:m只能將聯(lián)系轉(zhuǎn)換為一個新的關(guān)系。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性構(gòu)成新關(guān)系的屬性,該關(guān)系的碼是兩端關(guān)系模式碼的組合。5.4.2

E_R圖向關(guān)系模型轉(zhuǎn)換的原則65指導(dǎo)(學(xué)號,教師號,獲獎內(nèi)容)教師學(xué)生指導(dǎo)nm獲獎內(nèi)容學(xué)籍管理子系統(tǒng)的關(guān)系模式

學(xué)生:{學(xué)號,姓名,性別,出生日期,院系編號,班級編號,宿舍編號}班級:{班級編號,班級信息備注}宿舍:{宿舍編號,地址,電話}學(xué)院:{學(xué)院編號,學(xué)院名稱,院長,辦公電話}專業(yè):{專業(yè)編號,專業(yè)名稱}教師:{職工號,教師姓名,性別,職稱}6667

管理:(教師編號,班級編號)

所在:(學(xué)號,班級編號)

住宿:(學(xué)號,宿舍編號)屬于:(學(xué)號,學(xué)院編號)

學(xué)習(xí):(學(xué)號,專業(yè)編號)

包含:(班級編號,專業(yè)編號)設(shè)置:(專業(yè)編號,學(xué)院編號)

指導(dǎo):(教師編號,學(xué)號,獲獎內(nèi)容)1:1和1:n關(guān)系采用生成一個新關(guān)系的策略681:1和1:n關(guān)系采用生成一個新關(guān)系的策略消除冗余學(xué)生:(學(xué)號,姓名,性別,出生日期,學(xué)院編號,班級編號,宿舍編號}學(xué)生:(學(xué)號,姓名,性別,出生日期,學(xué)院編號,班級編號)學(xué)習(xí):(學(xué)號,專業(yè)編號)

包含:(班級編號,專業(yè)編號)所在:(學(xué)號,班級編號)69學(xué)生:(學(xué)號,姓名,性別,出生日期,學(xué)院編號,班級編號)班級:(班級編號,班級信息備注)宿舍:(宿舍編號,地址,電話)學(xué)院:(學(xué)院編號,學(xué)院名稱,院長,辦公電話)專業(yè):(專業(yè)編號,專業(yè)名稱)

教師:(教師編號,教師姓名,性別,職稱)

所在:(學(xué)號,班級編號)

住宿:(學(xué)號,宿舍編號)屬于:(學(xué)號,學(xué)院編號)

管理:(教師編號,班級編號)包含:(班級編號,專業(yè)編號)設(shè)置:(專業(yè)編號,學(xué)院編號)

指導(dǎo):(教師編號,學(xué)號,獲獎內(nèi)容)70

學(xué)生:(學(xué)號,姓名,性別,出生日期,學(xué)院編號,班級編號,宿舍編號)班級:(班級編號,班級信息備注,教師編號,專業(yè)編號)宿舍:(宿舍編號,地址,電話)學(xué)院:(學(xué)院編號,學(xué)院名稱,院長,辦公電話)專業(yè):(專業(yè)編號,專業(yè)名稱,學(xué)院編號)

教師:(教師編號,教師姓名,性別,職稱)

指導(dǎo):(教師編號,學(xué)號,獲獎內(nèi)容)1:1和1:n關(guān)系采用合并的策略確定數(shù)據(jù)依賴對于各關(guān)系模式間的數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余的聯(lián)系。規(guī)范化5.4.3

邏輯結(jié)構(gòu)的優(yōu)化7172

學(xué)生:(學(xué)號,姓名,性別,出生日期,學(xué)院編號,班級編號,宿舍編號)班級:(班級編號,班級信息備注,教師編號,專業(yè)編號)宿舍:(宿舍編號,地址,電話)學(xué)院:(學(xué)院編號,學(xué)院名稱,院長,辦公電話)專業(yè):(專業(yè)編號,專業(yè)名稱,學(xué)院編號)

教師:(教師編號,教師姓名,性別,職稱)

指導(dǎo):(教師編號,學(xué)號,獲獎內(nèi)容)1:1和1:n關(guān)系采用合并的策略735.4.4設(shè)計(jì)用戶外模式使用更符合用戶習(xí)慣的別名。對于不同級別的用戶定義不同的外模式,以滿足系統(tǒng)對安全性的要求。

view1(學(xué)號,姓名,教師編號,獲獎內(nèi)容)view2(學(xué)號,姓名,教師編號,教師姓名,職稱,獲獎內(nèi)容簡化用戶對系統(tǒng)的使用。745.5物理結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫的物理設(shè)計(jì)就是為給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用要求的物理結(jié)構(gòu)的過程。通常分為兩步:確定數(shù)據(jù)庫的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中主要指存取方法和存儲結(jié)構(gòu)對物理結(jié)構(gòu)進(jìn)行評價,評價的重點(diǎn)是時間和空間效率755.6-5.7數(shù)據(jù)庫的實(shí)施和維護(hù)數(shù)據(jù)的載入和應(yīng)用程序的調(diào)試數(shù)據(jù)庫的試運(yùn)行數(shù)據(jù)庫的運(yùn)行和維護(hù)76醫(yī)院管理信息系統(tǒng)5.8數(shù)據(jù)庫設(shè)計(jì)實(shí)例77

實(shí)例

醫(yī)院管理信息系統(tǒng)1需求分析醫(yī)院有若干科室,科室包括科編號、名稱、人數(shù)、地點(diǎn)、負(fù)責(zé)人。醫(yī)院每一個科室有若干名醫(yī)生,醫(yī)生包括醫(yī)生編號、姓名、職務(wù)、學(xué)歷、職稱、簡歷,每個醫(yī)生的簡歷包括開始時間、終止時間、單位、擔(dān)任職務(wù)、證明人。一個醫(yī)生要負(fù)責(zé)幾個病房病人的醫(yī)療工作,每個病房又可以有多個醫(yī)生為病人治療,但一個病人只能由一個醫(yī)生負(fù)責(zé)。對于病人,醫(yī)院關(guān)心病人編號、姓名、性別、年齡、住院時間、出院時間、病因等信息,對于病房關(guān)心病房號、床位數(shù)、床位號、床位是否為空等信息。782概念結(jié)構(gòu)設(shè)計(jì)科室醫(yī)生簡歷病人醫(yī)院病房79醫(yī)院每一個科室有若干名醫(yī)生一個醫(yī)生要負(fù)責(zé)幾個病房病人的醫(yī)療工作,每個病房又可以有多個醫(yī)生為病人治療一個病人只能由一個醫(yī)生負(fù)責(zé)科室醫(yī)生屬于1n病房醫(yī)生負(fù)責(zé)mn病人醫(yī)生治療n12概念結(jié)構(gòu)設(shè)計(jì)80科室病房包含1n病人病房住在n1簡歷醫(yī)生擁有n1813邏輯結(jié)構(gòu)設(shè)計(jì)醫(yī)生(醫(yī)生編號,姓名,職稱,職務(wù),學(xué)歷)科室(科室編號,名稱,人數(shù),地點(diǎn),負(fù)責(zé)人)簡歷(簡歷編號,醫(yī)生姓名,單位,擔(dān)任職務(wù),開始時間,終止時間,證明人)病人(病人編號,姓名,性別,年齡,住院時間,出院時間,病因)病房(病房號,床位號,病床數(shù),床位是否為空)82治療(病人編號,醫(yī)生編號)擁有(簡歷編號,醫(yī)生編號)屬于(醫(yī)生編號,科室編號)包含(病房號,科室編號)住在(病人編號,病房編號)

負(fù)責(zé)(病房號,醫(yī)生編號)1:1和1:n關(guān)系采用生成一個新關(guān)系的策略83醫(yī)生(醫(yī)生編號,姓名,職稱,職務(wù),學(xué)歷,科室

編號)科室(科室編號,名稱,人數(shù),地點(diǎn),負(fù)責(zé)人)簡歷(簡歷編號,醫(yī)生姓名,單位,擔(dān)任職務(wù),開

始時間,終止時間,證明人,醫(yī)生編號)病人(病人編號,姓名,性別,年齡,住院時間,

出院時間,病因,醫(yī)生編號,病房編號)病房(病房號,床位號,病床數(shù),床位是否為空,

科室編號)1:1和1:n關(guān)系采用合并的策略84優(yōu)化病房(病房號,床位號,病床數(shù),床位是否為空,科室編號)病房號床位數(shù)病房(病房號,床位號,床位是否為空,科室編號)病房信息(病房號,病床數(shù))第六章數(shù)據(jù)庫保護(hù)85事務(wù)數(shù)據(jù)庫恢復(fù)并發(fā)控制數(shù)據(jù)庫安全性數(shù)據(jù)庫完整性主要內(nèi)容866.1事務(wù)事務(wù):是一個不可分割的操作序列,該操作序列要么全做,要么全不做。事務(wù)和程序是兩個概念。一個程序中可以包含多個事務(wù)。87隱式控制:由DBMS按缺省規(guī)定自動劃分。顯式控制:

BEGINTRANSACTION

[事務(wù)開始]

COMMIT

[事務(wù)提交,重新改寫數(shù)據(jù)庫]

ROLLBACK

[事務(wù)提交,發(fā)生錯誤撤消]一、事務(wù)的概念88BEGINTRANSACTIONINSERTINTOS(S#,Sname,Sage,Sdept)VALUES(‘10002’,’李娜’,18,‘計(jì)算機(jī)’)COMMIT89BEGINTRANSACTION

讀賬戶甲的余額Balance;Balance=Balance-AmountIf(Balance<0)Then{打印’金額不足,不能轉(zhuǎn)賬’;Rollback;Else{讀賬戶乙的余額Balance1;Balance1=Balance1+Amount;

寫回Balance1;

commint;}90原子性(Atomicity)

事務(wù)是不可分割的工作單位一致性(Consistency)事務(wù)提交后,數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。隔離性(Isolation)在事務(wù)完成之前,它對數(shù)據(jù)庫產(chǎn)生的結(jié)果不能被其它事務(wù)引用。持續(xù)性(Durability)一旦事務(wù)執(zhí)行成功(提交),其對數(shù)據(jù)產(chǎn)生的效果永久有效。

二、事務(wù)的特性(ACID)91破壞ACID特性的因素(1)多個事務(wù)并行運(yùn)行時,不同事務(wù)交叉執(zhí)行(2)事務(wù)在運(yùn)行過程中被強(qiáng)行停止。92丟失修改不可重復(fù)讀讀“臟”數(shù)據(jù)并發(fā)操作引起的問題93事務(wù)T1事務(wù)T2讀出C,C=500C=C+100C=600讀出C,C=500C=C+200C=700丟失修改94不可重復(fù)讀事務(wù)T1事務(wù)T2

讀出A=50

讀出B=100

求和=150

讀出B=100B=B*2WRITE(B)

讀出A=50

讀出B=200

求和=250(驗(yàn)算不對)95讀臟數(shù)據(jù)事務(wù)T1事務(wù)T2

讀出C=100C=C*2WRITE(C)

讀出C=200

ROLLBACKC恢復(fù)為100966.2

數(shù)據(jù)庫恢復(fù)數(shù)據(jù)庫的恢復(fù):

把數(shù)據(jù)庫從錯誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)。3.介質(zhì)故障4.計(jì)算機(jī)病毒6.2.1故障的類型1.事務(wù)故障2.系統(tǒng)故障軟故障硬故障971.事務(wù)故障

是事務(wù)內(nèi)部的故障(不需要重新啟動系統(tǒng))。預(yù)期故障:通過在程序中加判斷條件來實(shí)現(xiàn)非預(yù)期的故障:如由于死鎖而被迫撤銷的事務(wù)等982.系統(tǒng)故障(需要系統(tǒng)重新啟動)故障類型:硬件錯誤、操作系統(tǒng)故障、DBMS代碼錯誤、突然停電等。特點(diǎn):故障影響正在運(yùn)行的所有事務(wù),但不破壞數(shù)據(jù)庫。可能會造成數(shù)據(jù)庫中數(shù)據(jù)的不一致性。其原因:故障發(fā)生時,尚未完成的事務(wù)的結(jié)果可能已送入到物理數(shù)據(jù)庫。故障發(fā)生時,有些已完成的事務(wù)所做的數(shù)據(jù)更改還在緩沖區(qū)中,尚未寫到物理數(shù)據(jù)庫中。993.介質(zhì)故障

是指存儲數(shù)據(jù)庫的磁盤發(fā)生故障。原因:可能是磁盤損壞、磁頭碰撞、瞬時強(qiáng)磁場干擾等。特點(diǎn):使數(shù)據(jù)庫受到破環(huán)。雖然可能性小,但破壞性最大。4.計(jì)算機(jī)病毒人為的故障或破壞,是一些惡作劇者研制的一種計(jì)算機(jī)程序。1006.2.2數(shù)據(jù)庫恢復(fù)的實(shí)現(xiàn)技術(shù)兩個關(guān)鍵問題:

1如何建立冗余數(shù)據(jù)

2如何利用這些冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫恢復(fù)冗余技術(shù)1011.通過數(shù)據(jù)轉(zhuǎn)儲建立冗余轉(zhuǎn)儲:定期將DB復(fù)制到其它外存保存(副本)轉(zhuǎn)儲類型:

靜態(tài)轉(zhuǎn)儲

能保證副本與數(shù)據(jù)庫的一致性;但是效率太低。

動態(tài)轉(zhuǎn)儲

效率高,但不能保證副本與數(shù)據(jù)庫的一致性。轉(zhuǎn)儲運(yùn)行事務(wù)故障發(fā)生點(diǎn)TaTb轉(zhuǎn)儲恢復(fù)重新運(yùn)行事務(wù)裝入后備副本102轉(zhuǎn)儲方式海量轉(zhuǎn)儲:每次轉(zhuǎn)儲數(shù)據(jù)庫中的全部數(shù)據(jù)增量轉(zhuǎn)儲:每次轉(zhuǎn)儲上一次轉(zhuǎn)儲后更新過的數(shù)據(jù)

轉(zhuǎn)儲狀態(tài)動態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲

轉(zhuǎn)儲方式海量轉(zhuǎn)儲動態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲增量轉(zhuǎn)儲動態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲1032.通過日志文件建立冗余日志文件記錄對數(shù)據(jù)庫每次更新活動的文件。每次更新活動的內(nèi)容作為一個“記錄”寫入日志文件。主要內(nèi)容包括:事務(wù)標(biāo)識(標(biāo)明是哪個事務(wù))操作類型及對象(插入、刪除、修改,記錄內(nèi)部標(biāo)識)更新前后的值104事務(wù)標(biāo)識操作類型對象標(biāo)識前像后像日志文件的格式

事務(wù)T開始,日志記錄為(T,START…)事務(wù)T修改對象A,日志記錄為(T,UPDATE,A,前像,后

像)

事務(wù)T插入對象A,日志記錄為(T,INSERT,A,后像)

事務(wù)T刪除對象A,日志記錄為(T,DELETE,A,前像)

事務(wù)T提交,日志記錄為(T,COMMIT…)

事務(wù)T回滾,日志記錄為(T,ROLLBACK…)105日志文件的作用事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)必須用日志文件正常運(yùn)行運(yùn)行事務(wù)登記日志文件TaTb轉(zhuǎn)儲介質(zhì)故障利用日志文件恢復(fù)TaTb重裝后備副本在動態(tài)轉(zhuǎn)儲方式中必須建立日志文件,后備副本和日志文件結(jié)合才能有效恢復(fù)數(shù)據(jù)庫在靜態(tài)轉(zhuǎn)儲方式中,也可以建立日志文件106登記日志文件要遵循兩條原則:

登記的次序必須嚴(yán)格按照并發(fā)事務(wù)執(zhí)行的次序

必須先寫日志,后寫數(shù)據(jù)庫,并且日志文件和數(shù)據(jù)庫文件不能和數(shù)據(jù)庫文件放在同一個磁盤上。1076.2.3.事務(wù)恢復(fù)策略1.事務(wù)故障的恢復(fù)恢復(fù)策略:反向掃描日志文件,將日志中更新前的數(shù)據(jù)寫回到數(shù)據(jù)庫中,直至事務(wù)的開始標(biāo)志。事務(wù)T修改對象A,日志記錄為(T,UPDATE,A,前像,后像)

事務(wù)T插入對象A,日志記錄為(T,INSERT,A,后像)

事務(wù)T刪除對象A,日志記錄為(T,DELETE,A,前像1086.2.3.事務(wù)恢復(fù)策略2、系統(tǒng)故障的恢復(fù)恢復(fù)策略:撤銷故障發(fā)生時未完成的事務(wù),重做已完成的事務(wù)。方法:(1)正向掃描日志文件;找出故障發(fā)生前已經(jīng)提交的事務(wù),將該事務(wù)放入REDO隊(duì)列;找出故障發(fā)生前未提交的事務(wù),將其放入UNDO隊(duì)列。(2)對UNDO隊(duì)列做撤銷操作(3)對REDO隊(duì)列做重做操作1093、介質(zhì)故障的恢復(fù)恢復(fù)策略:利用數(shù)據(jù)庫副本和日志文件副本進(jìn)行恢復(fù)。(需要DBA介入)6.2.3.事務(wù)恢復(fù)策略正常運(yùn)行運(yùn)行事務(wù)登記日志文件TaTb轉(zhuǎn)儲介質(zhì)故障利用日志文件恢復(fù)TaTb重裝后備副本1106.2.4具有檢查點(diǎn)的恢復(fù)策略Ci檢查點(diǎn)記錄地址T1D1T2D2重新開始文件日志文件檢查點(diǎn)記錄日志文件111具有檢查點(diǎn)時,動態(tài)維護(hù)數(shù)據(jù)庫日志的方法

將當(dāng)前日志緩沖區(qū)中的日志記錄寫入磁盤的日志文件

在日志文件中加入一個檢查點(diǎn)記錄

將當(dāng)前數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫

將檢查點(diǎn)記錄在日志文件中的地址寫入重新開始文件112Tc(檢查點(diǎn))Tf(系統(tǒng)故障)T1T2T3T4T5REDOREDOUNDOUNDO113系統(tǒng)使用檢查點(diǎn)進(jìn)行恢復(fù)的步驟

從重新開始文件中找到最后一個檢查點(diǎn)記錄在日志文件中的地址,找到最后一個檢查點(diǎn)

由該檢查點(diǎn)找到檢查點(diǎn)建立時刻所有的動態(tài)事務(wù)清單

從檢查點(diǎn)正向掃描日志文件

如有新開始的事務(wù),放入UNDO隊(duì)列

如有提交的事務(wù),將該事務(wù)從UNDO放入REDO隊(duì)列

執(zhí)行UNDO和REDO處理114115本次課程總結(jié)1.事務(wù)的概念,ACID特性2.數(shù)據(jù)庫恢復(fù),故障類型3.數(shù)據(jù)庫恢復(fù)技術(shù),轉(zhuǎn)儲和日志4.數(shù)據(jù)庫恢復(fù)策略116上次課程回顧1.事務(wù)的概念,ACID特性2.數(shù)據(jù)庫恢復(fù),故障類型3.數(shù)據(jù)庫恢復(fù)技術(shù),轉(zhuǎn)儲和日志4.數(shù)據(jù)庫恢復(fù)策略6.3并發(fā)控制丟失修改不可重復(fù)讀讀“臟”數(shù)據(jù)6.3.1并發(fā)操作引發(fā)的問題117事務(wù)T1事務(wù)T2讀出C,C=500C=C+100C=600讀出C,C=500C=C+200C=700丟失修改118不可重復(fù)讀事務(wù)T1事務(wù)T2

讀出A=50

讀出B=100

求和=150

讀出B=100B=B*2WRITE(B)

讀出A=50

讀出B=200

求和=250(驗(yàn)算不對)119讀臟數(shù)據(jù)事務(wù)T1事務(wù)T2

讀出C=100C=C*2WRITE(C)

讀出C=200

ROLLBACKC恢復(fù)為100120并發(fā)控制的任務(wù)2.保證事務(wù)的隔離性3.保證事務(wù)的一致性1.對并發(fā)操作進(jìn)行正確調(diào)度思考:事務(wù)的原子性和持久性由DBMS的哪個子系統(tǒng)進(jìn)行維護(hù)?1216.3.2調(diào)度及其可串行化1、事務(wù)的表示方法:

Ri(X)表示事務(wù)Ti的讀X操作

Wi(X)表示事務(wù)Ti的寫X操作例:

事務(wù)T1(Read(B);A=B+1;write(A)),事務(wù)T2(Read(A);B=A+1;write(B))可以表示成:

T1:R1(B)W1(A)T2:R2(A)W2(B)1222、沖突操作定義:如果兩個操作來自不同的事務(wù),它們對同一數(shù)據(jù)單位進(jìn)行操作,并且其中至少有一個是寫操作,則稱這兩個操作是相互沖突的或沖突操作。例:事務(wù)T0:W0(X)W0(Y)W0(Z)

事務(wù)T1:R1(X)R1(Z)W1(X)

在這兩個事務(wù)中有哪些沖突操作?R1(X)與W0(X)

W1(X)與W0(X)R1(Z)與W0(Z)1233串行調(diào)度調(diào)度S中的任意兩個事務(wù)Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,則稱S為串行調(diào)度。串行調(diào)度事務(wù)執(zhí)行的結(jié)果總是正確的.串行調(diào)度不能夠充分利用系統(tǒng)資源.1244并發(fā)調(diào)度如果在一個調(diào)度中,各個事務(wù)交叉地執(zhí)行,這個調(diào)度稱為并發(fā)調(diào)度。5可串行化的調(diào)度如果一個事務(wù)集的并發(fā)調(diào)度與某一串行調(diào)度是等價的,則稱該并發(fā)調(diào)度是可串行化的??纱谢亲鳛椴l(fā)調(diào)度正確與否的判定準(zhǔn)則!125T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調(diào)度1T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調(diào)度2T1T2Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)B:=B+5Write(B)并發(fā)調(diào)度1T1T2Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)并發(fā)調(diào)度2B:=B+5Write(B)A=10B=10A=5B=10A=5B=10A=5B=10A=5B=151266沖突可串行化一個調(diào)度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務(wù)不沖突操作的次序得到另一個調(diào)度Sc’,如果Sc’是串行的稱調(diào)度Sc為沖突可串行化調(diào)度。一個調(diào)度是沖突可串行化的,一定是可串行化調(diào)度,反之則不成立!127調(diào)度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)判斷Sc1是否是沖突可串行化的調(diào)度。首先把w2(A)和r1(B)w1(B)交換,得到r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)和r1(B)w1(B)交換,得到Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等價于串行調(diào)度T1T2,所以Sc1是沖突可串行化的例題128沖突可串行化的判定方法:構(gòu)造前驅(qū)圖設(shè)S是若干事務(wù){(diào)T1,T2,…,Tn}的一個調(diào)度,S的前驅(qū)圖G(V,E)是一個有向圖,其構(gòu)成規(guī)則如下:1)V是由所有參加調(diào)度的事務(wù)構(gòu)成的節(jié)點(diǎn)2)E是圖中的一條有向邊,如果Oi和Oj是沖突操作,且Oi先于Oj執(zhí)行,則在圖中有一條邊Ti→Tj。

事務(wù)Ti讀x在事務(wù)Tj寫x之前

事務(wù)Ti寫x在事務(wù)Tj讀x之前

事務(wù)Ti寫x在事務(wù)Tj寫x之前若一個調(diào)度的前趨圖無環(huán),則該調(diào)度是調(diào)度可串行化的129T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發(fā)調(diào)度ST3例題130獲得調(diào)度S的一個等價的串行調(diào)度由于圖中無回路,必有一個節(jié)點(diǎn)無入弧,將這個節(jié)點(diǎn)及其相連的弧刪去,并把該節(jié)點(diǎn)存入先進(jìn)先出的隊(duì)列中。對剩下的圖做同樣的處理,直至所有節(jié)點(diǎn)移入隊(duì)列中。按照隊(duì)列中次序串行安排各事務(wù)的執(zhí)行,就可以得到一個等價的串行調(diào)度前驅(qū)圖的拓?fù)渑判?31T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發(fā)調(diào)度ST3T1T2T3T4T3T2T4T2T4132有3個事務(wù)的一個調(diào)度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調(diào)度是沖突可串行化的么?練習(xí)1交換r1(A)和w3(B)r2(B)r2(A)w2(B)R3(B)w3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A)等價于串行調(diào)度T3T2T1133有3個事務(wù)的一個調(diào)度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調(diào)度是沖突可串行化的么?練習(xí)1(1)找出沖突操作R2(A)和w1(A)R3(B)和w2(B)T2T1T3T2W3(B)和r2(B)W3(B)和w2(B)W3(B)和r1(B)W2(B)和r1(B)T3T2T3T2T3T1T2T1134(2)得到并發(fā)操作的前趨圖T2T1T3(3)由前趨圖判斷是否可串行化,若可串行化,給出等價的串行化調(diào)度T3T2T1135沖突可串行化調(diào)度是可串行化調(diào)度的充分條件,不是必要條件!調(diào)度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X)調(diào)度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)136設(shè)T1,T2是如下的三個事務(wù)

T1:A:=A*B+2 T2:B:=A*2設(shè)A的初值為2,B的初值為4:(1)若這兩個事務(wù)允許并發(fā)執(zhí)行,討論他們可能實(shí)施的調(diào)度,請一一列舉并求每種調(diào)度的結(jié)果(2)試給出一個可串行化調(diào)度,并給出執(zhí)行結(jié)果練習(xí)2137(1)所有的串行調(diào)度習(xí)題2T1T2T2T1T1:A:=A*B+2T2:B:=A*2設(shè)A的初值為2,B的初值為4A=10,B=20A=10,B=4(2)試給出一個可串行化調(diào)度,并給出執(zhí)行結(jié)果138139調(diào)整次序注意:(1)不能改變沖突操作的先后次序(2)同一事務(wù)的讀寫先后順序不能改變T1T2:R1(A)R1(B)W1(A)R2(A)W2(B)無法改變順序T2T1:R2(A)W2(B)R1(A)R1(B)W1(A)可串行化調(diào)度:R2(A)

R1(A)W2(B)R1(B)W1(A)6.3.3封鎖技術(shù)封鎖:是實(shí)現(xiàn)并發(fā)控制的一種機(jī)制。所謂封鎖,就是事務(wù)T在對某個數(shù)據(jù)對象操作之前,先對其加鎖。排它鎖(X鎖,寫鎖)若事務(wù)T對數(shù)據(jù)對象A加上排它鎖,則只允許T讀取和修改A,不允許其他任何事務(wù)再對A加鎖,直到T釋放A上的X鎖。2.共享鎖(S鎖,讀鎖)若事務(wù)T對數(shù)據(jù)對象A加上共享鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。。1403.封鎖協(xié)議封鎖級別加鎖放鎖一級事務(wù)T在修改數(shù)據(jù)A之前必須先對其加X鎖事務(wù)結(jié)束才釋放X鎖二級一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)A之前必須對其加S鎖讀完后即可釋放S鎖三級一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)A之前必須對其加S鎖事務(wù)結(jié)束才釋放S鎖141(1)一級封鎖協(xié)議T1T2XlockA讀A=16XlockA等待等待A←A-1等待寫回A=15等待commit等待UnlockAXlockA讀A=15A←A-1寫回A=14commitUnlockAT1T2讀A=16A←A-1寫回A=15A←A-1讀A=16寫回A=15(a)丟失修改T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復(fù)讀讀B=100寫回B=200讀A=50求和=250讀B=200ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數(shù)據(jù)寫回D=205C←C*2解決丟失修改問題142(2)二級封鎖協(xié)議ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數(shù)據(jù)寫回D=205C←C*2解決丟失修改和讀臟數(shù)據(jù)問題ROOLBACKT1T2XlockCSlockC等待等待等待等待SlockCcommitUnlockC讀C=100寫回C=200C←C*2UnlockC讀C=200D=C+5寫回D=205T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復(fù)讀讀B=100寫回B=200讀A=50求和=250讀B=200143(3)三級封鎖協(xié)議T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復(fù)讀讀B=100寫回B=200讀A=50求和=250讀B=200解決三種并發(fā)操作引起的問題讀A=50讀B=100求和=150讀A=50求和=150讀B=100T1T2SlockASlockBXlockB等待等待等待等待等待等待等待XlockB讀B=100B=B*2寫回B=200commitUnlockBUlockBUlockA144

操作級別X鎖S鎖一致性保證操作結(jié)束釋放事務(wù)結(jié)束釋放操作結(jié)束釋放事務(wù)結(jié)束釋放不丟失修改不讀臟數(shù)據(jù)可重復(fù)讀一級封鎖協(xié)議二級封鎖協(xié)議三級封鎖協(xié)議√√√√√√√√√√√145兩階段協(xié)議(Two-PhaseLockingProtocol,2PL協(xié)議)某一事務(wù)在對數(shù)據(jù)進(jìn)行讀、寫之前,先要申請并獲得對該數(shù)據(jù)的封鎖。在釋放一個封鎖之后,事務(wù)不再申請和獲得任何其它封鎖。T1:Lock(A)Lock(B)Lock(C)Unlock(B)Ulock(C)Ulock(A)T1:Lock(A)ULock(A)Lock(B)lock(C)Ulock(C)Ulock(B)√ⅹ擴(kuò)展階段釋放階段(4)兩階段協(xié)議146定理6.1:任何一個遵從2PL協(xié)議的調(diào)度都是可串行化的。說明1:事務(wù)遵守2PL協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。說明2:事務(wù)遵守2PL協(xié)議可達(dá)到第3級封鎖協(xié)議的要求。147T1:Slock(X),Read(X),Ulock(X)T2:Slock(Y),Read(Y),Unlock(Y),Xlock(X),Write(X),Unlock(X)T3:Xlock(Y),Write(Y),Unlock(Y)T1T2Slock(X)Read(X)Ulock(X)Slock(Y)Read(Y)Ulock(Y)Slock(X)Write(X)Ulock(X)Slock(Y)write(Y)Ulock(Y)T3T1T2T3T1T2T3不遵守2PL協(xié)議的可串行化調(diào)度148149設(shè)T1,T2是如下的三個事務(wù)

T1:A:=A*B+2 T2:B:=A*2基于兩段鎖協(xié)議,試給出一個可串行化調(diào)度設(shè)A的初值為2,B的初值為4A=10B=4T1T2Ulock(A)Slock(A)Read(A)Ulock(A)Xlock(B)Write(B)Ulock(B)Slock(B)等待等待Slock(B)Read(B)Xlock(A)Write(A)Ulock(B)等待6.3.4封鎖導(dǎo)致的問題1.死鎖:事務(wù)T1已經(jīng)封鎖A,而又想申請封鎖B,而此時事務(wù)T2已經(jīng)封鎖B,而又想申請封鎖A,這樣,T1等待T2釋放B,而T2等待T1釋放A,使得T1、T2均無法繼續(xù)執(zhí)行下去,這種情況稱為死鎖。LOCKA…LOCKB…LOCKB…LOCKA…等待等待T1T2150死鎖檢測*超時法:事務(wù)的等待超過了規(guī)定的時限*等待圖法:檢測等待圖中是否有回路存在。死鎖預(yù)防和死鎖檢測1512.活鎖:事務(wù)T1,T2申請數(shù)據(jù)對象A,T1先給A加鎖,T1釋放A上的鎖后,事務(wù)T3又給A加鎖,T2等待,這樣,A始終被其他事務(wù)封鎖,事務(wù)T2可能長時間得不到A,這種情況稱為活鎖。避免活鎖的方法:采用先來先服務(wù)的原則。152153本次課程總結(jié)1.并發(fā)操作引發(fā)的問題2.調(diào)度及其可串行化3.封鎖技術(shù)上次課程總結(jié)1.并發(fā)操作引發(fā)的問題2.調(diào)度及其可串行化3.封鎖技術(shù)1546.4數(shù)據(jù)庫安全性數(shù)據(jù)庫的安全性:就是防止非法用戶使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞,以達(dá)到保護(hù)數(shù)據(jù)庫的目的。

網(wǎng)絡(luò)安全服務(wù)器安全

用戶安全

應(yīng)用程序與服務(wù)安全

數(shù)據(jù)安全計(jì)算機(jī)系統(tǒng)的安全性問題155計(jì)算機(jī)系統(tǒng)安全標(biāo)準(zhǔn)TCSEC標(biāo)準(zhǔn)CC標(biāo)準(zhǔn)安全級別

定義A1驗(yàn)證設(shè)計(jì)(VerifiedDesign)B3安全域(SecurityDomains)B2結(jié)構(gòu)化保護(hù)(StructuralProtection)B1標(biāo)記安全保護(hù)(LabeledSecurityProtection)C2受控的存取保護(hù)(ControlledAccessProtection)C1自主安全保護(hù)(DiscretionarySecurityProtection)D最小保護(hù)(MinimalProtection)可靠性逐漸增高向下兼容156B2以上的系統(tǒng)還處于理論研究階段應(yīng)用多限于一些特殊的部門,如軍隊(duì)等美國正在大力發(fā)展安全產(chǎn)品,試圖將目前僅限于少數(shù)領(lǐng)域應(yīng)用的B2安全級別下放到商業(yè)應(yīng)用中來,并逐步成為新的商業(yè)標(biāo)準(zhǔn)157計(jì)算機(jī)系統(tǒng)中,安全措施是一級一級層層設(shè)置158

用戶標(biāo)識與鑒別

存取控制

視圖機(jī)制

數(shù)據(jù)加密

審計(jì)數(shù)據(jù)庫系統(tǒng)的安全措施1596.4.1用戶標(biāo)識與鑒別用戶標(biāo)識與鑒別是系統(tǒng)提供的最外層安全保護(hù)措施。

DBA為數(shù)據(jù)庫用戶創(chuàng)建用戶賬號和密碼。用戶名和口令易被竊取可以重復(fù)多次。1601.存取控制機(jī)制組成定義用戶權(quán)限合法權(quán)限檢查6.4.2存取控制2.用戶權(quán)限定義和合法權(quán)檢查機(jī)制一起組成了DBMS

的安全子系統(tǒng)161常用存取控制方法自主存取控制(DiscretionaryAccessControl,簡稱DAC)C2級靈活強(qiáng)制存取控制(MandatoryAccessControl,簡稱MAC)B1級嚴(yán)格162自主存取控制定義存取權(quán)限稱為授權(quán)

通過SQL的GRANT

語句和REVOKE語句實(shí)現(xiàn)

完成的功能:定義用戶可以在哪些數(shù)據(jù)庫對

象上進(jìn)行哪些類型的操作163GRANTGRANT語句的一般格式:

GRANT<權(quán)限>[,<權(quán)限>]...[ON<對象類型><對象名>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];將對指定操作對象的指定操作權(quán)限授予指定的用戶164發(fā)出GRANTDBA

數(shù)據(jù)庫對象擁有者

擁有此權(quán)限的用戶接受權(quán)限的用戶一個或多個具體用戶PUBLIC(全體用戶)165不允許循環(huán)授權(quán)!166[例1]把查詢Student表權(quán)限授給用戶U1GRANTSELECTONTABLEStudentTOU1;[例2]把對Student表和Course表的全部權(quán)限授予用戶U2和U3GRANTALLPRIVILIGESONTABLEStudent,CourseTOU2,U3;167[例3]把對表SC的查詢權(quán)限授予所有用戶GRANTSELECTONTABLESCTOPUBLIC;[例4]把查詢Student表和修改學(xué)生學(xué)號的權(quán)限授給用戶U4GRANTUPDATE(Sno),SELECTONTABLEStudentTOU4;168

[例5]把對表SC的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶

GRANTINSERTONTABLESCTOU5

WITHGRANTOPTION;169執(zhí)行例5后,U5不僅擁有了對表SC的INSERT權(quán)限,還可以傳播此權(quán)限:

[例6]

GRANTINSERTONTABLESCTOU6WITHGRANTOPTION;同樣,U6還可以將此權(quán)限授予U7:

[例7]GRANTINSERTONTABLESCTOU7;

170授權(quán)用戶名被授權(quán)用戶名數(shù)據(jù)庫對象名允許的操作類型能否轉(zhuǎn)授權(quán)DBAU1關(guān)系StudentSELECT不能DBAU2關(guān)系StudentALL不能DBAU2關(guān)系CourseALL不能DBAU3關(guān)系StudentALL不能DBAU3關(guān)系CourseALL不能DBAPUBLIC關(guān)系SCSELECT不能DBAU4關(guān)系StudentSELECT不能DBAU4屬性列Student.SnoUPDATE不能DBAU5關(guān)系SCINSERT能U5U6關(guān)系SCINSERT能U6U7關(guān)系SCINSERT不能171授予的權(quán)限可以由DBA或其他授權(quán)者用REVOKE語句收回REVOKEREVOKE語句的一般格式為:

REVOKE<權(quán)限>[,<權(quán)限>]...[ON<對象類型><對象名>]FROM<用戶>[,<用戶>]...;172[例8]把用戶U4修改學(xué)生學(xué)號的權(quán)限收回

REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;[例9]收回所有用戶對表SC的查詢權(quán)限REVOKESELECTONTABLESCFROMPUBLIC;173[例10]把用戶U5對SC表的INSERT權(quán)限收回

REVOKEINSERTONTABLESCFROMU5CASCADE;174授權(quán)用戶名被授權(quán)用戶名數(shù)據(jù)庫對象名允許的操作類型能否轉(zhuǎn)授權(quán)DBAU1關(guān)系StudentSELECT不能DBAU2關(guān)系StudentALL不能DBAU2關(guān)系CourseALL不能DBAU3關(guān)系StudentALL不能DBAU3關(guān)系CourseALL不能DBAU4關(guān)系StudentSELECT不能175數(shù)據(jù)庫角色:被命名的一組與數(shù)據(jù)庫操作相關(guān)的權(quán)限角色是權(quán)限的集合可以為一組具有相同權(quán)限的用戶創(chuàng)建一個角色簡化授權(quán)的過程176角色的創(chuàng)建

CREATEROLE<角色名>給角色授權(quán)

GRANT<權(quán)限>[,<權(quán)限>]…ON<對象類型>對象名

TO<角色>[,<角色>]…177將一個角色授予其他的角色或用戶

GRANT<角色1>[,<角色2>]…TO<受權(quán)者1>[,<受權(quán)者2>]…[WITHADMINOPTION]角色權(quán)限的收回

REVOKE<權(quán)限>[,<權(quán)限>]…ON<對象類型><對象名>FROM<角色>[,<角色>]…178[例11]通過角色來實(shí)現(xiàn)將一組權(quán)限授予一個用戶。

1.首先創(chuàng)建一個角色R1CREATEROLER1

2.然后使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權(quán)限

GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;1793.將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權(quán)限

GRANTR1TO王平,張明,趙玲;4.可以一次性通過R1來回收王平的這3個權(quán)限

REVOKER1FROM王平;180強(qiáng)制存取控制強(qiáng)制存取控制(MAC)保證更高程度的安全性適用于對數(shù)據(jù)有嚴(yán)格而固定密級分類的部門主體客體label

絕密

機(jī)密

可信公開1816.4.3視圖機(jī)制CREATEVIEWCS_STUDENTASSELECT*FROMSTDUENTWHERESDEPT=‘計(jì)算機(jī)’;GRANTSELECTONCS_STUDENTTO王平;182審計(jì)功能把用戶對數(shù)據(jù)庫的操作自動記錄下來放入審計(jì)日志(Audit

Log),有時也被稱為審計(jì)跟蹤。6.4.4審計(jì)DBA利用審計(jì)日志找出非法存取數(shù)據(jù)的人、時間和

內(nèi)容183XMSJCZ用戶甲02-10-622:32:55進(jìn)入系統(tǒng)用戶甲02-10-820:33:07錄入數(shù)據(jù)用戶乙02-10-98:50:42進(jìn)入系統(tǒng)用戶乙02-10-1111:53:13修改密碼用戶丁02-10-137:19:29進(jìn)入系統(tǒng)用戶丁02-10-288:00:53查詢數(shù)據(jù)6.4.4審計(jì)184[例15]對修改SC表結(jié)構(gòu)或修改SC表數(shù)據(jù)的操作進(jìn)行審計(jì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論