已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)管理系統(tǒng)的功能和特征 數(shù)據(jù)庫(kù)模型(概念模式、外模式、內(nèi)模式) 數(shù)據(jù)模型,ER圖,第一范式、第二范式、第三范式 數(shù)據(jù)操作(集合運(yùn)算和關(guān)系運(yùn)算) 數(shù)據(jù)庫(kù)語(yǔ)言(SQL) 數(shù)據(jù)庫(kù)的控制功能(并發(fā)控制、恢復(fù)、安全性、完整性) 數(shù)據(jù)倉(cāng)庫(kù)和分布式數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1、數(shù)據(jù)庫(kù)知識(shí)1.1數(shù)據(jù)管理技術(shù)的發(fā)展數(shù)據(jù)管理技術(shù)的發(fā)展階段:人工階段:數(shù)據(jù)處理方式是批處理。其特點(diǎn)是: 數(shù)據(jù)不保存 沒有專用的軟件對(duì)數(shù)據(jù)進(jìn)行管理 只有程序概念,沒有文件概念 一組數(shù)據(jù)對(duì)應(yīng)一個(gè)程序,即數(shù)據(jù)是面向程序的文件系統(tǒng)階段:數(shù)據(jù)處理方式有批處理,也有聯(lián)機(jī)實(shí)時(shí)處理。其特點(diǎn)是: 數(shù)據(jù)可長(zhǎng)期保存在外存上 數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)有了區(qū)別,但簡(jiǎn)單 文件組織已多樣化,有索引文件、鏈接文件和直接存取文件等,但文件之間相互獨(dú)立,沒有聯(lián)系 數(shù)據(jù)不再屬于某個(gè)特定的程序,可重復(fù)使用,但數(shù)據(jù)結(jié)構(gòu)和程序之間的依賴關(guān)系并未根本改變。其缺點(diǎn)是: 數(shù)據(jù)冗余性 數(shù)據(jù)不一致性 數(shù)據(jù)聯(lián)系弱數(shù)據(jù)庫(kù)階段:其特點(diǎn)是: 用關(guān)系模型表示復(fù)雜的數(shù)據(jù)模型 有較高的數(shù)據(jù)獨(dú)立性 數(shù)據(jù)庫(kù)系統(tǒng)為用戶提供了方便的用戶接口 數(shù)據(jù)庫(kù)管理系統(tǒng)提供了四個(gè)方面的數(shù)據(jù)控制能力數(shù)據(jù)完整性、數(shù)據(jù)安全性、數(shù)據(jù)庫(kù)的并發(fā)控制、數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)庫(kù)(DB):是存儲(chǔ)在一起的相關(guān)數(shù)據(jù)的集合。DB能為各種用戶共享,具有最小冗余度,數(shù)據(jù)間聯(lián)系密切,而又有較高的程序與數(shù)據(jù)的獨(dú)立性。數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS):DBMS是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法,包括DB的建立、查詢、更新及各種數(shù)據(jù)控制。DBMS可分為層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮?。?shù)據(jù)庫(kù)系統(tǒng)(DBS):即是采用了數(shù)據(jù)庫(kù)技術(shù)的計(jì)算機(jī)系統(tǒng),是實(shí)現(xiàn)有組織地、動(dòng)態(tài)存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù),方便多用戶訪問的計(jì)算機(jī)軟件、硬件和數(shù)據(jù)資源而組成的系統(tǒng)。數(shù)據(jù)庫(kù)技術(shù):研究數(shù)據(jù)庫(kù)的結(jié)構(gòu)、存儲(chǔ)、設(shè)計(jì)、管理和使用的一門軟件學(xué)科。1.2數(shù)據(jù)模型表示實(shí)體類型及實(shí)體之間聯(lián)系的模型稱為“數(shù)據(jù)模型”。數(shù)據(jù)模型是嚴(yán)格定義的概念的集合,數(shù)據(jù)庫(kù)的數(shù)據(jù)模型應(yīng)包括數(shù)據(jù)結(jié)構(gòu)(指對(duì)實(shí)體類型和實(shí)體之間聯(lián)系的表達(dá)和實(shí)現(xiàn))、數(shù)據(jù)操作(指對(duì)數(shù)據(jù)庫(kù)的檢索和更新兩大類操作)和完整性約束(給出數(shù)據(jù)及其所具有的制約合依賴規(guī)則)3個(gè)部分。數(shù)據(jù)模型的種類很多。目前廣泛使用的數(shù)據(jù)模型可分為兩種:概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型。概念數(shù)據(jù)模型這是一種獨(dú)立于任何計(jì)算機(jī)系統(tǒng)的模型,完全不涉及信息在計(jì)算機(jī)系統(tǒng)中的表示,用于建立信息世界的數(shù)據(jù)模型,是現(xiàn)實(shí)世界的第一層抽象,是用戶和數(shù)據(jù)庫(kù)設(shè)計(jì)人員進(jìn)行交流的工具,其中最著名的模型是“實(shí)體聯(lián)系模型”(ER模型)。ER模型直接從現(xiàn)實(shí)世界中抽取出實(shí)體類型及實(shí)體間聯(lián)系圖(ER圖)表示數(shù)據(jù)模型。一般遇到實(shí)際問題時(shí),總是先設(shè)計(jì)一個(gè)ER模型,然后再把ER模型轉(zhuǎn)換成與DBMS關(guān)聯(lián)的數(shù)據(jù)模型。結(jié)構(gòu)數(shù)據(jù)模型(亦稱基本數(shù)據(jù)模型):這是直接面向數(shù)據(jù)庫(kù)的邏輯數(shù)據(jù)結(jié)構(gòu),通常有一組嚴(yán)格定義了語(yǔ)法和語(yǔ)義的數(shù)據(jù)庫(kù)語(yǔ)言,用來(lái)定義、操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù)。其主要有層次、網(wǎng)狀、關(guān)系模型三種。層次模型:用樹型(層次)結(jié)構(gòu)表示實(shí)體類型及實(shí)體之間聯(lián)系的數(shù)據(jù)模型稱為層次模型。層次結(jié)構(gòu)是一棵樹,樹的結(jié)點(diǎn)是記錄類型,非根結(jié)點(diǎn)有且只有一個(gè)父結(jié)點(diǎn)。上一層記錄類型和下一層記錄類型的聯(lián)系是1:M聯(lián)系。網(wǎng)狀模型:用從結(jié)構(gòu)(網(wǎng)絡(luò)結(jié)構(gòu))表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型。記錄之間的聯(lián)系通過指針實(shí)現(xiàn),M:N聯(lián)系容易實(shí)現(xiàn)(一個(gè)M:N聯(lián)系可拆成兩個(gè)1:M聯(lián)系),查詢效率高。關(guān)系模型:用規(guī)范化了的二維表格結(jié)構(gòu)表示實(shí)體集,用鍵表示實(shí)體間聯(lián)系。通常是若干個(gè)關(guān)系模型組成的集合。1.3數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)n 數(shù)據(jù)庫(kù)的數(shù)據(jù)體系結(jié)構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)體系結(jié)構(gòu)分成3個(gè)級(jí)別:內(nèi)部級(jí)、概念級(jí)、外部級(jí)。從某個(gè)角度看到的數(shù)據(jù)特性稱為數(shù)據(jù)視圖。 外部級(jí)最接近用戶,是用戶看到的數(shù)據(jù)特性,用戶的數(shù)據(jù)視圖稱為外模型。 概念級(jí)是涉及到所有用戶的數(shù)據(jù)定義,也就是全局的數(shù)據(jù)視圖,稱為概念模型。 內(nèi)部級(jí)是最接近于物理存儲(chǔ)設(shè)備,涉及到實(shí)際數(shù)據(jù)的存儲(chǔ)方式。物理存儲(chǔ)的數(shù)據(jù)視圖稱為內(nèi)模型。這些模型用數(shù)據(jù)庫(kù)的數(shù)據(jù)定義語(yǔ)言(DDL)描述后,分別得到外模式、概念模式、內(nèi)模式。為實(shí)現(xiàn)這個(gè)抽象級(jí)別的轉(zhuǎn)換,數(shù)據(jù)庫(kù)和管理系統(tǒng)在這級(jí)結(jié)構(gòu)之間提供了兩層映象:外模式概念模式映象和概念模式內(nèi)模式映象數(shù)據(jù)庫(kù)管理系統(tǒng)的主要目標(biāo):把數(shù)據(jù)作為可管理的資源處理。數(shù)據(jù)庫(kù)管理系統(tǒng)的個(gè)重要功能:數(shù)據(jù)庫(kù)的定義功能、數(shù)據(jù)庫(kù)的操縱功能、數(shù)據(jù)庫(kù)的保護(hù)功能、數(shù)據(jù)庫(kù)的維護(hù)功能、數(shù)據(jù)字典。數(shù)據(jù)庫(kù)的全局結(jié)構(gòu):DBS的某些功能是由計(jì)算機(jī)的OS提供的,OS提供了DBS最基本的服務(wù),因此 DBS必須在OS基礎(chǔ)上工作。在DBS中就應(yīng)包含DBMS和OS之間的界面。DBS的全局結(jié)構(gòu)由數(shù)據(jù)庫(kù)用戶、數(shù)據(jù)庫(kù)管理系統(tǒng)的查詢處理器、數(shù)據(jù)庫(kù)管理系統(tǒng)的存儲(chǔ)管理器和磁盤存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)等部分組成。1.4關(guān)系模型和關(guān)系運(yùn)算n 基本概述關(guān)系數(shù)據(jù)庫(kù)是應(yīng)用關(guān)系數(shù)據(jù)模型來(lái)建立和處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。這其中主要涉及幾個(gè)重要的概念。u 關(guān)系 關(guān)系實(shí)際上就可以看作是一個(gè)二維表。其中,表的每一列稱為屬性,并用屬性名來(lái)標(biāo)識(shí)。每個(gè)屬性的取值范圍,就是該屬性所對(duì)應(yīng)的值域。表的每一行稱為元組。約定該表的行、列的次序的改變,不改變關(guān)系的語(yǔ)義性質(zhì)。對(duì)于一個(gè)關(guān)系,應(yīng)該具備下列性質(zhì): 關(guān)系中每一個(gè)屬性值都是不可分解的; 關(guān)系中不允許出現(xiàn)相同的元組;不讓用戶考慮元組的順序; 用戶在使用時(shí)應(yīng)考慮列的順序。u 關(guān)系模型關(guān)系模型是目前最流行的一種數(shù)據(jù)模型,它是用二維表格結(jié)構(gòu)表示實(shí)體集,關(guān)鍵碼表示實(shí)體間的聯(lián)系。u 關(guān)鍵字(鍵)I. 候選鍵關(guān)系中的某一屬性或?qū)傩越M,若它的值可以唯一標(biāo)識(shí)關(guān)系中的一個(gè)元組而又不含有多余的屬性,則稱該屬性或?qū)傩越M為候選關(guān)鍵字。II. 主鍵關(guān)系模式中用戶正使用的候選關(guān)鍵字稱為主關(guān)鍵字。III. 外關(guān)鍵字若模式R中某屬性集是其他模式的候選鍵,那么該屬性集對(duì)模式R而言就是外關(guān)鍵字。IV. 超鍵關(guān)系模式中,為唯一標(biāo)識(shí)元組的屬性集稱為超鍵。n 關(guān)系模型關(guān)系模型遵循數(shù)據(jù)庫(kù)的3級(jí)體系結(jié)構(gòu)。u 關(guān)系模式數(shù)據(jù)庫(kù)的概念模式定義為關(guān)系模式的集合。每個(gè)關(guān)系模式就是記錄類型。u 關(guān)系子模式這是對(duì)用戶所用到的那部分?jǐn)?shù)據(jù)的描述。除了指出用戶用到的數(shù)據(jù)外,還應(yīng)指出數(shù)據(jù)與模式中相應(yīng)數(shù)據(jù)的聯(lián)系,即指出子模式與模式之間的對(duì)應(yīng)性。u 關(guān)系存儲(chǔ)模式(關(guān)系內(nèi)模式)這是作為文件看待的,每個(gè)元組就是一個(gè)記錄。關(guān)系模型有3個(gè)部分構(gòu)成:u 數(shù)據(jù)結(jié)構(gòu)關(guān)系模型采用的數(shù)據(jù)結(jié)構(gòu)是關(guān)系。u 關(guān)系操作 關(guān)系模型提供一組完備的關(guān)系運(yùn)算,以支持對(duì)數(shù)據(jù)庫(kù)的各種操作。關(guān)系運(yùn)算的理論是關(guān)系代數(shù)和關(guān)系演算。u 關(guān)系的完整性在關(guān)系模型中,數(shù)據(jù)的約束條件通過三類完整性約束條件來(lái)描述。即:I. 實(shí)體完整性要求關(guān)系中的元組的主鍵值不能是空值。II. 參照完整性要求在關(guān)系中不允許引用不存在的實(shí)體。III. 用戶定義的完整性這是針對(duì)某一具體數(shù)據(jù)的約束條件,由應(yīng)用環(huán)境決定,例如屬性的值限制。n 關(guān)系代數(shù)關(guān)系查詢語(yǔ)言根據(jù)其理論基礎(chǔ)的不同分成兩大類:u 關(guān)系代數(shù)語(yǔ)言:查詢操作是以集合操作為基礎(chǔ)的運(yùn)算。u 關(guān)系演算語(yǔ)言:查詢操作是以謂詞演算為基礎(chǔ)的運(yùn)算。其中,關(guān)系代數(shù)是以集合代數(shù)為基礎(chǔ)發(fā)展起來(lái)的,它是以關(guān)系為運(yùn)算對(duì)象的一組高級(jí)運(yùn)算的集合。關(guān)系代數(shù)的運(yùn)算可分為兩類:基本運(yùn)算操作:并、差、笛卡爾積、投影和選擇。組合運(yùn)算操作:交、聯(lián)接、自然聯(lián)接和除。另外,還有幾種擴(kuò)充的關(guān)系代數(shù)操作:外聯(lián)接(左外聯(lián)接和右外聯(lián)接)、外部并和半聯(lián)接。以下對(duì)幾種常用的關(guān)系運(yùn)算作一個(gè)簡(jiǎn)單的介紹。u 基本運(yùn)算1. 并設(shè)有兩個(gè)關(guān)系R和S具有相同的關(guān)系模式,關(guān)系R和S的并是由屬于R或?qū)儆赟的元組組成的集合,記為RS。形式定義如下:RSttRtS2. 差設(shè)有兩個(gè)關(guān)系R和S具有相同的關(guān)系模式,關(guān)系R和S的差是由屬于R但不屬于S的元組組成的集合,記為RS。形式定義如下:RSttRtS3. 笛卡兒積設(shè)關(guān)系R和S元數(shù)分別為r和s。定義R和S的笛卡兒積是一個(gè)(r+s)元的元組集合,每個(gè)元組的前r個(gè)分量來(lái)自R的一個(gè)元組,后s個(gè)分量來(lái)自S的一個(gè)元組,記為RS形式定義如下:RStttr,tstrRtsS若R有m個(gè)元組,S有n個(gè)元組,則RS有(mn)個(gè)元組。4. 投影該操作是對(duì)關(guān)系進(jìn)行垂直分割,消去某些列,并重新安排列的順序,再刪去重復(fù)元組。5. 選擇這個(gè)操作是根據(jù)某些條件對(duì)關(guān)系作水平分割,即選擇符合條件的元組。條件可用命題公式F表示,F(xiàn)中的運(yùn)算對(duì)象是常數(shù)(用引號(hào)括起來(lái))或元組分量(屬性名或列的序號(hào))。運(yùn)算符有算術(shù)比較運(yùn)算符(,)和邏輯運(yùn)算符(,)。F(R)ttRF(t) true為選擇運(yùn)算符,F(xiàn)(R)表示從R中挑選滿足公式F的元組所構(gòu)成的集合。常量用引號(hào)括起來(lái),而屬性號(hào)或?qū)傩悦灰靡?hào)括起來(lái)。u 組合運(yùn)算1. 交設(shè)有兩個(gè)關(guān)系R和S具有相同的關(guān)系模式,關(guān)系R和S的交是由屬于R又屬于S的元組組成的集合,記為RS。形式定義如下:RSttRtS2. 聯(lián)接(又稱聯(lián)接)從關(guān)系R和S的笛卡爾積中選取屬性值之間滿足一定條件的元組,記為:RSi(i+j)(RS) ij這里R的元數(shù)是r,是算術(shù)比較運(yùn)算符。RS操作是在R和S ij的笛卡爾積中挑選第i個(gè)分量和第(r+j)個(gè)分量滿足運(yùn)算的元組組成的新的關(guān)系。3. 自然聯(lián)接兩個(gè)關(guān)系R和S的自然聯(lián)接用RS表示,具體計(jì)算過程如下:A) 計(jì)算RSB) 設(shè)R和S的公共屬性是A1,A2,A3,.Ak.,挑選RS中滿足R.A1=S.A1,R.A2,.,R.Ak=S.Ak的那些元組C) 去掉S.A1,S.A2,.S.AkRS可用下列形式定義:RSi1i2,.,im(R.A1=S.A1.R.Ak=S.Ak(RS)。4. 除法設(shè)兩個(gè)關(guān)系R和S的元數(shù)分別為r和s(rs0),那么RS是一個(gè)(rs)元的元組的集合。(RS)是滿足下列條件的最大關(guān)系,其中每個(gè)元組t與S中每個(gè)元組u組成的新元組必在關(guān)系R中。RS的具體計(jì)算過程如下:A) T=1,2,.r-s(R)B) W=(TS)-R求出TS中不在R的元組C) V=1,2,.r-s(W)D) RS=T-V因此RS1,2,.r-s (R)- 1,2,.r-s (1,2,.r-s (R) S) -R )。1.5關(guān)系數(shù)據(jù)庫(kù)SQL語(yǔ)言SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)體系結(jié)構(gòu)SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)體系結(jié)構(gòu)基本上也是3級(jí)結(jié)構(gòu),但術(shù)語(yǔ)與傳統(tǒng)關(guān)系模型術(shù)語(yǔ)不同。SQL中,關(guān)系模型稱為“基本表”,存儲(chǔ)模式稱為“存儲(chǔ)文件”,子模式稱為“視圖”,元組稱為“行”,屬性稱為“列”。SQL語(yǔ)言的組成一個(gè)SQL數(shù)據(jù)庫(kù)是表的匯集,它用一個(gè)或多個(gè)SQL模式定義。一個(gè)SQL表由行集構(gòu)成,一行是列的序列,每列對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。一個(gè)表或者是一個(gè)基本表,或者是一個(gè)視圖?;颈硎菍?shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)的表,視圖是由若干基本表或其他視圖構(gòu)成的表的定義。SQL包括了所有對(duì)數(shù)據(jù)庫(kù)的操作,主要有4個(gè)部分:數(shù)據(jù)定義(SQL DDL)、數(shù)據(jù)操縱(SQL DML)、訪問數(shù)據(jù)控制、嵌入式SQL語(yǔ)言的規(guī)定。SQL DDL主要是定義基本表、視圖、索引3個(gè)部分:基本表的定義、修改、撤銷基本表的定義可用“CREATE TABLE”語(yǔ)句實(shí)現(xiàn),增加屬性可以用“ALTER.ADD.”語(yǔ)句,刪除屬性可以用“ALTER.DROP.”語(yǔ)句;刪除已存在的表可用“DROP TABLE.”語(yǔ)句。視圖的定義和撤銷視圖的定義可以用CREATE VIEW語(yǔ)句實(shí)現(xiàn)。視圖的撤消可以用DROP VIEW語(yǔ)句實(shí)現(xiàn)。索引的定義和撤銷索引的定義可以用CREATE ,用DROP撤銷。SQL DML 數(shù)據(jù)查詢語(yǔ)句SQL的查詢語(yǔ)句只有SELECT語(yǔ)句。SELECT查詢語(yǔ)句在關(guān)系代數(shù)中最常用的式子是“投影選擇聯(lián)接表達(dá)式”:A1,A2,.An(F(R1R2.Rm),這里R1,R2,.Rm為基本表,F(xiàn)是公式,A1,A2,.An為屬性。針對(duì)這個(gè)表達(dá)式,SQL 設(shè)計(jì)了SELECT句型:SELCET A1,A2,.AnFROM R1,R2,.RmWHERE F在WHERE子句的條件表達(dá)式F中可出現(xiàn)下列操作符和運(yùn)算特點(diǎn):算術(shù)比較符、邏輯運(yùn)算符、集合運(yùn)算符、集合成員資格運(yùn)算符、謂詞和聚合函數(shù)。庫(kù)函數(shù) COUNT(*) 計(jì)算元組的個(gè)數(shù) COUNT(列名) 對(duì)某一列中的值計(jì)算個(gè)數(shù)。 SUM(列名) 求某一列值的總和 AVG(列名) 求某一列值的平均值 MAX(列名) 求某一列值中的最大值 MIN(列名) 求某一列值中的最小值SELECT語(yǔ)句完整的句法SELECT 目標(biāo)表的列名或列表達(dá)式序列FROM 基本表或(和)視圖序列WHERE行條件表達(dá)式GROUT BY 列名序列HAVING組條件表達(dá)式DRDER BY 列名序.前兩個(gè)句子是必不可少的,后面的4個(gè)句子可以缺省。整個(gè)語(yǔ)句的語(yǔ)義如下:從FROM子句中列出的表,選取滿足WHERE子句中給出的行條件表達(dá)式的元組,然后按GROUP子句(分組子句)中指定列的值分組,再提取滿足HAVING子句中組條件表達(dá)式的那些組,按SELECT子句給出的列名或列表達(dá)式求值輸出。ORDER子句(排序子句)是對(duì)輸出的目標(biāo)表進(jìn)行排序,可附加說明ASC(升序)或DESC(降序)SQL DML的數(shù)據(jù)更新語(yǔ)句INSERT 插入語(yǔ)句DELETE 刪除語(yǔ)句UPDATE 修改語(yǔ)句SQL的訪問控制SQL的訪問控制功能主要是指對(duì)用戶訪問數(shù)據(jù)的控制。有授權(quán)語(yǔ)句和回收語(yǔ)句。授權(quán)語(yǔ)句的格式如下:GRANT 權(quán)限表ON 表名TO 用戶名表WITH GRANT OPTION該語(yǔ)句把表的使用權(quán)授予指定的若干用戶。在有WITH GRANT OPTION短語(yǔ)時(shí),被授權(quán)的用戶還可將獲得的權(quán)限再轉(zhuǎn)授給其他用戶。權(quán)限表中的權(quán)限可以有:SELECT, INSERT, DELETE, UPDATE, EXPAND, INDEX, ALL PRIVILEGES?;厥照Z(yǔ)句格式:REVOKE 權(quán)限表ON 表名FROM 用戶名表該語(yǔ)句把已授給指定用戶的在指定表上的使用權(quán)限收回。嵌入式SQL由于SQL是基于關(guān)系模型的語(yǔ)言,而高級(jí)語(yǔ)言是基于整數(shù)、實(shí)數(shù)、字符、記錄、數(shù)組等的數(shù)據(jù)類型,因此兩者之間有很大的區(qū)別,稱為有縫隙。為了能在宿主語(yǔ)言的程序中嵌入SQL語(yǔ)句,有一些規(guī)定:I.在程序中要區(qū)分SQL語(yǔ)句和宿主語(yǔ)言的語(yǔ)句;II.在嵌入的SQL語(yǔ)句中可以引用宿主語(yǔ)言的程序變量,但主語(yǔ)言的語(yǔ)句不能引用數(shù)據(jù)庫(kù)中的各種變量(屬性名、關(guān)系名),SQL的集合處理方式與宿主語(yǔ)言的單記錄處理方式之間的協(xié)調(diào)用游標(biāo)技術(shù)實(shí)現(xiàn)。1.6 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開發(fā)是一項(xiàng)軟件工程,但又有自身的特點(diǎn),所以稱為“數(shù)據(jù)庫(kù)工程”。數(shù)據(jù)庫(kù)系統(tǒng)從開始規(guī)劃、設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)到最后被新的系統(tǒng)取代而停止使用的整個(gè)期間,稱為數(shù)據(jù)庫(kù)系統(tǒng)生存期。此生存期可分為7個(gè)階段:規(guī)劃、需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、實(shí)現(xiàn)、運(yùn)行和維護(hù)。按照規(guī)范設(shè)計(jì)的方法,考慮數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)開發(fā)全過程,將數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下六個(gè)階段:需求分析階段需求收集和分析,結(jié)果得到數(shù)據(jù)字典描述的數(shù)據(jù)需求(和數(shù)據(jù)流圖描述的處理需求)。概念結(jié)構(gòu)設(shè)計(jì)階段通過對(duì)用戶需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型,可以用E-R圖表示。邏輯結(jié)構(gòu)設(shè)計(jì)階段將概念結(jié)構(gòu)轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型(例如關(guān)系模型),并對(duì)其進(jìn)行優(yōu)化。數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存取方法)。數(shù)據(jù)庫(kù)實(shí)施階段運(yùn)用DBMS提供的數(shù)據(jù)語(yǔ)言(例如SQL)及其宿主語(yǔ)言(例如C),根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫(kù),編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫(kù),并進(jìn)行試運(yùn)行。數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)經(jīng)過試運(yùn)行后即可投入正式運(yùn)行。在數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行過程中必須不斷地對(duì)其進(jìn)行評(píng)價(jià)、調(diào)整與修改。設(shè)計(jì)一個(gè)完善的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)不可能一蹴而就,它往往是上述六個(gè)階段的不斷反復(fù)。1.7關(guān)系數(shù)據(jù)庫(kù)規(guī)范化理論為了使數(shù)據(jù)庫(kù)設(shè)計(jì)的方法走向完備,人們研究了規(guī)范化理論,指導(dǎo)我們?cè)O(shè)計(jì)規(guī)范的數(shù)據(jù)庫(kù)模式。按屬性間依賴情況來(lái)區(qū)分,關(guān)系規(guī)范化的程度為第一范式、第二范式、第三范式、BCNF范式和第四范式等。函數(shù)依賴數(shù)據(jù)依賴是現(xiàn)實(shí)世界中屬性間聯(lián)系和約束的抽象,是數(shù)據(jù)的內(nèi)在性質(zhì)。函數(shù)依賴(functional dependency,F(xiàn)D )是一種最重要、最基本的數(shù)據(jù)依賴。其具體定義如下:設(shè)有關(guān)系模式R(U),X和Y是屬性集U的子集,F(xiàn)D是行為XY的一個(gè)命題,只要r是R的關(guān)系,對(duì)r中任意兩個(gè)元組都有“X值相等蘊(yùn)涵Y值相等”,那么函數(shù)依賴XY在關(guān)系模式R(U)中成立。FD與侯選鍵之間的關(guān)系:若存在X-U,并且不存在X的任意真子集X1,使得X1-U成立,那么就稱X為關(guān)系的一個(gè)侯選鍵。函數(shù)依賴還有幾條推理規(guī)則:自反性;增廣性;傳遞性;并規(guī)則;分解規(guī)則;偽傳遞規(guī)則;模式分解:目的是消除冗余和操作異常問題模式分解的三個(gè)定義:l 分解具有“無(wú)損連接性”l 分解要“保持函數(shù)依賴”l 分解既要“保持函數(shù)依賴”,又要具有“無(wú)損連接性”。關(guān)系模式分解的兩個(gè)特性實(shí)際涉及到兩個(gè)數(shù)據(jù)庫(kù)模式的等價(jià)性問題。包括數(shù)據(jù)等價(jià)和依賴等價(jià)兩個(gè)方面:數(shù)據(jù)等價(jià):兩個(gè)數(shù)據(jù)庫(kù)實(shí)例應(yīng)表示同樣的信息內(nèi)容,用“無(wú)損聯(lián)接”衡量。依賴等價(jià):兩個(gè)數(shù)據(jù)庫(kù)模式應(yīng)有相互邏輯關(guān)系的函數(shù)依賴集,此時(shí)數(shù)據(jù)的語(yǔ)義是不會(huì)出現(xiàn)差錯(cuò)的。例:關(guān)系模式 S-L-C(SNO,SDEPT,SLOC,CNO,G)中,SLOC為學(xué)生的住處,并且每個(gè)系的學(xué)生住在同一個(gè)地方。這里碼為(SNO,CNO)。函數(shù)依賴有:(SNO,CNO) G SNOSDEPT,(SNO,CNO) SDEPT SNOSLOC, (SNO,CNO) SLOCSDEPTSLOC用投影分解把關(guān)系模式S-L-C分解為3NF范式,且保持函數(shù)依賴。解法:對(duì)RU,F中的函數(shù)依賴集F進(jìn)行“極小化處理”。F= SNO,CNOG,SNOSDEPT,SDEPTSLOC 。 R中沒有不在F中出現(xiàn)的屬性。不存在XAF,且XA=U,接著做第 = 4 * GB2 步。對(duì)F按具有相同左部的原則分組。r=SC SNO,CNO,G ,SNO,CNOG,S-D SNO,SDEPT , SNOSDEPT,D-L SDEPT,SLOC , SDEPTSLOC范式范式(normal form,NF)是衡量關(guān)系模式的優(yōu)劣的標(biāo)準(zhǔn)。范式有很多種,與數(shù)據(jù)依賴有著直接的聯(lián)系。第一范式1NF如果關(guān)系模式R中,每個(gè)分量是不可分的數(shù)據(jù)項(xiàng),就稱R屬于第一范式。第二范式2NF若關(guān)系模式R屬于1NF,且每個(gè)非主屬性完全函數(shù)依賴于候選關(guān)鍵字,則稱R屬于第二范式。第三范式3NF若關(guān)系模式R屬于1NF,且每個(gè)非主屬性都不傳遞依賴于R的候選關(guān)鍵字,則稱R屬于第三范式。這里的主屬性是指鍵的屬性,而不是任何鍵的屬性就是非主屬性BC范式BCNF若關(guān)系模式R屬于1NF,且每個(gè)屬性都不傳遞依賴于R的候選關(guān)鍵字,則稱R屬于BC范式。由上可知,4種范式之間的關(guān)系:BCNF3NF2NF1NF1.8數(shù)據(jù)庫(kù)保護(hù)n 概述在數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行時(shí),DBMS要對(duì)數(shù)據(jù)庫(kù)進(jìn)行監(jiān)控,以保證整個(gè)系統(tǒng)的正常運(yùn)轉(zhuǎn),保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)安全可靠、正確有效,防止各種錯(cuò)誤的產(chǎn)生,這就是對(duì)數(shù)據(jù)庫(kù)的保護(hù),有時(shí)也稱為“數(shù)據(jù)控制”。這具體包括以下四個(gè)方面:u 數(shù)據(jù)庫(kù)的恢復(fù)u 完整性控制(主鍵約束,外鍵約束,屬性的值域約束)u 并發(fā)控制(瑣機(jī)制)u 安全性控制(存儲(chǔ)控制,審計(jì),視圖保護(hù)和日志監(jiān)視)n 事務(wù) 事務(wù)在數(shù)據(jù)庫(kù)里面是一個(gè)十分重要的概念。數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行的基本工作單位是事務(wù)。它相當(dāng)于操作系統(tǒng)中的進(jìn)程,一個(gè)事務(wù)由應(yīng)用程序中的一組操作序列組成。實(shí)際上,事務(wù)可以看作是一個(gè)原子,是一個(gè)不可分割的操作序列。事務(wù)中包括的所有操作要么都執(zhí)行,要么都不執(zhí)行。事務(wù)通常以BEGIN TRANSACTION語(yǔ)句開始,它主要涉及兩個(gè)語(yǔ)句。、u 事務(wù)提交語(yǔ)句COMMITu 事務(wù)回滾語(yǔ)句ROLLBACK事務(wù)的特性:事務(wù)具有四個(gè)特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續(xù)性(Durability)。這個(gè)四個(gè)特性也簡(jiǎn)稱為ACID特性。1原子性:事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。2一致性:事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。因此當(dāng)數(shù)據(jù)庫(kù)只包含成功事務(wù)提交的結(jié)果時(shí),就說數(shù)據(jù)庫(kù)處于一致性狀態(tài)。如果數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的操作全部撤消,滾回到事務(wù)開始時(shí)的一致狀態(tài)。3隔離性:一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。4持續(xù)性:持續(xù)性也稱永久性(Permanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其執(zhí)行結(jié)果有任何影響。數(shù)據(jù)庫(kù)恢復(fù):盡管數(shù)據(jù)庫(kù)系統(tǒng)中采取了各種保護(hù)措施來(lái)防止數(shù)據(jù)庫(kù)的安全性和完整性被破壞,保證并發(fā)事務(wù)的正確執(zhí)行,但是計(jì)算機(jī)系統(tǒng)中硬件的故障、軟件的錯(cuò)誤、操作員的失誤以及惡意的破壞仍是不可避免的,這些故障輕則造成運(yùn)行事務(wù)非正常中斷,影響數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)中全部或部分?jǐn)?shù)據(jù)丟失,因此數(shù)據(jù)庫(kù)管理系統(tǒng)(恢復(fù)子系統(tǒng))必須具有把數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為一致狀態(tài)或完整狀態(tài))的功能,這就是數(shù)據(jù)庫(kù)的恢復(fù)。故障的種類:一、事務(wù)內(nèi)部的故障 事務(wù)內(nèi)部的故障有的是可以通過事務(wù)程序本身發(fā)現(xiàn)的(見下面轉(zhuǎn)帳事務(wù)的例子),有的是非預(yù)期的,不能由事務(wù)程序處理的。二、系統(tǒng)故障 系統(tǒng)故障是指造成系統(tǒng)停止運(yùn)轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動(dòng)。例如,特定類型的硬件錯(cuò)誤(CPU故障)、操作系統(tǒng)故障、DBMS代碼錯(cuò)誤、突然停電等等。這類故障影響正在運(yùn)行的所有事務(wù),但不破壞數(shù)據(jù)庫(kù)。這時(shí)主存內(nèi)容,尤其是數(shù)據(jù)庫(kù)緩沖區(qū)(在內(nèi)存)中的內(nèi)容都被丟失,所有運(yùn)行事務(wù)都非正常終止。發(fā)生系統(tǒng)故障時(shí),一些尚未完成的事務(wù)的結(jié)果可能已送入物理數(shù)據(jù)庫(kù),有些已完成的事務(wù)可能有一部分甚至全部留在緩沖區(qū),尚未寫回到磁盤上的物理數(shù)據(jù)庫(kù)中,從而造成數(shù)據(jù)庫(kù)可能處于不正確的狀態(tài)。為保證數(shù)據(jù)一致性,恢復(fù)子系統(tǒng)必須在系統(tǒng)重新啟動(dòng)時(shí)讓所有非正常終止的事務(wù)回滾,強(qiáng)行撤消(UNDO)所有未完成事務(wù)。重做(Redo)所有已提交的事務(wù),以將數(shù)據(jù)庫(kù)真正恢復(fù)到一致狀態(tài)。三、介質(zhì)故障 系統(tǒng)故障常稱為軟故障(Soft Crash),介質(zhì)故障稱為硬故障(Hard Crash)。硬故障指外存故障,如磁盤損壞、磁頭碰撞,瞬時(shí)強(qiáng)磁場(chǎng)干擾等。這類故障將破壞數(shù)據(jù)庫(kù)或部分?jǐn)?shù)據(jù)庫(kù),并影響正在存取這部分?jǐn)?shù)據(jù)的所有事務(wù)。這類故障比前兩類故障發(fā)生的可能性小得多,但破壞性最大。四、計(jì)算機(jī)病毒 計(jì)算機(jī)病毒是具有破壞性、可以自我復(fù)制的計(jì)算機(jī)程序。計(jì)算機(jī)病毒已成為計(jì)算機(jī)系統(tǒng)的主要威脅,自然也是數(shù)據(jù)庫(kù)系統(tǒng)的主要威脅。因此數(shù)據(jù)庫(kù)一旦被破壞仍要用恢復(fù)技術(shù)把數(shù)據(jù)庫(kù)加以恢復(fù)?;謴?fù)策略:1事務(wù)故障的恢復(fù) 事務(wù)故障是指事務(wù)在運(yùn)行至正常終止點(diǎn)前被中止,這時(shí)恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(UNDO)此事務(wù)已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改。事務(wù)故障的恢復(fù)是由系統(tǒng)自動(dòng)完成的,對(duì)用戶是透明的。系統(tǒng)的恢復(fù)步驟是:. 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。. 對(duì)該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫(kù)。這樣,如果記錄中是插入操作,則相當(dāng)于做刪除操作(因此時(shí)“更新前的值”為空)。若記錄中是刪除操作,則做插入操作,若是修改操作,則相當(dāng)于用修改前值代替修改后值。. 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。. 如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)就完成了。2系統(tǒng)故障的恢復(fù) 前面已講過,系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致狀態(tài)的原因有兩個(gè),一是未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能已寫入數(shù)據(jù)庫(kù),二是已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū)沒來(lái)得及寫入數(shù)據(jù)庫(kù)。因此恢復(fù)操作就是要撤消故障發(fā)生時(shí)未完成的事務(wù),重做已完成的事務(wù)。 系統(tǒng)故障的恢復(fù)是由系統(tǒng)在重新啟動(dòng)時(shí)自動(dòng)完成的,不需要用戶干預(yù)。系統(tǒng)的恢復(fù)步驟是:. 正向掃描日志文件(即從頭掃描日志文件),找出在故障發(fā)生前已經(jīng)提交的事務(wù)(這些事務(wù)既有BEGIN TRANSACTION記錄,也有COMMIT記錄),將其事務(wù)標(biāo)識(shí)記入重做(REDO)隊(duì)列。同時(shí)找出故障發(fā)生時(shí)尚未完成的事務(wù)(這些事務(wù)只有BEGIN TRANSACTION記錄,無(wú)相應(yīng)的COMMIT記錄),將其事務(wù)標(biāo)識(shí)記入撤消(UNDO)隊(duì)列。. 對(duì)撤消隊(duì)列中的各個(gè)事務(wù)進(jìn)行撤消(UNDO)處理。進(jìn)行UNDO處理的方法是,反向掃描日志文件,對(duì)每個(gè)UNDO事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫(kù)。. 對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做(REDO)處理。 進(jìn)行REDO處理的方法是:正向掃描日志文件,對(duì)每個(gè)REDO事務(wù)重新執(zhí)行日志文件登記的操作。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫(kù)。3介質(zhì)故障的恢復(fù) 發(fā)生介質(zhì)故障后,磁盤上的物理數(shù)據(jù)和日志文件被破壞,這是最嚴(yán)重的一種故障,恢復(fù)方法是重裝數(shù)據(jù)庫(kù),然后重做已完成的事務(wù)。具體地說就是:. 裝入最新的數(shù)據(jù)庫(kù)后備副本(離故障發(fā)生時(shí)刻最近的轉(zhuǎn)儲(chǔ)副本),使數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài)。 對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,還須同時(shí)裝入轉(zhuǎn)儲(chǔ)開始時(shí)刻的日志文件副本,利用恢復(fù)系統(tǒng)故障的方法(即REDO+UNDO),才能將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)。. 裝入相應(yīng)的日志文件副本(轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的日志文件副本),重做已完成的事務(wù)。即: 首先掃描日志文件,找出故障發(fā)生時(shí)已提交的事務(wù)的標(biāo)識(shí),將其記入重做隊(duì)列。 然后正向掃描日志文件,對(duì)重做隊(duì)列中的所有事務(wù)進(jìn)行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫(kù)。這樣就可以將數(shù)據(jù)庫(kù)恢復(fù)至故障前某一時(shí)刻的一致狀態(tài)了。介質(zhì)故障的恢復(fù)需要DBA介入。但DBA只需要重裝最近轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本和有關(guān)的各日志文件副本,然后執(zhí)行系統(tǒng)提供的恢復(fù)命令即可,具體的恢復(fù)操作仍由DBMS完成。n并發(fā)控制在多用戶共享系統(tǒng)中,許多事務(wù)可能同時(shí)對(duì)同一個(gè)數(shù)據(jù)進(jìn)行操作,這時(shí)候就產(chǎn)生了并發(fā)控制的問題。DMBS的并發(fā)控制子系統(tǒng)負(fù)責(zé)協(xié)調(diào)并發(fā)事務(wù)的執(zhí)行,保證數(shù)據(jù)庫(kù)的完整性不受破壞,同時(shí)避免用戶得到不正確的數(shù)據(jù)。同時(shí)并發(fā)方式:在多處理系統(tǒng)中,每個(gè)處理機(jī)可以運(yùn)行一個(gè)事務(wù),多個(gè)處理機(jī)可以同時(shí)運(yùn)行多個(gè)事務(wù),實(shí)現(xiàn)多個(gè)事務(wù)真正的并行運(yùn)行,這種并行方式稱為同時(shí)并發(fā)方式。并發(fā)控制機(jī)制是衡量一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)性能的重要標(biāo)志之一。數(shù)據(jù)庫(kù)的并發(fā)操作通??赡軒?lái)以下的問題:u 丟失更新問題u 不一致分析問題(讀過時(shí)的數(shù)據(jù))u 依賴于未提交更新問題(讀“臟”數(shù)據(jù))處理并發(fā)控制的主要方法是采用封鎖技術(shù)。封鎖是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。封鎖:所謂封鎖就是事務(wù)T在對(duì)某個(gè)數(shù)據(jù)對(duì)象例如表、記錄等操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對(duì)象。 基本的封鎖類型有兩種:排它鎖(Exclusive Locks,簡(jiǎn)記為X鎖) 和共享鎖(Share Locks,簡(jiǎn)記為S鎖)。排它鎖:排它鎖又稱為寫鎖。若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對(duì)A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其它事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。共享鎖:共享鎖又稱為讀鎖。若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上S鎖,則事務(wù)T可以讀A,但不能修改A,其它事務(wù)只能再對(duì)A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其它事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對(duì)A做任何修改。有兩種類型:u 排他型封鎖(X封鎖)u 共享型封鎖(S封鎖)在運(yùn)用X鎖和S鎖這兩種基本封鎖,對(duì)數(shù)據(jù)對(duì)象加鎖時(shí),還需要約定一些規(guī)則,例如應(yīng)何時(shí)申請(qǐng)X鎖或S鎖、持鎖時(shí)間、何時(shí)釋放等。我們稱這些規(guī)則為封鎖協(xié)議(Locking Protocol)。對(duì)封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議。下面介紹三級(jí)封鎖協(xié)議。對(duì)并發(fā)操作的不正確調(diào)度可能會(huì)帶來(lái)丟失修改、不可重復(fù)讀和讀“臟”數(shù)據(jù)等不一致性問題,三級(jí)封鎖協(xié)議分別在不同程度上解決了這一問題。為并發(fā)操作的正確調(diào)度提供一定的保證。不同級(jí)別的封鎖協(xié)議達(dá)到的系統(tǒng)一致性級(jí)別是不同的。一級(jí)封鎖協(xié)議是:事務(wù)T在修改數(shù)據(jù)R之前必須先對(duì)其加X鎖,直到事務(wù)結(jié)束才釋放。事務(wù)結(jié)束包括正常結(jié)束(COMMIT)和非正常結(jié)束(ROLLBACK)。二級(jí)封鎖協(xié)議是:一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后即可釋放S鎖。二級(jí)封鎖協(xié)議除防止了丟失修改,還可進(jìn)一步防止讀“臟”數(shù)據(jù)三級(jí)封鎖協(xié)議是:一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,直到事務(wù)結(jié)束才釋放。三級(jí)封鎖協(xié)議除防止了丟失修改和不讀臟數(shù)據(jù)外,還進(jìn)一步防止了不可重復(fù)讀和操作系統(tǒng)一樣,封鎖的方法可能引起活鎖和死鎖。一活鎖活鎖:如果事務(wù)T1封鎖了數(shù)據(jù)R,事務(wù)T2又請(qǐng)求封鎖R,于是T2等待。T3也請(qǐng)求封鎖R,當(dāng)T1釋放了R上的封鎖之后系統(tǒng)首先批準(zhǔn)了T3的請(qǐng)求,T2仍然等待。然后T4又請(qǐng)求封鎖R,當(dāng)T3釋放了R上的封鎖之后系統(tǒng)又批準(zhǔn)了T4的請(qǐng)求,.,T2有可能永遠(yuǎn)等待,這就是活鎖的情形二死鎖死鎖:如果事務(wù)T1封鎖了數(shù)據(jù)R1,T2封鎖了數(shù)據(jù)R2,然后T1又請(qǐng)求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖。接著T2又申請(qǐng)封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現(xiàn)了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個(gè)事務(wù)永遠(yuǎn)不能結(jié)束,形成死鎖。死鎖的預(yù)防: 在數(shù)據(jù)庫(kù)中,產(chǎn)生死鎖的原因是兩個(gè)或多個(gè)事務(wù)都已封鎖了一些數(shù)據(jù)對(duì)象,然后又都請(qǐng)求對(duì)已被其他事務(wù)封鎖的數(shù)據(jù)對(duì)象加鎖,從而出現(xiàn)死等待。防止死鎖的發(fā)生其實(shí)就是要破壞產(chǎn)生死鎖的條件。預(yù)防死鎖通常有兩種方法:一次封鎖法 : 一次封鎖法要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行。一次封鎖法雖然可以有效地防止死鎖的發(fā)生,但也存在問題,一次就將以后要用到的全部數(shù)據(jù)加鎖,勢(shì)必?cái)U(kuò)大了封鎖的范圍,從而降低了系統(tǒng)的并發(fā)度。順序封鎖法:順序封鎖法是預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順序?qū)嵭蟹怄i。順序封鎖法可以有效地防止死鎖,但也同樣存在問題。事務(wù)的封鎖請(qǐng)求可以隨著事務(wù)的執(zhí)行而動(dòng)態(tài)地決定,很難事先確定每一個(gè)事務(wù)要封鎖哪些對(duì)象,因此也就很難按規(guī)定的順序去施加封鎖。 可見,在操作系統(tǒng)中廣為采用的預(yù)防死鎖的策略并不很適合數(shù)據(jù)庫(kù)的特點(diǎn),因此DBMS在解決死鎖的問題上普遍采用的是診斷并解除死鎖的方法。2. 死鎖的診斷與解除 超時(shí)法 如果一個(gè)事務(wù)的等待時(shí)間超過了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖。超時(shí)法實(shí)現(xiàn)簡(jiǎn)單,但其不足也很明顯。一是有可能誤判死鎖,事務(wù)因?yàn)槠渌蚴沟却龝r(shí)間超過時(shí)限,系統(tǒng)會(huì)誤認(rèn)為發(fā)生了死鎖。二是時(shí)限若設(shè)置得太長(zhǎng),死鎖發(fā)生后不能及時(shí)發(fā)現(xiàn)。等待圖法 事務(wù)等待圖是一個(gè)有向圖G=(T,U)。 T為結(jié)點(diǎn)的集合,每個(gè)結(jié)點(diǎn)表示正運(yùn)行的事務(wù);U為邊的集合,每條邊表示事務(wù)等待的情況。若T1等待T2 ,則T1、T2之間劃一條有向邊,從T1指向T2。事務(wù)等待圖動(dòng)態(tài)地反映了所有事務(wù)的等待情況。并發(fā)控制子系統(tǒng)周期性地(比如每隔1分鐘)檢測(cè)事務(wù)等待圖,如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。 DBMS的并發(fā)控制子系統(tǒng)一旦檢測(cè)到系統(tǒng)中存在死鎖,就要設(shè)法解除。通常采用的方法是選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),將其撤消,釋放此事務(wù)持有的所有的鎖,使其它事務(wù)得以繼續(xù)運(yùn)行下去。當(dāng)然,對(duì)撤消的事務(wù)所執(zhí)行的數(shù)據(jù)修改操作必須加以恢復(fù)。如果一個(gè)事務(wù)運(yùn)行過程中沒有其他事務(wù)同時(shí)運(yùn)行,也就是說它沒有受到其他事務(wù)的干擾,那么就可以認(rèn)為該事務(wù)的運(yùn)行結(jié)果是正常的或者預(yù)想的。因此將所有事務(wù)串行起來(lái)的調(diào)度策略一定是正確的調(diào)度策略。雖然以不同的順序串行執(zhí)行事務(wù)可能會(huì)產(chǎn)生不同的結(jié)果,但由于不會(huì)將數(shù)據(jù)庫(kù)置于不一致狀態(tài),所以都是正確的。定義:多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行它們時(shí)的結(jié)果相同。我們稱這種調(diào)度策略為可串行化(Serializable)的調(diào)度。另外,在封鎖技術(shù)方面,SQL提供事務(wù)的四種一致性級(jí)別,從高到低分別是:u serializable(可串行化)u repeatable read(可重復(fù)讀)u read committed(讀提交數(shù)據(jù))u read uncommitted(可讀未提交數(shù)據(jù))數(shù)據(jù)庫(kù)安全:數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。為降低進(jìn)而消除對(duì)系統(tǒng)的安全攻擊,尤其是彌補(bǔ)原有系統(tǒng)在安全保護(hù)方面的缺陷,在計(jì)算機(jī)安全技術(shù)方面逐步建立了一套可信標(biāo)準(zhǔn)。在目前各國(guó)所引用或制定的一系列安全標(biāo)準(zhǔn)中,最重要的當(dāng)推1985年美國(guó)國(guó)防部(DoD)正式頒布的DoD可信計(jì)算機(jī)系統(tǒng)評(píng)估標(biāo)準(zhǔn)(Trusted Computer System Evaluation Criteria,簡(jiǎn)記為TCSEC)1或DoD85)。制定這個(gè)標(biāo)準(zhǔn)的目的主要有:提供一種標(biāo)準(zhǔn),使用戶可以對(duì)其計(jì)算機(jī)系統(tǒng)內(nèi)敏感信息安全操作的可信程度做出評(píng)估。給計(jì)算機(jī)行業(yè)的制造商提供一種可循的指導(dǎo)規(guī)則,使其產(chǎn)品能夠更好的滿足敏感應(yīng)用的安全需求。 TCSEC又稱桔皮書,1991年4月美國(guó)NCSC(國(guó)家計(jì)算機(jī)安全中心)頒布了可信計(jì)算機(jī)系統(tǒng)評(píng)估標(biāo)準(zhǔn)關(guān)于可信數(shù)據(jù)庫(kù)系統(tǒng)的解釋( Trusted Database Interpretation 簡(jiǎn)記為TDI,即紫皮書)。將TCSEC擴(kuò)展到數(shù)據(jù)庫(kù)管理系統(tǒng)。TDI中定義了數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)中需滿足和用以進(jìn)行安全性級(jí)別評(píng)估的標(biāo)準(zhǔn)。在TCSEC中建立的安全級(jí)別之間具有一種偏序向下兼容的關(guān)系,即較高安全性級(jí)別提供的安全保護(hù)要包含較低級(jí)別的所有保護(hù)要求,同時(shí)提供更多或更完善的保護(hù)能力。下面,我們簡(jiǎn)略地對(duì)各個(gè)等級(jí)作一介紹。D級(jí): D級(jí)是最低級(jí)別。保留D級(jí)的目的是為了將一切不符合更高標(biāo)準(zhǔn)的系統(tǒng),統(tǒng)統(tǒng)歸于D組。如DOS就是操作系統(tǒng)中安全標(biāo)準(zhǔn)為D的典型例子。它具有操作系統(tǒng)的基本功能,如文件系統(tǒng),進(jìn)程調(diào)度等等,但在安全性方面幾乎沒有什么專門的機(jī)制來(lái)保障。C1級(jí):只提供了非常初級(jí)的自主安全保護(hù)。能夠?qū)崿F(xiàn)對(duì)用戶和數(shù)據(jù)的分離,進(jìn)行自主存取控制(DAC),保護(hù)或限制用戶權(quán)限的傳播?,F(xiàn)有的商業(yè)系統(tǒng)往往稍作改進(jìn)即可滿足要求。C2級(jí):實(shí)際是安全產(chǎn)品的最低檔次,提供受控的存取保護(hù),即將C1級(jí)的DAC進(jìn)一步細(xì)化,以個(gè)人身份注冊(cè)負(fù)責(zé),并實(shí)施審計(jì)和資源隔離。很多商業(yè)產(chǎn)品已得到該級(jí)別的認(rèn)證。達(dá)到C2級(jí)的產(chǎn)品在其名稱中往往不突出“安全”(Security)這一特色,如操作系統(tǒng)中Microsoft的Windows NT 3.5,數(shù)字設(shè)備公司的Open VMS VAX 6.0和6.1。數(shù)據(jù)庫(kù)產(chǎn)品有Oracle公司的Oracle 7,Sybase公司的 SQL Server 11.0.6 等。B1級(jí):標(biāo)記安全保護(hù)。對(duì)系統(tǒng)的數(shù)據(jù)加以標(biāo)記,并對(duì)標(biāo)記的主體和客體實(shí)施強(qiáng)制存取控制(MAC)以及審計(jì)等安全機(jī)制。B1級(jí)能夠較好地滿足大型企業(yè)或一般政府部門對(duì)于數(shù)據(jù)的安全需求,這一級(jí)別的產(chǎn)品才認(rèn)為是真正意義上的安全產(chǎn)品。滿足此級(jí)別的產(chǎn)品前一般多冠以“安全”(Security)或“可信的”(Trusted)字樣,作為區(qū)別于普通產(chǎn)品的安全產(chǎn)品出售。例如,操作系統(tǒng)方面,典型的有數(shù)字設(shè)備公司的SEVMS VAX Version 6.0,惠普公司的HP-UX BLS release 9.0.9+ 。數(shù)據(jù)庫(kù)方面則有Oracle公司的Trusted Oracle 7,Sybase公司的Secure SQL Server version 11.0.6,Informix公司的Incorporated INFORMIX-OnLine / Secure 5.0等。B2級(jí):結(jié)構(gòu)化保護(hù)。建立形式化的安全策略模型并對(duì)系統(tǒng)內(nèi)的所有主體和客體實(shí)施DAC和MAC。 從互連網(wǎng)上的最新資料看,經(jīng)過認(rèn)證的、B2級(jí)以上的安全系統(tǒng)非常稀少。例如,符合B2標(biāo)準(zhǔn)的操作系統(tǒng)只有Trusted Information Systems公司的Trusted XENIX一種產(chǎn)品,符合B2標(biāo)準(zhǔn)的網(wǎng)絡(luò)產(chǎn)品只有Cryptek Secure Communications公司的LLC VSLAN一種產(chǎn)品,而數(shù)據(jù)庫(kù)方面則沒有符合B2標(biāo)準(zhǔn)的產(chǎn)品。B3級(jí):安全域。該級(jí)的TCB必須滿足訪問監(jiān)控器的要求,審計(jì)跟蹤能力更強(qiáng),并提供系統(tǒng)恢復(fù)過程。A1級(jí):驗(yàn)證設(shè)計(jì),即提供B3級(jí)保護(hù)的同時(shí)給出系統(tǒng)的形式化設(shè)計(jì)說明和驗(yàn)證以確信各安全保護(hù)真正實(shí)現(xiàn)。 B2以上的系統(tǒng)標(biāo)準(zhǔn)更多地還處于理論研究階段,產(chǎn)品化以至商品化的程度都不高,其應(yīng)用也多限于一些特殊的部門如軍隊(duì)等。但美國(guó)正在大力發(fā)展安全產(chǎn)品,試圖將目前僅限于少數(shù)領(lǐng)域應(yīng)用的B2安全級(jí)別或更高安全級(jí)別下放到商業(yè)應(yīng)用中來(lái),并逐步成為新的商業(yè)標(biāo)準(zhǔn)。 可以看出,支持自主存取控制的DBMS大致屬于C級(jí),而支持強(qiáng)制存取控制的DBMS則可以達(dá)到B1級(jí)。當(dāng)然,存取控制僅是安全性標(biāo)準(zhǔn)的一個(gè)重要方面(即安全策略方面)不是全部。為了使DBMS達(dá)到一定的安全級(jí)別,還需要在其它三個(gè)方面提供相應(yīng)的支持。例如審計(jì)功能就是DBMS達(dá)到C2以上安全級(jí)別必不可少的一項(xiàng)指標(biāo)。下面介紹Oracle的安全性措施。Oracle的安全性措施主要有三個(gè)方面:一是用戶標(biāo)識(shí)和鑒定;二是授權(quán)和檢查機(jī)制;三是審計(jì)技術(shù);除此之外Oracle還允許用戶通過出發(fā)器靈活定義自己的安全性措施。用戶標(biāo)識(shí)和鑒定授權(quán)與檢查機(jī)制系統(tǒng)權(quán)限數(shù)據(jù)庫(kù)對(duì)象的權(quán)限表級(jí)安全性行級(jí)安全性列級(jí)安全性審計(jì)技術(shù)用戶定義的安全性措施隨著計(jì)算機(jī)特別是計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,數(shù)據(jù)的共享日益加強(qiáng),數(shù)據(jù)的安全保密越來(lái)越重要。DBMS是管理數(shù)據(jù)的核心,因而其自身必須具有一整套完整而有效的安全性機(jī)制。 可信計(jì)算機(jī)系統(tǒng)評(píng)測(cè)標(biāo)準(zhǔn)TCSEC/TDI是目前各國(guó)所引用或制定的一系列安全標(biāo)準(zhǔn)中最重要的一個(gè)。 TCSEC/TDI從安全策略、責(zé)任、保證和文檔四個(gè)方面描述了安全性級(jí)別的指標(biāo)。按照這些指標(biāo),目前許多大型DBMS 達(dá)到了C2級(jí),其安全版本達(dá)到了B1。 實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)安全性的技術(shù)和方法有多種,最重要的是存取控制技術(shù)和審計(jì)技術(shù)。C2級(jí)的DBMS必須具有自主存取控制功能和初步的審計(jì)功能,B1的DBMS必須具有強(qiáng)制存取控制和增強(qiáng)的審計(jì)功能。自主存取控制功能一般是通過SQL 的GRANT語(yǔ)句和REVOKE語(yǔ)句來(lái)實(shí)現(xiàn)的。1.9數(shù)據(jù)倉(cāng)庫(kù)與分布式數(shù)據(jù)庫(kù)數(shù)據(jù)倉(cāng)庫(kù):隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展和企業(yè)界不斷提出新的需求,數(shù)據(jù)倉(cāng)庫(kù)技術(shù)應(yīng)運(yùn)而生。傳統(tǒng)的數(shù)據(jù)庫(kù)技術(shù)是單一的數(shù)據(jù)資源,即數(shù)據(jù)庫(kù)為中心,進(jìn)行從事事務(wù)處理、批處理到?jīng)Q策分析等各種類型的數(shù)據(jù)處理工作。近年來(lái),隨著計(jì)算機(jī)應(yīng)用,,網(wǎng)絡(luò)計(jì)算,開始向兩個(gè)不同的方向拓展,一是廣度計(jì)算,一是深度計(jì)算,廣度計(jì)算的含義是把計(jì)算機(jī)的應(yīng)用范圍盡量擴(kuò)大,同時(shí)實(shí)現(xiàn)廣泛的數(shù)據(jù)交流,互聯(lián)網(wǎng)就是廣度計(jì)算的特征,另一方面就是人們對(duì)以往計(jì)算機(jī)的簡(jiǎn)單數(shù)據(jù)操作,提出了更高的要求,希望計(jì)算機(jī)能夠更多的參與數(shù)據(jù)分析與決策的制定等領(lǐng)域。特別是數(shù)據(jù)庫(kù)處理可以大致地劃分為兩大類:操作型處理和分析型處理(或信息型處理)。這種分離,劃清了數(shù)據(jù)處理的分析型環(huán)境與操作型環(huán)境之間的界限,從而由原來(lái)的以單一數(shù)據(jù)庫(kù)為中心的數(shù)據(jù)環(huán)境發(fā)展為一種新環(huán)境:體系化環(huán)境。數(shù)據(jù)庫(kù)系統(tǒng)作為數(shù)據(jù)管理手段,從它的誕生開始,就主要用于事務(wù)處理。經(jīng)過數(shù)十年的發(fā)展,在這些數(shù)據(jù)庫(kù)中已經(jīng)保存了大量的日常業(yè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度門窗行業(yè)綠色建筑標(biāo)準(zhǔn)合同
- 2025年度高端模具精密維修與再制造合同3篇
- 專利技術(shù)所有權(quán)變更服務(wù)合同版
- 2025年度智能裝備行業(yè)派遣人員勞動(dòng)合同模板3篇
- 二零二五年度醫(yī)療健康行業(yè)聘用合同范本
- 2025年度水資源抽水利用技術(shù)合作開發(fā)合同4篇
- 二零二五年度臨時(shí)餐飲場(chǎng)地租賃合同標(biāo)準(zhǔn)范本2篇
- 2025年度塑料袋品牌授權(quán)使用合同
- 2025年度新型木模板工程承包合同范本4篇
- 臨時(shí)工用工勞動(dòng)合同范本2025年全新發(fā)布
- 2024-2029年中國(guó)制漿系統(tǒng)行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 大門封條模板
- 洛奇化石復(fù)原腳本
- 人教版三年級(jí)上冊(cè)豎式計(jì)算練習(xí)300題及答案
- 【“凡爾賽”網(wǎng)絡(luò)流行語(yǔ)的形成及傳播研究11000字(論文)】
- ppr管件注塑工藝
- 液化氣站其他危險(xiǎn)和有害因素辨識(shí)及分析
- 建筑工程施工安全管理思路及措施
- 高中語(yǔ)文教學(xué)課例《勸學(xué)》課程思政核心素養(yǎng)教學(xué)設(shè)計(jì)及總結(jié)反思
- 中國(guó)農(nóng)業(yè)銀行小微企業(yè)信貸業(yè)務(wù)貸后管理辦法規(guī)定
- 市政道路建設(shè)工程竣工驗(yàn)收質(zhì)量自評(píng)報(bào)告
評(píng)論
0/150
提交評(píng)論