




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第5章
數(shù)據(jù)庫設(shè)計新疆大學(xué)軟件學(xué)院本章重點第5章數(shù)據(jù)庫設(shè)計概念結(jié)構(gòu)設(shè)計邏輯結(jié)構(gòu)設(shè)計已經(jīng)介紹了數(shù)據(jù)庫基本概念,操作方法,規(guī)范化的方法。如何根據(jù)客戶需求,完成軟件系統(tǒng)的數(shù)據(jù)庫設(shè)計是軟件開發(fā)的關(guān)鍵性工作。本章將系統(tǒng)的討論數(shù)據(jù)庫設(shè)計步驟。5.1數(shù)據(jù)庫設(shè)計概述5.2系統(tǒng)需求分析5.3概念結(jié)構(gòu)分析5.4邏輯結(jié)構(gòu)設(shè)計5.5物理結(jié)構(gòu)設(shè)計5.6數(shù)據(jù)庫實施5.7數(shù)據(jù)庫運行和維護5.8小結(jié)5.1數(shù)據(jù)庫設(shè)計概述第5章數(shù)據(jù)庫設(shè)計的任務(wù)、內(nèi)容和特點5.1.1數(shù)據(jù)庫設(shè)計的任務(wù)數(shù)據(jù)庫設(shè)計是指根據(jù)用戶需求研制數(shù)據(jù)庫結(jié)構(gòu)和行為的過程。數(shù)據(jù)庫設(shè)計的內(nèi)容結(jié)構(gòu)設(shè)計行為設(shè)計概念設(shè)計、邏輯設(shè)計和物理設(shè)計應(yīng)用程序使用數(shù)據(jù)庫的方法5.1數(shù)據(jù)庫設(shè)計概述第5章數(shù)據(jù)庫設(shè)計的任務(wù)、內(nèi)容和特點5.1.1數(shù)據(jù)庫設(shè)計的特點結(jié)構(gòu)源于行為——強調(diào)結(jié)構(gòu)設(shè)計與行為設(shè)計相結(jié)合行為總是變化——“反復(fù)探尋,逐步求精”5.1數(shù)據(jù)庫設(shè)計概述
第5章數(shù)據(jù)庫設(shè)計方法簡述5.1.2直觀設(shè)計規(guī)范設(shè)計法人工分析軟件工程語言基于E-R模型的數(shù)據(jù)庫設(shè)計方法——基于圖構(gòu)造基于3NF的數(shù)據(jù)庫設(shè)計方法——基于屬性和屬性依賴基于視圖的數(shù)據(jù)庫設(shè)計方法——基于各類應(yīng)用模式自動化方法5.1數(shù)據(jù)庫設(shè)計概述第5章數(shù)據(jù)庫設(shè)計的步驟5.1.3按規(guī)范設(shè)計法可將數(shù)據(jù)庫設(shè)計分為六個階段1.系統(tǒng)需求分析階段——確定邊界,數(shù)據(jù)字典2.概念結(jié)構(gòu)設(shè)計階段——表達用戶需求的概念模型3.邏輯結(jié)構(gòu)設(shè)計階段——由概念模型得出的數(shù)據(jù)模型4.物理結(jié)構(gòu)設(shè)計階段——存儲結(jié)構(gòu)和存取方法5.?dāng)?shù)據(jù)庫實施階段——數(shù)據(jù)入庫,轉(zhuǎn)存到用戶系統(tǒng)中6.?dāng)?shù)據(jù)庫運行與維護階段——保持?jǐn)?shù)據(jù)完整性5.1數(shù)據(jù)庫設(shè)計概述第5章數(shù)據(jù)庫系統(tǒng)設(shè)計案例5.1.4為便于讀者理解具體數(shù)據(jù)庫系統(tǒng)的設(shè)計過程,本章將使用案例驅(qū)動模式,介紹數(shù)據(jù)庫設(shè)計的操作過程。案例將圍繞本科教學(xué)環(huán)節(jié)中的核心業(yè)務(wù)——任課和選課。5.2系統(tǒng)需求分析第5章需求分析的任務(wù)5.2.1需求分析的任務(wù):1.調(diào)查分析用戶活動2.收集和分析需求數(shù)據(jù),確定系統(tǒng)邊界3.編寫需求分析說明書5.2系統(tǒng)需求分析第5章需求分析的方法5.2.2數(shù)據(jù)流圖(行為)用命名的箭頭表示數(shù)據(jù)流用圓圈表示處理方塊表示數(shù)據(jù)來源和去向雙畫線表示需要數(shù)據(jù)存儲數(shù)據(jù)流數(shù)據(jù)流數(shù)據(jù)源數(shù)據(jù)處理數(shù)據(jù)輸出業(yè)務(wù)需求數(shù)據(jù)需求圖5.4數(shù)據(jù)流圖數(shù)據(jù)存儲5.2系統(tǒng)需求分析第5章需求分析的方法5.2.2付款憑證報銷單報銷人審查分錄數(shù)據(jù)流數(shù)據(jù)流數(shù)據(jù)源數(shù)據(jù)處理數(shù)據(jù)輸出業(yè)務(wù)需求數(shù)據(jù)需求數(shù)據(jù)流圖示例數(shù)據(jù)存儲報銷登記5.2系統(tǒng)需求分析第5章需求分析的方法5.2.2數(shù)據(jù)字典(結(jié)構(gòu))數(shù)據(jù)字典是對系統(tǒng)中數(shù)據(jù)的詳細(xì)描述,是各類數(shù)據(jù)結(jié)構(gòu)和屬性的清單。在需求分析階段,它通常包含以下四部分內(nèi)容:數(shù)據(jù)項最終形成的數(shù)據(jù)流圖和數(shù)據(jù)字典為系統(tǒng)分析報告的主要內(nèi)容,這是下一步進行概念結(jié)構(gòu)設(shè)計的基礎(chǔ)。數(shù)據(jù)存儲數(shù)據(jù)流
處理過程5.2系統(tǒng)需求分析第5章需求分析應(yīng)用案例5.2.3案例的數(shù)據(jù)流圖圖5-5任課業(yè)務(wù)的DFD5.2系統(tǒng)需求分析第5章需求分析應(yīng)用案例5.2.3案例的數(shù)據(jù)流圖圖5-6選課業(yè)務(wù)的DFD5.2系統(tǒng)需求分析第5章需求分析應(yīng)用案例5.2.3案例的數(shù)據(jù)字典在進行數(shù)據(jù)項的定義過程中,有兩方面注意事項:一方面是每一個數(shù)據(jù)結(jié)構(gòu)在實際生活中都存在諸多數(shù)據(jù)項,不會將所有內(nèi)容都定義為數(shù)據(jù)項,僅會根據(jù)業(yè)務(wù)需求,選擇適量的數(shù)據(jù)項。另一方面,除定義數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)項外,還需定義數(shù)據(jù)流、數(shù)據(jù)存儲和數(shù)據(jù)處理過程。5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的必要性5.3.1概念結(jié)構(gòu)設(shè)計就是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu),即概念模型。(1)從邏輯設(shè)計中分離出概念設(shè)計以后,各階段的任務(wù)相對單一化,設(shè)計復(fù)雜程度大大降低,便于組織管理。(2)概念模型不受特定的DBMS的限制,也獨立于存儲安排和效率方面的考慮,因而比邏輯模型更為穩(wěn)定。(3)概念模型不含具體的DBMS所附加的技術(shù)細(xì)節(jié),更容易為用戶所理解,因而更有可能準(zhǔn)確反映用戶的信息需求。5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的必要性5.3.1圖5-7數(shù)據(jù)庫各級模型的形成(a)(b)5.3概念結(jié)構(gòu)設(shè)計第5章概念模型的特點及表示5.3.2真實充分地反映現(xiàn)實世界易于交流和理解易于修改和擴充易于向各種數(shù)據(jù)模型轉(zhuǎn)換概念模型特點5.3概念結(jié)構(gòu)設(shè)計第5章概念模型的特點及表示5.3.2學(xué)生學(xué)號選修(a)實體型(b)屬性(c)聯(lián)系1:11:nm:n
E-R圖的基本成分E-R模型是最著名、最實用的一種是概念模型。5.3概念結(jié)構(gòu)設(shè)計第5章概念模型的特點及表示5.3.2實體之間的聯(lián)系,有一對一(1:1),一對多(1:n)和多對多(m:n)三種聯(lián)系類型。系主任成績領(lǐng)導(dǎo)系學(xué)生屬于系學(xué)生選修課程111nnmE-R圖的幾種關(guān)系(a)兩個實體型之間的聯(lián)系5.3概念結(jié)構(gòu)設(shè)計第5章概念模型的特點及表示5.3.2E-R圖的兩個以上實體間的聯(lián)系數(shù)量供應(yīng)商供應(yīng)零件n1項目n領(lǐng)導(dǎo)職工1n(b)多個實體型之間的聯(lián)系(c)同一實體集內(nèi)部的聯(lián)系5.3概念結(jié)構(gòu)設(shè)計第5章概念模型的特點及表示5.3.2舉例說明圖5-18學(xué)生與課程聯(lián)系的完整的E-R圖5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3概念結(jié)構(gòu)設(shè)計的方法自底向上——由精細(xì)到整體自頂向下——逐步求細(xì)逐步擴張——由核心逐漸向外擴充混合策略——自頂向下+自底向上5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3概念結(jié)構(gòu)設(shè)計的步驟需求分析DFD,DD數(shù)據(jù)抽象,局部視圖設(shè)計視圖集成局部E-R圖全局E-R圖邏輯結(jié)構(gòu)設(shè)計征求意見用戶參與圖5-15自底向上方法的設(shè)計步驟5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3數(shù)據(jù)抽象與局部E-R模型設(shè)計E-R方法
描述現(xiàn)實世界概念結(jié)構(gòu)模型的有效方法。
用E-R方法建立的概念結(jié)構(gòu)模型稱為E-R模型,或稱為E-R圖。數(shù)據(jù)抽象分類聚集將一組具有某些共同特性和行為的對象抽象為一個實體將對象類型的組成成分抽象為實體的屬性5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3數(shù)據(jù)抽象與局部E-R模型設(shè)計局部E-R模型設(shè)計①屬性必須是不可分的數(shù)據(jù)項,不能再由另一些屬性組成。②屬性不能與其他實體具有聯(lián)系,聯(lián)系只能發(fā)生在實體之間。5.3概念結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3局部E-R模型設(shè)計
例如,教師實體有工號、姓名、性別、出生日期、職稱、院系等屬性,如不需對院系再進行更詳細(xì)的分析,則“系別”作為教師實體的一個屬性存在就夠了,但如果還需要對“系別”進行進一步的分析,如需要記錄或分析系編號、系名稱、系主任、聯(lián)系電話等,那么“系別”需要升級為實體5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3圖5-16系別作為一個屬性或?qū)嶓w局部E-R模型設(shè)計5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3每名學(xué)生只屬于一個院系,一個院系可以有多名學(xué)生;每名教師只屬于一個院系,一個院系可以有多名教師。每名學(xué)生可選修多門課程,每門課程可被多名學(xué)生選修。每門課程可以由多位教師教授,每位教師可以教授多門課程。每個學(xué)生每門課程學(xué)完后會考試,并需記錄考試成績。局部E-R模型設(shè)計5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3
對每名學(xué)生需要記錄學(xué)號、姓名、性別、出生日期和系別;教師需要記錄工號、姓名、性別、職稱、工資、出生日期和系別;授課課程需要記錄課程號、課程名和先修課;選修課程需記錄課程號、課程名和學(xué)分;授課關(guān)系需要記錄課程號、教師號;課程成績需要記錄學(xué)號、課程號和成績。局部E-R模型設(shè)計5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3圖5-17教師和授課課程的局部E-R圖局部E-R模型設(shè)計5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3全局E-R模型設(shè)計視圖集成的方法:多元集成法,一次性將多個局部E-R圖合并。二元集成法,首兩個重要的局部E-R圖合并。5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3局部E-R圖合并(消除沖突)優(yōu)化(消除不必要的冗余)基本E-R圖初步E-R圖分析規(guī)范化理論5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3合并合并局部E-R圖,消除局部E-R圖之間的沖突,生成初步E-R圖沖突屬性沖突命名沖突結(jié)構(gòu)沖突屬性域沖突屬性取值單位沖突同名異義異名同義同一對象在不同應(yīng)用中有不同的抽象同一實體在不同應(yīng)用中屬性組成不同同一聯(lián)系在不同應(yīng)用中呈現(xiàn)不同類型5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計的方法與步驟5.3.3優(yōu)化消除不必要的冗余,生成基本E-R圖。所謂冗余,在這里指冗余的數(shù)據(jù)和實體之間冗余的聯(lián)系。冗余的數(shù)據(jù)是指可由基本的數(shù)據(jù)導(dǎo)出的數(shù)據(jù),冗余的聯(lián)系是由其他的聯(lián)系導(dǎo)出的聯(lián)系。通常采用分析的方法消除冗余。5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計案例5.3.4概念結(jié)構(gòu)設(shè)計案例
以前面的學(xué)校教務(wù)管理系統(tǒng)為例,將學(xué)生和選修課程、教師和授課課程兩個局部E-R圖合并為一個全局E-R圖,進行合并操作時,發(fā)現(xiàn)這兩個局部E-R圖中都有“課程”實體,但在兩個局部E-R圖中的名稱不一,即存在命名沖突,所包含的屬性不完全相同,即存在結(jié)構(gòu)沖突。消除該沖突的方法是:合并后,統(tǒng)一為“課程”實體名,兩個局部E-R圖中的“課程”實體屬性并集。在局部E-R模型設(shè)計基礎(chǔ)上,進行局部E-R模型的合并,生成全局E-R圖。5.3概念結(jié)構(gòu)設(shè)計第5章概念結(jié)構(gòu)設(shè)計案例5.3.4圖5-19合并后的全局E-R圖5.4邏輯結(jié)構(gòu)設(shè)計第5章邏輯結(jié)構(gòu)設(shè)計的任務(wù)和步驟5.4.1初構(gòu)關(guān)系模式設(shè)計E—R圖關(guān)系模式規(guī)范化模式評價是否改進以DBMS語法描述模式改進是否網(wǎng)狀模型、層次模型和關(guān)系模型概念結(jié)構(gòu)設(shè)計邏輯結(jié)構(gòu)設(shè)計物理結(jié)構(gòu)實現(xiàn)設(shè)計階段5.4邏輯結(jié)構(gòu)設(shè)計第5章初構(gòu)關(guān)系模式設(shè)計5.4.2轉(zhuǎn)換原則E—R圖實體屬性聯(lián)系關(guān)系模式5.4邏輯結(jié)構(gòu)設(shè)計第5章初構(gòu)關(guān)系模式設(shè)計5.4.2總體原則:一個實體轉(zhuǎn)換為一個關(guān)系模式,實體的屬性就是關(guān)系的屬性,實體的標(biāo)識符就是關(guān)系的碼,實體的主碼為關(guān)系的主碼。聯(lián)系的處理:一個聯(lián)系轉(zhuǎn)換為一個關(guān)系模式,有三種情況:如果聯(lián)系為1:1,則每個實體的主碼都是關(guān)系的候選碼;如果聯(lián)系為1:n,則n端實體的主碼是關(guān)系的主碼;如果聯(lián)系為n:m,則每個實體的主碼的組合是關(guān)系的主碼。
轉(zhuǎn)換原則5.4邏輯結(jié)構(gòu)設(shè)計第5章初構(gòu)關(guān)系模式設(shè)計5.4.2具體做法(1)把每一個實體轉(zhuǎn)換為一個關(guān)系。(2)把每一個聯(lián)系轉(zhuǎn)換為關(guān)系模式。(3)特殊情況的處理。圖5-23三個及三個以上實體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式5.4邏輯結(jié)構(gòu)設(shè)計第5章關(guān)系模式規(guī)范化5.4.3確定范式級別實施規(guī)范化處理需求分析階段概念結(jié)構(gòu)設(shè)計階段邏輯結(jié)構(gòu)設(shè)計階段
用函數(shù)依賴的概念分析和表示各個數(shù)據(jù)項之間的聯(lián)系
以規(guī)范化理論為指導(dǎo),確定關(guān)系主碼,消除初步E-R圖中冗余的聯(lián)系
從E-R圖向數(shù)據(jù)模型轉(zhuǎn)換過程中,用模式合并與分解方法達到指定的數(shù)據(jù)庫規(guī)范化級別
根據(jù)需求分析階段得到的處理要求,分析這些模式對于應(yīng)用環(huán)境是否合適,確定是否要對某些模式進行分解或合并。5.4邏輯結(jié)構(gòu)設(shè)計第5章模式評價和優(yōu)化5.4.4模式評價功能評價(出現(xiàn)問題,回溯分析)對照需求分析的結(jié)果,檢查規(guī)范化后的關(guān)系模式集合是否支持用戶所有的應(yīng)用要求。性能評價(執(zhí)行效果)對實際性能進行估計,包括邏輯記錄的存取數(shù)、傳送量以及物理結(jié)構(gòu)設(shè)計算法的模型等。5.4邏輯結(jié)構(gòu)設(shè)計第5章模式評價和優(yōu)化5.4.4模式優(yōu)化如果因為系統(tǒng)需求分析、概念結(jié)構(gòu)設(shè)計的疏漏導(dǎo)致某些應(yīng)用不能得到支持,則應(yīng)該增加新的關(guān)系模式或?qū)傩?。如果因為性能考慮而要求改進,則可采用合并或分解的方法。
(1)合并:減少連接操作,提高查詢效率。
(2)分解:提高數(shù)據(jù)操作的效率和存儲空間的利用率。5.4邏輯結(jié)構(gòu)設(shè)計第5章邏輯結(jié)構(gòu)設(shè)計案例5.4.5案例的初始關(guān)系模式設(shè)計根據(jù)5.4.2節(jié)的轉(zhuǎn)換規(guī)則,將全局E-R圖轉(zhuǎn)化為4個實體和4個聯(lián)系,分別轉(zhuǎn)化成關(guān)系模式。案例關(guān)系模式的規(guī)范化由于上述轉(zhuǎn)換基于的是全局E-R模型,因此,上述轉(zhuǎn)換得到的模式滿足3NF。5.4邏輯結(jié)構(gòu)設(shè)計第5章邏輯結(jié)構(gòu)設(shè)計案例5.4.5案例關(guān)系模式的評價及改進對關(guān)系模式進行合并處理,合并具有相同主碼的關(guān)系模式。5.5物理結(jié)構(gòu)設(shè)計第5章確定物理結(jié)構(gòu)5.5.1存儲方法的選擇確定物理結(jié)構(gòu):在關(guān)系數(shù)據(jù)庫中主要指存取方法和存儲結(jié)構(gòu)。評價物理結(jié)構(gòu):評價的重點是時間和空間效率。聚集——針對重復(fù)的存儲和高頻的查詢。索引——保證數(shù)據(jù)的完整性,提高查詢效率,但注意維護成本。5.5物理結(jié)構(gòu)設(shè)計第5章確定物理結(jié)構(gòu)5.5.1確定數(shù)據(jù)的存儲結(jié)構(gòu)存儲結(jié)構(gòu):限定了可能訪問的路徑和存儲記錄一般的存儲方式有順序存儲、散列存儲和聚集存儲。順序存儲的平均查找次數(shù)為表中記錄數(shù)的一半;散列存儲的平均查找次數(shù)由散列算法決定;聚集存儲可提高某個屬性(或?qū)傩越M)的查詢速度??梢园堰@個或這些屬性(稱為聚集碼)上具有相同值的元組集中存放在連續(xù)的物理塊上,聚集存儲可以極大提高針對聚集碼的查詢效率。5.5物理結(jié)構(gòu)設(shè)計第5章確定物理結(jié)構(gòu)5.5.1數(shù)據(jù)存放位置的設(shè)計為了提高系統(tǒng)性能,應(yīng)該根據(jù)應(yīng)用情況將數(shù)據(jù)的易變部分、穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低部分分開存放多磁盤下:將表和索引、日志和數(shù)據(jù)庫對象分開存儲。系統(tǒng)配置的設(shè)計DBMS產(chǎn)品一般都提供了一些系統(tǒng)配置變量、存儲分配參數(shù),供設(shè)計人員和DBA對數(shù)據(jù)庫進行物理優(yōu)化。5.5物理結(jié)構(gòu)設(shè)計第5章物理結(jié)構(gòu)設(shè)計的評價5.5.2物理結(jié)構(gòu)設(shè)計過程中要重點對時間效率、空間效率、維護代價和各種用戶要求進行權(quán)衡,選擇一個較優(yōu)的方案作為數(shù)據(jù)庫的物理結(jié)構(gòu)。方案應(yīng)用于具體的數(shù)據(jù)庫管理系統(tǒng)時,主要考慮操作開銷,即為使用戶獲得及時、準(zhǔn)確的數(shù)據(jù)所需的開銷和計算機資源的開銷。5.6數(shù)據(jù)庫實施第5章建立實際數(shù)據(jù)庫結(jié)構(gòu)5.6.1用數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)描述邏輯設(shè)計和物理設(shè)計的結(jié)果,得到模式和子模式,經(jīng)編譯和運行后,形成目標(biāo)模式,建立實際數(shù)據(jù)庫結(jié)構(gòu)。DBMS提供的數(shù)據(jù)定義語言(DDL)可以定義數(shù)據(jù)庫結(jié)構(gòu)。5.6數(shù)據(jù)庫實施第5章加載數(shù)據(jù)5.6.21、加載數(shù)據(jù)是數(shù)據(jù)庫實施階段的主要工作。加載前有大量的數(shù)據(jù)準(zhǔn)備工作要做。為了保證裝入數(shù)據(jù)庫中數(shù)據(jù)的正確無誤,必須高度重視數(shù)據(jù)的校驗工作。2、如果在數(shù)據(jù)庫設(shè)計時,原來的數(shù)據(jù)庫系統(tǒng)仍在使用,那么數(shù)據(jù)的轉(zhuǎn)換工作是將原來舊系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換成新系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu),再將舊的數(shù)據(jù)導(dǎo)入新的數(shù)據(jù)庫。3、數(shù)據(jù)的清洗、分類、綜合和轉(zhuǎn)換通常需要多次才能完成,因而輸入子系統(tǒng)的設(shè)計和實施是很復(fù)雜的,需要編寫應(yīng)用程序。5.6數(shù)據(jù)庫實施第5章應(yīng)用程序編碼與調(diào)試5.6.3數(shù)據(jù)庫應(yīng)用程序編碼屬于程序設(shè)計范疇,包括開發(fā)技術(shù)與開發(fā)環(huán)境的選擇、系統(tǒng)設(shè)計、編碼、調(diào)試的等工作,同時數(shù)據(jù)庫應(yīng)用程序有自己的一些特點。為了加快應(yīng)用系統(tǒng)的開發(fā)速度,一般選擇集成開發(fā)環(huán)境,利用代碼輔助生成、可視化設(shè)計、代碼錯誤檢測和代碼優(yōu)化技術(shù),實現(xiàn)高效的應(yīng)用程序編寫和調(diào)試,可使用開發(fā)工具數(shù)據(jù)庫訪問插件,在統(tǒng)一開發(fā)環(huán)境中進行程序編碼和數(shù)據(jù)庫調(diào)試工作。5.6數(shù)據(jù)庫實施第5章數(shù)據(jù)庫試運行5.6.4(1)功能測試。實際運行應(yīng)用程序,測試它們能否完成各種預(yù)定的功能。(2)性能測試。測試系統(tǒng)的性能指標(biāo),分析是否符合設(shè)計目標(biāo)。應(yīng)用程序編寫完成,并有了一小部分?jǐn)?shù)據(jù)加載后,應(yīng)該按照系統(tǒng)支持的各種應(yīng)用分別運行應(yīng)用程序在數(shù)據(jù)庫上的操作情況,對系統(tǒng)的功能和性能進行測試,檢查是否滿足設(shè)計目標(biāo),這就是數(shù)據(jù)庫的試運行階段,或者稱為聯(lián)合調(diào)試階段。5.6數(shù)據(jù)庫實施第5章整理文檔5.6.5在程序的編碼調(diào)試和試運行中,應(yīng)該記錄所發(fā)現(xiàn)的問題和解決方法,整理存檔作為資料,為正式運行和改進時提供參考。全部的調(diào)試工作完成后,應(yīng)該編寫應(yīng)用系統(tǒng)的技術(shù)說明書和使用說明書,在正式運行時隨系統(tǒng)一起交給用戶。完整的文件資料是應(yīng)用系統(tǒng)的重要組成部分,但這一點常被忽視。必須強調(diào)這一工作的重要性,引起用戶與設(shè)計人員的充分注意。5.6數(shù)據(jù)庫實施第5章建立實際數(shù)據(jù)庫結(jié)構(gòu)(DDL—Table&View)裝入數(shù)據(jù)-耗時(篩選、轉(zhuǎn)換、校驗)應(yīng)用程序編碼與調(diào)試(借助開發(fā)工具)數(shù)據(jù)庫試運行(功能和性能的測試)整理文檔邏輯設(shè)計結(jié)果物理設(shè)計結(jié)果可在物理階段設(shè)計子系統(tǒng)部分測試原則注意備份工作編寫使用說明書編寫技術(shù)說明書5.7數(shù)據(jù)庫運行和維護第5章數(shù)據(jù)庫經(jīng)過試運行符合設(shè)計目標(biāo)就能進入正式運行和維護階段,在數(shù)據(jù)庫運行階段,對數(shù)據(jù)庫的經(jīng)常性維護工作主要由數(shù)據(jù)庫系統(tǒng)管理員完成,主要任務(wù)包括以下內(nèi)容:數(shù)據(jù)庫的備份和恢復(fù):對數(shù)據(jù)庫進行定期備份,出現(xiàn)故障,及時恢復(fù)。維護數(shù)據(jù)庫的安全性和完整性:監(jiān)管權(quán)限,調(diào)整轉(zhuǎn)儲計劃。監(jiān)測并改善數(shù)據(jù)庫性能:按照性能監(jiān)控調(diào)整功能,最小化的影響現(xiàn)有業(yè)務(wù)。重新組織和重新構(gòu)造數(shù)據(jù)庫:存儲位置,回收垃圾,減少指針等。5.8小結(jié)第5章數(shù)據(jù)庫設(shè)計的六個階段包括:系統(tǒng)需求分析概念結(jié)構(gòu)設(shè)計邏輯結(jié)構(gòu)設(shè)計物理結(jié)構(gòu)設(shè)計數(shù)據(jù)庫實施數(shù)據(jù)庫運行與維護對于每一階段,要求掌握其相應(yīng)的任務(wù)、方法和步驟。第6章
數(shù)據(jù)庫安全保護6.1數(shù)據(jù)庫的安全性6.2完整性控制6.3事務(wù)的并發(fā)控制和封鎖6.4數(shù)據(jù)庫的備份和還原本章引言隨著社會信息化的不斷深化,各種數(shù)據(jù)庫的使用也越來越廣泛。例如,一個企業(yè)管理信息系統(tǒng)的全部數(shù)據(jù)、國家機構(gòu)的事務(wù)管理信息、國防情報機密信息、基于Web動態(tài)發(fā)布的網(wǎng)上購物信息等等,它們都集中或分布地存放在大大小小的數(shù)據(jù)庫中。數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)是由DBMS統(tǒng)一進行管理和控制的。為了適應(yīng)和滿足數(shù)據(jù)共享的環(huán)境和要求,DBMS要保證整個系統(tǒng)的正常運轉(zhuǎn),防止數(shù)據(jù)意外丟失和不一致數(shù)據(jù)的產(chǎn)生,以及當(dāng)數(shù)據(jù)庫遭受破壞后能迅速地恢復(fù)正常,這就是數(shù)據(jù)庫的安全保護。新疆大學(xué)軟件學(xué)院DBMS對數(shù)據(jù)安全的保護功能安全性控制完整性控制并發(fā)性控制數(shù)據(jù)庫恢復(fù)第6章6.1數(shù)據(jù)庫的安全性安全性問題新疆大學(xué)軟件學(xué)院黑客公開CSDN網(wǎng)站數(shù)據(jù)庫600余萬用戶資料泄密(2011)第6章新疆大學(xué)軟件學(xué)院如家漢庭酒店2000萬開房數(shù)據(jù)1.71G/BAK,792M/CSV(2013)6.1數(shù)據(jù)庫的安全性安全性問題第6章新疆大學(xué)軟件學(xué)院攜程網(wǎng)全面癱瘓疑似數(shù)據(jù)庫物理刪除(2015)6.1數(shù)據(jù)庫的安全性安全性問題第6章新疆大學(xué)軟件學(xué)院6.1數(shù)據(jù)庫的安全性問題的提出第6章數(shù)據(jù)庫的主要特點是數(shù)據(jù)共享數(shù)據(jù)共享必然帶來數(shù)據(jù)庫的安全性問題數(shù)據(jù)共享不能是無條件的共享例:軍事秘密、國家機密、新產(chǎn)品實驗數(shù)據(jù)、市場需求分析、
市場營銷策略、銷售計劃、客戶檔案、醫(yī)療檔案、銀行儲蓄數(shù)據(jù)新疆大學(xué)軟件學(xué)院6.1數(shù)據(jù)庫的安全性問題的提出第6章數(shù)據(jù)庫的主要特點是數(shù)據(jù)共享數(shù)據(jù)共享必然帶來數(shù)據(jù)庫的安全性問題數(shù)據(jù)共享不能是無條件的共享數(shù)據(jù)庫中數(shù)據(jù)的共享是在DBMS統(tǒng)一嚴(yán)格的控制之下的共享,即只允許有合法使用權(quán)限的用戶訪問允許他存取的數(shù)據(jù)數(shù)據(jù)庫系統(tǒng)的安全保護措施是否有效是數(shù)據(jù)庫系統(tǒng)主要的性能指標(biāo)之一。新疆大學(xué)軟件學(xué)院6.1數(shù)據(jù)庫的安全性數(shù)據(jù)庫安全性的含義第6章安全性問題有許多方面:(1)法律、社會和倫理方面時問題。例如請求查詢信息的人是不是有合法的權(quán)力(2)物理控制方面的問題。例如計算機機房或終端是否應(yīng)該加鎖或用其他方法加以保護(3)政策方面的問題。確定存取原則,允許哪些用戶存取哪些數(shù)據(jù)(4)運行方面的問題。使用口令時,如何使口令保持秘密(5)硬件控制方面的問題。
CPU是否提供任何安全性方面的功能,諸如存儲保護鍵或特權(quán)工作方式(6)操作系統(tǒng)安全性方面的問題。在主存儲器和數(shù)據(jù)文件用過以后,操作系統(tǒng)是否把它們的內(nèi)容清除掉(7)數(shù)據(jù)庫系統(tǒng)本身的安全性方面的問題。數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止非法使用所造成的數(shù)據(jù)泄露、更改或破壞。數(shù)據(jù)庫安全性回顧什么是數(shù)據(jù)庫的安全性?保護數(shù)據(jù)庫,防止因用戶非法使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞。什么是數(shù)據(jù)的保密?數(shù)據(jù)保密是指用戶合法地訪問到機密數(shù)據(jù)后能否對這些數(shù)據(jù)保證不泄密。通過制訂法律道德準(zhǔn)則和政策法規(guī)來保證。計算機系統(tǒng)安全性保護計算機系統(tǒng)中的硬件、軟件及數(shù)據(jù),防止其因偶然或惡意的原因使系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露等。立體防御:進不來、看不見、搞不掉、跑不了三類安全性問題技術(shù)安全類管理安全類政策法律類第6章
可信計算機系統(tǒng)評測標(biāo)準(zhǔn)TCSEC(桔皮書)1985年美國國防部(DoD)正式頒布《DoD可信計算機系統(tǒng)評估標(biāo)準(zhǔn)》,簡稱TCSEC或DoD85。TDI(紫皮書)1991年4月美國NCSC(國家計算機安全中心)頒布了《可信計算機系統(tǒng)評估標(biāo)準(zhǔn)關(guān)于可信數(shù)據(jù)庫系統(tǒng)的解釋》,簡稱TDI。將TCSEC擴展到數(shù)據(jù)庫管理系統(tǒng)。定義了數(shù)據(jù)庫管理系統(tǒng)的設(shè)計與實現(xiàn)中需滿足和用以進行安全性級別評估的標(biāo)準(zhǔn)。
數(shù)據(jù)庫的安全標(biāo)準(zhǔn)可信計算機系統(tǒng)6.1數(shù)據(jù)庫的安全性第6章6.1.16.1.1數(shù)據(jù)庫的安全標(biāo)準(zhǔn)第6章安全標(biāo)準(zhǔn)發(fā)展歷程
TCSEC/TDI安全級別劃分四組七個等級。按系統(tǒng)可靠或可信程度逐漸增高。各安全級別之間具有一種偏序向下兼容的關(guān)系。
安全級別安全級別
定義A1驗證設(shè)計(VerifiedDesign)B3安全域(SecurityDomains)
B2結(jié)構(gòu)化保護(StructuralProtection)
B1標(biāo)記安全保護(LabeledSecurityProtection)
C2受控的存取保護(ControlledAccessProtection)
C1自主安全保護(DiscretionarySecurityProtection)
D最小保護(MinimalProtection)6.1.1數(shù)據(jù)庫的安全標(biāo)準(zhǔn)第6章
D級將一切不符合更高標(biāo)準(zhǔn)的系統(tǒng)均歸于D組典型例子:DOS是安全標(biāo)準(zhǔn)為D的操作系統(tǒng),DOS在安全性方面幾乎沒有什么專門的機制來保障C1級非常初級的自主安全保護,能夠?qū)崿F(xiàn)對用戶和數(shù)據(jù)的分離,進行自主存取控制(DAC),保護或限制用戶權(quán)限的傳播。C2級安全產(chǎn)品的最低檔次;提供受控的存取保護(MAC),將C1級的DAC進一步細(xì)化,以個人身份注冊負(fù)責(zé),并實施審計和資源隔離;達到C2級的產(chǎn)品在其名稱中往往不突出“安全”(Security)這一特色。典型例子操作系統(tǒng):Microsoft的WindowsNT3.5數(shù)據(jù)庫:Oracle公司的Oracle7,Sybase公司的SQLServer11.0.6 安全級別(D級、C級)第6章
安全級別(B1級、B2級)第6章B1級標(biāo)記安全保護?!鞍踩?Security)或“可信的”(Trusted)產(chǎn)品。對系統(tǒng)的數(shù)據(jù)加以標(biāo)記,對標(biāo)記的主體和客體實施強制存取控制(MAC)、審計等安全機制。典型例子操作系統(tǒng):數(shù)字設(shè)備公司的SEVMSVAXVersion6.0,HP-UXBLSrelease9.0.9+數(shù)據(jù)庫:Oracle公司的TrustedOracle7,Sybase公司的SecureSQLServerversion11.0.6,Informix公司的IncorporatedINFORMIX-OnLine/Secure5.0B2級結(jié)構(gòu)化保護建立形式化的安全策略模型并對系統(tǒng)內(nèi)的所有主體和客體實施DAC和MAC。經(jīng)過認(rèn)證的B2級以上的安全系統(tǒng)非常稀少典型例子操作系統(tǒng):TrustedInformationSystems公司的TrustedXENIX一種產(chǎn)品網(wǎng)絡(luò)產(chǎn)品:CryptekSecureCommunications公司的LLCVSLAN一種產(chǎn)品數(shù)據(jù)庫:沒有符合B2標(biāo)準(zhǔn)的產(chǎn)品
安全級別(B3級、A1級)第6章B3級安全域該級的TCB必須滿足訪問監(jiān)控器的要求,審計跟蹤能力更強,并提供系統(tǒng)恢復(fù)過程。A1級驗證設(shè)計:即提供B3級保護的同時給出系統(tǒng)的形式化設(shè)計說明和驗證以確信各安全保護真正實現(xiàn)說明:B2以上的系統(tǒng)還處于理論研究階段;應(yīng)用多限于一些特殊的部門如軍隊等;美國正在大力發(fā)展安全產(chǎn)品,試圖將目前僅限于少數(shù)領(lǐng)域應(yīng)用的B2安全級別下放到商業(yè)應(yīng)用中來,并逐步成為新的商業(yè)標(biāo)準(zhǔn)。自主可控的必要性思政插入第六章課程思政視頻數(shù)據(jù)庫安全等級——GB/T20273-2019第6章【國家標(biāo)準(zhǔn)】GB/T20273-2019:信息安全技術(shù)-數(shù)據(jù)庫管理系統(tǒng)安全技術(shù)要求D第一級第二級第三級第四級第五級A1最小保護用戶自主保護級系統(tǒng)審計保護級安全標(biāo)記保護級結(jié)構(gòu)化保護級訪問驗證保護級驗證設(shè)計C1C2B1B2B3可靠性、可信程度逐漸增高向下兼容高等級包含低等級的所有保護機制CC評估保證級劃分第6章評估保證級定義TCSEC安全級別(近似)EAL1功能測試(functionallytested)EAL2結(jié)構(gòu)測試(structurallytested)C1EAL3系統(tǒng)地測試和檢查(methodicallytestedandchecked)C2EAL4系統(tǒng)地設(shè)計、測試和復(fù)查(methodicallydesigned,testedandreviewed)(semiformallydesignedandtested)B1EAL5半形式化設(shè)計和測試(semiformallydesignedandtested)B2EAL6半形式化驗證的設(shè)計和測試(semiformallyverifieddesignandtested)B3EAL7形式化驗證的設(shè)計和測試(formallyverifieddesignandtested)A1
數(shù)據(jù)庫安全性控制存在的問題6.1數(shù)據(jù)庫的安全性第6章用戶非法使用數(shù)據(jù)庫可以有很多種情況。例如:用戶編寫一段合法的程序繞過DBMS及其授權(quán)機制,通過操作系統(tǒng)直接存取、修改或備份數(shù)據(jù)庫中的數(shù)據(jù);直接或編寫應(yīng)用程序執(zhí)行非授權(quán)操作;破壞安全性的行為可能是無意的,故意的,惡意的,都應(yīng)該嚴(yán)格加以控制。因此,系統(tǒng)還要考慮數(shù)據(jù)信息的流動問題并加以控制,否則有潛在的危險性。因為數(shù)據(jù)的流動可能使無權(quán)訪問的用戶獲得訪問權(quán)利。6.1.26.1.2數(shù)據(jù)庫安全性控制
第6章安全性控制的一般方法新疆大學(xué)軟件學(xué)院安全性控制模型不安全因素眾多:火災(zāi)、停電、密碼泄露、人員變更、設(shè)計缺陷等物理位置人員操作系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng)6.1.2數(shù)據(jù)庫安全性控制
第6章安全性控制的一般方法1、當(dāng)用戶進入計算機系統(tǒng)時,系統(tǒng)首先根據(jù)輸入的用戶標(biāo)識進行身份的鑒定,只有合法的用戶才準(zhǔn)許進入系統(tǒng)。4、數(shù)據(jù)最后可以通過密碼的形式存儲到數(shù)據(jù)庫中。3、DBMS是建立在操作系統(tǒng)之上的,操作系統(tǒng)應(yīng)能保證數(shù)據(jù)庫中的數(shù)據(jù)必須由DBMS訪問,而不允許用戶越過DBMS,直接通過操作系統(tǒng)訪問。2、對已進入系統(tǒng)的用戶,DBMS還要進行存取控制,只允許用戶進行合法的操作。6.1.2數(shù)據(jù)庫安全性控制
第6章安全性控制的一般方法用戶標(biāo)識和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(Audit)6.1.2數(shù)據(jù)庫安全性控制
第6章用戶標(biāo)識和鑒定數(shù)據(jù)庫系統(tǒng)是不允許一個未經(jīng)授權(quán)的用戶對數(shù)據(jù)庫進行操作的。用戶標(biāo)識和鑒定是系統(tǒng)提供的最外層的安全保護措施,其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識,每次用戶要求進入系統(tǒng)時,由系統(tǒng)進行核實,通過鑒定后才提供機器的使用權(quán)。常見方法用戶名或用戶標(biāo)識符用戶名和口令口令鑒別(靜態(tài)/動態(tài))生物特征、智能卡等鑒別方式16.1.2數(shù)據(jù)庫安全性控制
第6章用戶標(biāo)識和鑒定的常見方法1.用一個用戶名或用戶標(biāo)識符來標(biāo)明用戶的身份,系統(tǒng)以此來鑒別用戶的合法性。如果正確,則可進入下一步的核實,否則,不能使用計算機。2.用戶標(biāo)識符是用戶公開的標(biāo)識,它不足以成為鑒別用戶身份的憑證。為了進一步核實用戶身份,常采用用戶名與口令(Password)相結(jié)合的方法,系統(tǒng)通過核對口令判別用戶身份的真?zhèn)?。系統(tǒng)有一張用戶口令表,為每個用戶保持一個記錄,包括用戶名和口令兩部分?jǐn)?shù)據(jù)。用戶先輸入用戶名,然后系統(tǒng)要求用戶輸入口令。為了保密,用戶在終端上輸入的口令不顯示在屏幕上。系統(tǒng)核對口令以鑒別用戶身份。3.通過用戶名和口令來鑒定用戶的方法簡單易行,但該方法在使用時,由于用戶名和口令的產(chǎn)生和使用比較簡單,也容易被竊取,因此還可采用更復(fù)雜的方法。
用戶標(biāo)識和鑒定的方法有多種,為了獲得更強的安全性,往往是多種方法并舉,常用方法有:16.1.2數(shù)據(jù)庫安全性控制
第6章用戶標(biāo)識和鑒定的常見方法(續(xù))(1).靜態(tài)口令鑒別靜態(tài)口令一般由用戶自己設(shè)定,這些口令是靜態(tài)不變的(2).動態(tài)口令鑒別口令是動態(tài)變化的,每次鑒別時均需使用動態(tài)產(chǎn)生的新口令登錄數(shù)據(jù)庫管理系統(tǒng),即采用一次一密的方法(3).生物特征鑒別通過生物特征進行認(rèn)證的技術(shù),生物特征如指紋、虹膜和掌紋等(4).智能卡鑒別智能卡是一種不可復(fù)制的硬件,內(nèi)置集成電路的芯片,具有硬件加密功能16.1.2數(shù)據(jù)庫安全性控制
第6章安全性控制的一般方法用戶標(biāo)識和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(Audit)6.1.2數(shù)據(jù)庫安全性控制
第6章用戶存取權(quán)限控制在數(shù)據(jù)庫系統(tǒng)中,每個用戶只能訪問他有權(quán)存取的數(shù)據(jù)并執(zhí)行有權(quán)使用的操作。因此,必須預(yù)先定義用戶的存取權(quán)限。對于合法的用戶,系統(tǒng)根據(jù)其存取權(quán)限的定義對其各種操作請求進行控制,確保合法操作。存取權(quán)限由兩個要素組成,數(shù)據(jù)對象和操作類型。定義一個用戶的存取權(quán)限就是要定義這個用戶可以在哪些數(shù)據(jù)對象上進行哪些類型的操作。用戶存取權(quán)限指的是不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限。26.1.2數(shù)據(jù)庫安全性控制
第6章用戶存取權(quán)限控制在數(shù)據(jù)庫系統(tǒng)中,定義用戶存取權(quán)限稱為授權(quán)(Authorization)。用戶的存取權(quán)限有兩種:系統(tǒng)特權(quán)和對象特權(quán)。系統(tǒng)特權(quán)是由DBA授予某些數(shù)據(jù)庫用戶,只有得到系統(tǒng)特權(quán),才能成為數(shù)據(jù)庫用戶。對象特權(quán)可以由DBA授予,也可以由數(shù)據(jù)對象的創(chuàng)建者授予,使數(shù)據(jù)庫用戶具有對某些數(shù)據(jù)對象進行某些操作的特權(quán)。在系統(tǒng)初始化時,系統(tǒng)中至少有一個具有DBA特權(quán)的用戶,DBA可以通過GRANT語句將系統(tǒng)特權(quán)或?qū)ο筇貦?quán)授予其他用戶。對于已授權(quán)的用戶可以通過REVOKE語句收回所授予的特權(quán)。26.1.2數(shù)據(jù)庫安全性控制
第6章用戶存取權(quán)限控制新疆大學(xué)軟件學(xué)院這些授權(quán)定義經(jīng)過編譯后以一張授權(quán)表的形式存放在數(shù)據(jù)字典中。授權(quán)表主要有三個屬性,用戶標(biāo)識、數(shù)據(jù)對象和操作類型。用戶標(biāo)識不但可以是用戶個人,也可以是團體、程序和終端。在非關(guān)系系統(tǒng)中,存取控制的數(shù)據(jù)對象僅限于數(shù)據(jù)本身。而關(guān)系系統(tǒng)中,存取控制的數(shù)據(jù)對象不僅有基本表、屬性列等數(shù)據(jù)本身,還有內(nèi)模式、外模式、模式等數(shù)據(jù)字典中的內(nèi)容。授權(quán)表用戶標(biāo)識數(shù)據(jù)對象操作類型對于授權(quán)表,衡量授權(quán)機制的一個重要指標(biāo)就是授權(quán)粒度,即可以定義的數(shù)據(jù)對象的范圍,在關(guān)系數(shù)據(jù)庫中,授權(quán)粒度包括關(guān)系、記錄或?qū)傩?。授?quán)粒度越細(xì),授權(quán)子系統(tǒng)就越靈活,能夠提供的安全性就越完善。不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限不同。用戶只能訪問其有權(quán)限存取的數(shù)據(jù),執(zhí)行其有權(quán)限進行的操作。26.1.2數(shù)據(jù)庫安全性控制
第6章安全性控制的一般方法用戶標(biāo)識和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(Audit)6.1.2數(shù)據(jù)庫安全性控制
第6章定義視圖3為不同的用戶定義不同的視圖,可以限制各個用戶的訪問范圍。通過視圖機制把要保密的數(shù)據(jù)對無權(quán)存取這些數(shù)據(jù)的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護。例如,USER1只能對計算機系的學(xué)生進行操作一種方法是通過授權(quán)機制對USER1授權(quán)另一種簡單的方法就是定義一個計算機系的視圖但視圖機制的安全保護功能太不精細(xì),往往不能達到應(yīng)用系統(tǒng)的要求,其主要功能在于提供了數(shù)據(jù)庫的邏輯獨立性。6.1.2數(shù)據(jù)庫安全性控制
第6章定義視圖3視圖的作用
(1)對數(shù)據(jù)提供一定程度的安全保護;(2)提供數(shù)據(jù)獨立性。在實際應(yīng)用中,通常將視圖機制與授權(quán)機制配合使用:(1)首先用視圖機制屏蔽掉一部分保密數(shù)據(jù)(2)對視圖再進一步定義存取權(quán)限(3)間接實現(xiàn)了支持存取謂詞的用戶權(quán)限定義6.1.2數(shù)據(jù)庫安全性控制
第6章定義視圖--例題3例6-1:設(shè)置王平只能檢索計算機系學(xué)生的信息的權(quán)限先建立計算機系學(xué)生的視圖CS_StudentCREATEVIEWCS_StudentASSELECT*FROMSWHEREDp='計算機';在視圖上進一步定義存取權(quán)限
GRANTSELECTONCS_StudentTO‘王平’;6.1.2數(shù)據(jù)庫安全性控制
第6章安全性控制的一般方法用戶標(biāo)識和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密
審計(Audit)6.1.2數(shù)據(jù)庫安全性控制
第6章數(shù)據(jù)加密4前面介紹的幾種數(shù)據(jù)庫安全措施,都是防止從數(shù)據(jù)庫系統(tǒng)竊取保密數(shù)據(jù),不能防止通過不正常渠道非法訪問數(shù)據(jù)。例如:偷取存儲數(shù)據(jù)的磁盤,或在通信線路上竊取數(shù)據(jù),為了防止這些竊密活動,比較好的辦法是對數(shù)據(jù)加密。數(shù)據(jù)加密是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲和傳輸中失密的有效手段。加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)(術(shù)語為明文,Plaintext)加密成為不可直接識別的格式(術(shù)語為密文,Ciphertext),數(shù)據(jù)以密碼的形式存儲和傳輸。6.1.2數(shù)據(jù)庫安全性控制
第6章數(shù)據(jù)加密--加密方法4加密方法有兩種:一種是替換方法,該方法使用密鑰(EncryptionKey)將明文中的每一個字符轉(zhuǎn)換為密文中的一個字符。另一種是轉(zhuǎn)換方法,該方法將明文中的字符按不同的順序重新排列。通常將這兩種方法結(jié)合起來使用,就可以達到相當(dāng)高的安全程度。例如美國1977年制定的官方加密標(biāo)準(zhǔn),數(shù)據(jù)加密標(biāo)準(zhǔn)(DataEncryptionStandard,簡稱DES)就是使用這種算法的例子。數(shù)據(jù)加密后,對于不知道解密算法的人,即使利用系統(tǒng)安全措施的漏洞非法訪問數(shù)據(jù),也只能看到一些無法辨認(rèn)的二進制代碼。合法的用戶檢索數(shù)據(jù)時,首先提供密碼鑰匙,由系統(tǒng)進行譯碼后,才能得到可識別的數(shù)據(jù)。
6.1.2數(shù)據(jù)庫安全性控制
第6章數(shù)據(jù)加密--加密方法4目前不少數(shù)據(jù)庫產(chǎn)品提供了數(shù)據(jù)加密例行程序,用戶可根據(jù)要求自行進行加密處理,還有一些未提供加密程序的產(chǎn)品也提供了相應(yīng)的接口,用戶用其他廠商的加密程序?qū)?shù)據(jù)加密。用密碼存儲數(shù)據(jù),在存入時需加密,在查詢時需解密,這個過程會占用大量系統(tǒng)資源,降低了數(shù)據(jù)庫的性能。因此,數(shù)據(jù)加密功能通常允許用戶自由選擇,只對那些保密要求特別高的數(shù)據(jù),才值得采用此方法。6.1.2數(shù)據(jù)庫安全性控制
第6章安全性控制的一般方法用戶標(biāo)識和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(Audit)
6.1.2數(shù)據(jù)庫安全性控制
第6章審計5對于某些高度敏感的保密數(shù)據(jù),必須以審計作為預(yù)防手段。審計功能是一種監(jiān)視措施,跟蹤記錄有關(guān)數(shù)據(jù)的訪問活動。審計追蹤把用戶對數(shù)據(jù)庫的所有操作自動記錄下來,存放在一個特殊文件上中,即審計日志(AuditLog)中。前面介紹的各種數(shù)據(jù)庫安全性措施,都可將用戶操作限制在規(guī)定的安全范圍內(nèi)。但實際上任何系統(tǒng)的安全性措施都不是絕對可靠的,竊密者總有辦法打破這些控制。6.1.2數(shù)據(jù)庫安全性控制
第6章審計5記錄的內(nèi)容一般包括:操作類型,如修改、查詢等;操作終端標(biāo)識與操作者標(biāo)識;操作日期和時間;操作所涉及到的相關(guān)數(shù)據(jù),如基本表、視圖、記錄、屬性等。利用這些信息,可以重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,以進一步找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等。6.1.2數(shù)據(jù)庫安全性控制
第6章審計5KingbaseES中,以SYSSAO連接數(shù)據(jù)庫開啟審計功能,執(zhí)行下面的語句:
ALTERSYSTEMSETENABLE_AUDIT=1;
CALLsys_reload_conf();如若要關(guān)閉審計功能,執(zhí)行下面語句:
ALTERSYSTEMSETENABLE_AUDIT=0;
CALLsys_reload_conf();
使用審計功能會大大增加系統(tǒng)的開銷,所以DBMS通常將其作為可選特征,提供相應(yīng)的操作語句可靈活地打開或關(guān)閉審計功能。
KingbaseES數(shù)據(jù)安全管理三員管理、三權(quán)分立6.1數(shù)據(jù)庫的安全性第6章6.1.3TCSEC(可信計算機系統(tǒng)評估準(zhǔn)則)安全等級:TCSECB2(四組七個等級。A1,B3,B2,B1,C2,C1,D)三權(quán)分立(行政、立法、司法),特權(quán)用戶:系統(tǒng)管理員(SYSTEM)主要負(fù)責(zé)執(zhí)行數(shù)據(jù)庫日常管理的各種操作和自主存取控制。安全管理員(SYSSSO)主要負(fù)責(zé)強制存取控制規(guī)則的制定和管理,且不能創(chuàng)建和操作普通對象。審計管理員(SYSSAO)主要負(fù)責(zé)數(shù)據(jù)庫的審計,監(jiān)督前兩類用戶的操作。且不能創(chuàng)建和操作普通對象。6.1.3KingbaseES數(shù)據(jù)安全管理機制第6章用戶身份鑒別KingbaseES:支持強化口令的身份認(rèn)證模式(雙向可信認(rèn)證)、外部統(tǒng)一身份認(rèn)證模式、集中化身份認(rèn)證模式基于強化口令的身份認(rèn)證:對數(shù)據(jù)庫用戶施加口令復(fù)雜度檢查、帳戶和口令有效期限設(shè)置、帳戶鎖定等安全策略管理等機制;其他身份認(rèn)證:KingbaseES還支持基于Kerberos、Radius、LDAP認(rèn)證協(xié)議和CA等技術(shù)在內(nèi)的與第三方身份認(rèn)證產(chǎn)品相結(jié)合的外部統(tǒng)一身份鑒別或集中化身份認(rèn)證方式。6.1.3KingbaseES數(shù)據(jù)安全管理機制第6章用戶身份鑒別KingbaseES數(shù)據(jù)庫連接:支持強化口令的身份認(rèn)證截圖
6.1.3KingbaseES數(shù)據(jù)安全管理機制第6章數(shù)據(jù)訪問控制與保護在訪問控制模型中包括主體、客體和控制策略三個要素。主體指主動對其它實體施加動作的實體;客體是被動接受其他實體訪問的實體;控制策略為主體對客體的操作行為和約束條件。這三者之間需要滿足基本的安全策略:(1)最小特權(quán)原則
(2)最小泄漏原則
(3)多級安全策略6.1.3KingbaseES數(shù)據(jù)安全管理機制第6章數(shù)據(jù)訪問控制與保護(1)最小特權(quán)原則。給主體分配權(quán)限時要遵循權(quán)限最小化原則,能最大限度地限制主體實施授權(quán)行為,可以避免來自突發(fā)事件、錯誤和未授權(quán)使用主體的危險。(2)最小泄漏原則。主體執(zhí)行任務(wù)時,按照主體所需要知道的信息最小化的原則分配給主體權(quán)利。也就是要保護敏感信息不要被無關(guān)人員知道。(3)多級安全策略。主體和客體間的數(shù)據(jù)流向和權(quán)限控制按照安全級別的絕密(TS)、秘密(S)、機密(C)、限制(RS)和無級別(U)五級來劃分??梢员苊饷舾行畔⒌臄U散,只有安全級別更高的主體才能夠訪問。6.1.3KingbaseES數(shù)據(jù)安全管理機制第6章金倉的數(shù)據(jù)訪問控制與保護KingbaseES支持自主訪問控制(DAC)和強制訪問控制(MAC)。用戶只有同時具有數(shù)據(jù)庫管理員的自主存取控制(DAC)授權(quán)和安全管理員的強制存取控制(MAC)授權(quán),才能查看到某些敏感數(shù)據(jù)。自主訪問控制作用是對主體(如用戶)操作客體(如表)進行授權(quán)管理,它主要包括權(quán)限授予、回收及傳播。KingbaseESDAC采用存取控制列表(ACL)技術(shù)實現(xiàn)。
權(quán)限和角色6.1數(shù)據(jù)庫的安全性第6章6.1.4只有當(dāng)用戶被授予適當(dāng)系統(tǒng)權(quán)限或?qū)ο髾?quán)限時,才能執(zhí)行相應(yīng)操作。授權(quán)方法有:直接授權(quán):利用GRANT命令直接為用戶授權(quán)。間接授權(quán):先將權(quán)限授予角色,然后再將角色授予用戶。KingbaseES使用角色的概念來管理數(shù)據(jù)庫的訪問權(quán)限。一個角色可以被看成是一個數(shù)據(jù)庫“用戶”或“用戶組”,這取決于角色被怎樣設(shè)置。角色可以擁有數(shù)據(jù)庫對象(例如,表和函數(shù)),并且能夠把數(shù)據(jù)庫對象上的權(quán)限賦予其他角色。6.1.4權(quán)限和角色第6章角色管理(數(shù)據(jù)庫對象管理工具)1在“數(shù)據(jù)庫對象管理工具”中,在數(shù)據(jù)庫導(dǎo)航標(biāo)簽下,通過“數(shù)據(jù)庫->安全性->用戶/角色”,右鍵選擇“新建角色”或者“新建用戶”。KingbaseES中可通過“數(shù)據(jù)庫對象管理工具”和SQL語句兩種方式實現(xiàn)角色的管理。6.1.4權(quán)限和角色第6章角色管理(SQL語句)1KingbaseES中用戶/角色的創(chuàng)建:CREATEUSER/CREATEROLESUPERUSER|NOSUPERUSER:角色是否是“超級用戶”,默認(rèn)值為NOSUPERUSER。CREATEDB|NOCREATDB:定義新角色創(chuàng)建數(shù)據(jù)庫的能力,默認(rèn)值為NOCREATEDB。CREATEROLE|NOCREATROLE:定義新角色創(chuàng)建角色的能力,默認(rèn)值為NOCREATEROLE。LOGIN|NOLOGIN:新角色是否被允許登陸。設(shè)置LOGIN的角色被認(rèn)為是用戶,可在客戶端登陸數(shù)據(jù)庫。PASSWORD:設(shè)置角色的口令?!纠?-2】創(chuàng)建用戶名為user1、登陸口令為“123456”的用戶。CREATEUSERuser1withPASSWORD‘123456’;【例6-3】創(chuàng)建角色名為role1、沒有登陸口令的角色。CREATEROLErole1withLOGIN;6.1.4權(quán)限和角色第6章角色管理(例題)16.1.4權(quán)限和角色第6章權(quán)限管理2KingbaseES中用戶操作權(quán)限分為系統(tǒng)權(quán)限、對象權(quán)限和列級權(quán)限。系統(tǒng)權(quán)限:指在數(shù)據(jù)庫級別執(zhí)行某種操作的權(quán)限,或針對某一類對象執(zhí)行某種操作的權(quán)限。例如,CREATEDB、CREATEROLE、SUPERUSER、SSO、SAO系統(tǒng)權(quán)限。(5種)對象權(quán)限:指對某個特定的數(shù)據(jù)庫對象執(zhí)行某種操作的權(quán)限。例如,對特定表的插入、刪除、修改、查詢的權(quán)限。
列級權(quán)限:對給定的用戶授予在給定表或視圖上某些列執(zhí)行操作集。此動作只能為INSERT、UPDATE和REFERENCES。權(quán)限管理就是用戶登錄后只能進行權(quán)限范圍內(nèi)的操作,所謂權(quán)限就是執(zhí)行特定類型的SQL命令或訪問其他用戶的對象的權(quán)利。用戶在數(shù)據(jù)庫中可以執(zhí)行什么樣的操作,以及可以對哪些對象進行操作,完全取決于該用戶所擁有的權(quán)限。6.1.4權(quán)限和角色第6章權(quán)限管理2KingbaseES中的操作權(quán)限:系統(tǒng)權(quán)限、對象權(quán)限和列級權(quán)限授權(quán)GRANTGRANT<權(quán)限>,[,<權(quán)限>][ON<對象類型><對象名>]TO<用戶>[,<用戶>]…[WITHGRANTOPTION];6.1.4權(quán)限和角色第6章回收REVOKEREVOKE<權(quán)限>,[,<權(quán)限>]ON<對象類型><對象名>FROM<用戶>[,<用戶>]…[CASCADE|RESTRICT];【例6-4】把表S的插入權(quán)限授予給用戶user1。GRANTINSERTONSTOuser1;【例6-5】把視圖S_VIEW的所有可用權(quán)限授予用戶user2。GRANTALLONS_VIEWTOuser2;6.1.4權(quán)限和角色第6章權(quán)限管理(對象權(quán)限-例題)2【例6-6】從用戶user1收回表S的插入權(quán)限。REVOKEINSERTONSFROMuser1;【例6-7】從用戶user2收回視圖S_VIEW的所有權(quán)限。GRANTALLONS_VIEWFROMuser2;授權(quán)GRANT回收REVOKE6.1.4權(quán)限和角色第6章權(quán)限管理-對象權(quán)限-列級權(quán)限2列級權(quán)限是對給定的用戶授予在給定表或視圖上某些列執(zhí)行操作集。此動作只能為INSERT、UPDATE和REFERENCES。6.1.4權(quán)限和角色第6章示例練習(xí)-126.1.4權(quán)限和角色第6章示例練習(xí)-226.1.4權(quán)限和角色第6章示例練習(xí)-326.1.4權(quán)限和角色第6章刪除角色2由于角色可以擁有數(shù)據(jù)庫對象并且能持有訪問其他對象的特權(quán),刪除一個角色常常并非一次DROPROLE就能解決。任何被該用戶所擁有的對象必須首先被刪除或者轉(zhuǎn)移給其他擁有者,并且任何已被授予給該角色的權(quán)限必須被收回。對象的擁有關(guān)系可以使用ALTER命令一次轉(zhuǎn)移出去,格式如下:ALTER<對象類型><對象名>OWNERTO<對象類型><對象名>;REASSIGNOWNED命令可以把要被刪除的角色old_role擁有的所有對象權(quán)限轉(zhuǎn)移給另一個角色new_role,格式如下:REASSINGOWNEDBYold_roleTOnew_role;ALTERREASSIGN
數(shù)據(jù)庫完整性的含義6.2完整性控制第6章6.2.1廣義的完整性泛指所有可能引發(fā)錯誤的范疇,包含語義完整性、并發(fā)控制、安全控制、DB故障恢復(fù)等。狹義的完整性特指語義完整性。通常來說,DBMS具有專門的完整性管理機制與程序來處理語義完整性問題。接下來討論的也主要是語義完整性。6.2.1數(shù)據(jù)庫完整性的含義第6章關(guān)系完整性的分類1與關(guān)系的完整性不同,數(shù)據(jù)庫完整性是DBMS內(nèi)的范疇,從更宏觀的角度對數(shù)據(jù)庫的操作進行約束與規(guī)范。行的完整性、行的唯一標(biāo)識、主鍵約束等;實體完整性EntityIntegrity表的外鍵需要與其他表的主鍵對應(yīng);參照完整性ReferentialIntegrity允許用戶自己對不同粒度的對象添加不同約束;用戶自定義完整性User-definedIntegrity6.2.1數(shù)據(jù)庫完整性的含義第6章數(shù)據(jù)庫完整性的定義2數(shù)據(jù)庫的完整性是指保護數(shù)據(jù)庫中數(shù)據(jù)的正確性、一致性和相容性,防止錯誤的數(shù)據(jù)進入數(shù)據(jù)庫造成無效操作。數(shù)據(jù)庫的完整性是指防止合法用戶使用數(shù)據(jù)庫時向數(shù)據(jù)庫中加入不符合語義的數(shù)據(jù)。完整性措施的防范對象是不合語義的數(shù)據(jù)。只有符合語義約束的合法數(shù)據(jù)才能進入數(shù)據(jù)庫正確性保證數(shù)據(jù)之間的邏輯關(guān)系是正確的,對數(shù)據(jù)庫更新時,數(shù)據(jù)庫從一個一致狀態(tài)到另一個一致狀態(tài)一致性同一個事實的兩個數(shù)據(jù)應(yīng)當(dāng)是相同或存在引用制約的,這兩個數(shù)據(jù)可能存放在不同的關(guān)系之中。相容性6.2.1數(shù)據(jù)庫完整性的含義第6章完整性與安全性3數(shù)據(jù)庫的完整性與安全性是數(shù)據(jù)庫保護的兩個不同方面。完整性措施防范的對象是不合語義的數(shù)據(jù),維護的是數(shù)據(jù)的正確性、一致性、相容性;安全性措施防范的對象是非法用戶與非法操作,保證數(shù)據(jù)不被非法使用、更改、泄密和破壞。完整性控制機制6.2.2完整性規(guī)則的組成第6章完整性規(guī)則的構(gòu)成1完整性規(guī)則主要由以下三部分構(gòu)成。觸發(fā)條件:規(guī)定系統(tǒng)什么時候使用完整性規(guī)則來檢查數(shù)據(jù)。約束條件:規(guī)定系統(tǒng)檢查用戶發(fā)出的操作請求違背了什么樣的完整性約束條件。違約響應(yīng):規(guī)定系統(tǒng)如果發(fā)現(xiàn)用戶發(fā)出的操作請求違背了完整性約束條件,應(yīng)該采取一定的動作來保證數(shù)據(jù)的完整性,即違約時要做的事情。6.2.2完整性規(guī)則的組成第6章規(guī)則的執(zhí)行時間2完整性規(guī)則從執(zhí)行時間上可分為立即執(zhí)行約束(ImmediateConstraints)和延遲執(zhí)行約束(DeferredConstraints)。立即執(zhí)行約束是指在執(zhí)行用戶事務(wù)過程中,某一條語句執(zhí)行完成后,系統(tǒng)立即對此數(shù)據(jù)進行完整性約束條件檢查;延遲執(zhí)行約束是指在整個事務(wù)執(zhí)行結(jié)束后,再對約束條件進行完整性檢查,結(jié)果正確后才能提交。6.2.2完整性規(guī)則的組成第6章規(guī)則的構(gòu)成元素3D(Data):代表約束作用的數(shù)據(jù)對象,可以是關(guān)系、元組和列三種對象;O(Operation):代表觸發(fā)完整性檢查的數(shù)據(jù)庫操作,即當(dāng)用戶發(fā)出什么操作請求時需要檢查該完整性規(guī)則,是立即執(zhí)行還是延遲執(zhí)行;A(Assertion):代表數(shù)據(jù)對象必須滿足的語義約束,這是規(guī)則的主體;C(Condition):代表選擇A作用的數(shù)據(jù)對象值的謂詞;P(Procedure):代表違反完整性規(guī)則時觸發(fā)執(zhí)行的操作過程。一條完整性規(guī)則可以用一個五元組(D,O,A,C,P)來形式化地表示【例6-8】對于“學(xué)號(SNo)不能為空”的這條完整性約束中,(D,O,A,C,P)的含義分別如下:D:代表約束作用的數(shù)據(jù)對象為SNo屬性;O:當(dāng)用戶插入或修改數(shù)據(jù)時需要檢查該完整性規(guī)則,屬于立即執(zhí)行約束;A:SNo不能為空;C:A可作用于所有記錄的SNo屬性;P:拒絕執(zhí)行用戶請求。6.2.2完整性規(guī)則的組成第6章規(guī)則的構(gòu)成元素-例題3完整性約束條件是完整性控制機制的核心。
完整性約束條件的分類6.2完整性控制第6章6.2.3廣義的完整性泛指所有可能引發(fā)錯誤的范疇,包含語義完整性、并發(fā)控制、安全控制、DB故障恢復(fù)等。狹義的完整性特指語義完整性。通常來說,DBMS具有專門的完整性管理機制與程序來處理語義完整性問題。接下來討論的也主要是語義完整性。6.2.3完整性約束條件的分類第6章從約束條件使用的對象劃分1值的約束即對數(shù)據(jù)類型、數(shù)據(jù)格式、取值范圍和空值等進行規(guī)定。(1)對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位和精度等。(2)對數(shù)據(jù)格式的約束。(3)對取值范圍的約束。(4)對空值的約束。從約束條件使用的對象來劃分,可以分為值的約束和結(jié)構(gòu)的約束。6.2.3完整性約束條件的分類第6章從約束條件使用的對象劃分1結(jié)構(gòu)的約束即對數(shù)據(jù)之間聯(lián)系的約束。(1)函數(shù)依賴約束(2NF、3NF、BCNF)。(2)實體完整性約束。
(3)參照完整性約束。(4)統(tǒng)計約束。規(guī)定某個屬性值與關(guān)系多個元組的統(tǒng)計值之間必須滿足某種約束條件。例如,規(guī)定系主任的獎金不得高于該系的平均獎金的50%,不得低于該系的平均獎金的15%。這里該系平均獎金的值就是一個統(tǒng)計計算值。從約束條件使用的對象來劃分,可以分為值的約束和結(jié)構(gòu)的約束。實體完整性約束和參照完整性約束是關(guān)系模型的兩個極其重要的約束,被稱為關(guān)系的兩個不變性。注:統(tǒng)計約束實現(xiàn)起來開銷很大。6.2.3完整性約束條件的分類第6章從約束對象的狀態(tài)劃分2從約束對象的狀態(tài)來劃分,可以分為靜態(tài)約束和動態(tài)約束。靜態(tài)約束靜態(tài)約束是指對數(shù)據(jù)庫每一個確定狀態(tài)所應(yīng)滿足的約束條件,是反映數(shù)據(jù)庫狀態(tài)合理性的約束,這是最重要的一類完整性約束。上面介紹的值的約束和結(jié)構(gòu)的約束均屬于靜態(tài)約束。動態(tài)約束動態(tài)約束是指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時,新舊值之間所應(yīng)滿足的約束條件,動態(tài)約束反映的是數(shù)據(jù)庫狀態(tài)變遷的約束。例如,學(xué)生年齡在更改時只能增長,職工工資在調(diào)整時不得低于其原來的工資。
數(shù)據(jù)完整性的實施6.2完整性控制第6章6.2.4數(shù)據(jù)完整性的兩種實施形式:聲明式數(shù)據(jù)完整性和程序化數(shù)據(jù)完整性聲明式數(shù)據(jù)完整性
--是實施數(shù)據(jù)完整性的首選聲明式數(shù)據(jù)完整性是將數(shù)據(jù)所需符合的條件融入到對象的定義中,這樣DBMS會自動確保數(shù)據(jù)符合事先制定的條件。聲明式數(shù)據(jù)完整性的特點是:①通過針對表和字段定義聲明的約束,可使聲明式數(shù)據(jù)完整性成為數(shù)據(jù)定義的一部分。②使用約束、默認(rèn)值與規(guī)則實施聲明式數(shù)據(jù)完整性。6.2.4數(shù)據(jù)完整性的實施第6章實施的形式-程序化數(shù)據(jù)完整性1程序化數(shù)據(jù)完整性如果所需符合的條件以及該條件的實施均通過所編寫的程序代碼完成,則這種形式的數(shù)據(jù)完整性稱為程序化數(shù)據(jù)完整性。程序化數(shù)據(jù)完整性的特點是:程序化數(shù)據(jù)完整性可以通過相關(guān)的程序語言及工具在客戶端或服務(wù)器端實施。常用的類型是:存儲過程、觸發(fā)器等形式實施程序化數(shù)據(jù)完整性。6.2.4數(shù)據(jù)完整性的實施第6章實施的形式1綜上,實施數(shù)據(jù)完整性的方法有五種:約束(Constraint)、默認(rèn)值(Default)、規(guī)則(Rule)、存儲過程(StoredProcedure)和觸發(fā)器(Trigger)。在選用實施數(shù)據(jù)完整性的方法時,應(yīng)優(yōu)先選用約束,因為約束在SQLServer的可執(zhí)行部分有一段代碼,執(zhí)行速度比默認(rèn)值和規(guī)則要快。
有關(guān)約束的定義和使用方法參見3.4.3小節(jié),有關(guān)存儲過程和觸發(fā)器的內(nèi)容參見7.2和7.3節(jié)。下面介紹規(guī)則和默認(rèn)。6.2.4數(shù)據(jù)完整性的實施第6章規(guī)則2規(guī)則(Rule)就是數(shù)據(jù)庫對存儲在表中的列或用戶自定義數(shù)據(jù)類型中的值的規(guī)定和限制。規(guī)則系統(tǒng)非常有效,KingbaseES中,視圖(VIEW)系統(tǒng)就是利用規(guī)則實現(xiàn)的。
CREATE[ORREPLACE]RULEnameASONevent
TOtable[WHEREcondition]
DO[ALSO|INSTEAD]{NOTHING|command|(command;command...)}其中,WHEREcondition是規(guī)則條件,它是一個限制,告訴規(guī)則動作什么時候做、什么時候不做。這個條件只能引用NEW和/或OLD偽關(guān)系,它們基本上代表作為對象給定的關(guān)系(但是有著特殊含義)。6.2.4數(shù)據(jù)完整性的實施第6章規(guī)則-示例2CREATETABLEshoelace_log(
sl_nametext,--改變的鞋帶
sl_availinteger,--新的可用值
log_whotext,--誰做的
log_whentimestamp--何時做的
);【例6-9】跟蹤shoelace_data關(guān)系中的sl_avail列。建立一個日志表和一條規(guī)則,這條規(guī)則每次在shoelace_data上執(zhí)行UPDATE時有條件地寫入一個日志項。CREATERULElog_shoelaceASONUPDATETOshoelace_data
WHERENEW.sl_avail<>OLD.sl_avail
DOINSERTINTOshoelace_logVALUES(
NEW.sl_name,
NEW.sl_avail,
current_user,
current_timestamp
);
事務(wù)存在的問題6.3事務(wù)的并發(fā)控制和封鎖第6章為了充分利用數(shù)據(jù)庫資源,很多時候數(shù)據(jù)庫用戶都是對數(shù)據(jù)庫系統(tǒng)并行存取數(shù)據(jù),這樣就會發(fā)生多個用戶并發(fā)存取同一數(shù)據(jù)的情況,如果對并發(fā)操作不加控制可能會產(chǎn)生不正確的數(shù)據(jù),破壞數(shù)據(jù)的完整性。并發(fā)控制就是解決這類問題,以保持?jǐn)?shù)據(jù)庫中數(shù)據(jù)的一致性,即在任何一個時刻數(shù)據(jù)庫都將以相同的形式給用戶提供數(shù)據(jù)。6.3.1
事務(wù)(定義、相關(guān)語句)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1
事務(wù)是數(shù)據(jù)庫系統(tǒng)中執(zhí)行的一個工作單位,它是由用戶定義的一組操作序列。一個事務(wù)可以是一組SQL語句、一條SQL語句或整個程序,一個應(yīng)用程序可以包括多個事務(wù)。定義事務(wù)的相關(guān)語句有三條:BEGIN
事務(wù)的開始COMMIT
事務(wù)的提交ROLLBACK
事務(wù)的回滾
事務(wù)(特征:ACID)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1事務(wù)對數(shù)據(jù)庫的作用是數(shù)據(jù)庫從一個一致狀態(tài)轉(zhuǎn)變到另一個一致狀態(tài)。所謂數(shù)據(jù)庫的一致狀態(tài)是指數(shù)據(jù)庫中的數(shù)據(jù)滿足完整性約束。一致性(Consistency)如果多個事務(wù)并發(fā)地執(zhí)行,應(yīng)像各個事務(wù)獨立執(zhí)行一樣,一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及數(shù)據(jù)對其他事務(wù)是隔離的。隔離性(Isolation)持久性指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是持久的,即使數(shù)據(jù)庫因故障而受到破壞,DBMS也應(yīng)該能夠恢復(fù)。持續(xù)性(Durability)
一個事務(wù)是一個不可分割的工作單位,事務(wù)在執(zhí)行時,應(yīng)該遵守“要么不做,要么全做”(NothingorAll)的原則,即不允許完成部分的事務(wù)。原子性(Atomicity)事務(wù)(并發(fā)的示例)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1在銀行業(yè)務(wù)中,“從帳號A轉(zhuǎn)移資金額R到帳號B”是一個典型的事務(wù),這個事務(wù)包括兩個操作,從帳號A中減去資金額R和在帳號B中增加資金額R,如果只執(zhí)行其中一個操作,則數(shù)據(jù)庫處于不一致狀態(tài),帳務(wù)會出現(xiàn)問題。也就是說,兩個操作要么全做,要么全不做,否則就不能成為事務(wù)。事務(wù)的一致性與原子性是密切相關(guān)的ACID事務(wù)(并發(fā)的示例)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1BEGINTRANSACTIONREADAA←A-RIFA<0/*A款不足*/THENBEGINDISPLAY“A款不足”
ROLLBACKENDELSE/*撥款*/BEGINB←B+RDISPLAY“撥款完成”
COMMITEND并發(fā)執(zhí)行與數(shù)據(jù)的不一致性6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.2(1)提高系統(tǒng)的資源利用率(2)減少事務(wù)的等待時間并發(fā)執(zhí)行的必要性(1)讀臟數(shù)據(jù)(DirtyRead)(2)不可重復(fù)讀(UnrepeatableRead)(3)丟失更新(LostUpdate)并發(fā)執(zhí)行的問題當(dāng)同一數(shù)據(jù)庫系統(tǒng)中有多個事務(wù)并發(fā)運行時,如果不加以適當(dāng)控制,可能產(chǎn)生數(shù)據(jù)的不一致性。[例5-9]并發(fā)取款操作。假設(shè)存款余額R=1000元,甲事務(wù)T1取走存款100元,乙事務(wù)T2取走存款200元,如果正常操作,即甲事務(wù)T1執(zhí)行完畢再執(zhí)行乙事務(wù)T2,存款余額更新后應(yīng)該是700元。但是如果按照如下順序操作,則會有不同的結(jié)果:(1)甲事務(wù)T1讀取存款余額R=1000元;(2)乙事務(wù)T2讀取存款余額R=1000元;(3)甲事務(wù)T1取走存款100元,修改存款余額R=R-100=900,把R=900寫回到數(shù)據(jù)庫;(4)乙事務(wù)T2取走存款200元,修改存款余額R=R-200=800,把R=800寫回到數(shù)據(jù)庫;結(jié)果兩個事務(wù)共取走存款300元,而數(shù)據(jù)庫中的存款卻只少了200元。得到這種錯誤的結(jié)果是由甲乙兩個事務(wù)并發(fā)操作引起的。6.2.4并發(fā)執(zhí)行與數(shù)據(jù)的不一致性第6章并發(fā)執(zhí)行的問題-讀臟數(shù)據(jù)2
事務(wù)T1更新了數(shù)據(jù)R,事務(wù)T2讀取了更新后的數(shù)據(jù)R,事務(wù)T1由于某種原因被撤銷,修改無效,數(shù)據(jù)R恢復(fù)原值。事務(wù)T2得到的數(shù)據(jù)與數(shù)據(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版初中5550210八年級上冊 1.1.3 古代印度 教學(xué)設(shè)計
- 制定個人學(xué)習(xí)與發(fā)展路徑計劃
- 加強后備人才培養(yǎng)的工作計劃
- 豐富課程內(nèi)容提升教育品質(zhì)計劃
- 復(fù)雜項目的管理與規(guī)劃計劃
- 《GeneralChemistry》課程教學(xué)大綱
- 倉庫信息化管理建設(shè)方案計劃
- 健身房空間設(shè)計與運動科學(xué)
- 社區(qū)特色文藝演出的籌備計劃
- 煉督灸技術(shù)操作流程圖及考核標(biāo)準(zhǔn)
- 2025年天翼云解決方案架構(gòu)師認(rèn)證考試指導(dǎo)題庫-下(多選、判斷題)
- 2024年甘肅省白銀市中考數(shù)學(xué)試卷(附答案)
- 煤礦機電維護工職業(yè)技能理論考試題庫150題(含答案)
- 《走進汽車》課件
- 中國充電樁行業(yè)運營趨勢及投資價值評估研究報告
- 2025年小紅書品牌博主合作合同
- 2025年華能銅川照金煤電有限公司招聘筆試參考題庫含答案解析
- 2025年?;髽I(yè)安全教育培訓(xùn)計劃
- 《HR的成長之路》課件
- 2025年山東浪潮集團有限公司招聘筆試參考題庫含答案解析
- U8UAP開發(fā)手冊資料
評論
0/150
提交評論