點(diǎn)擊查看2016年全國計(jì)算機(jī)四級數(shù)據(jù)庫考試重點(diǎn)匯總
七、數(shù)據(jù)庫的安全與保護(hù)
1.安全性
數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的或非正常的使用所造成的數(shù)據(jù)泄露、更改或破壞。安全性問題不是數(shù)據(jù)庫系統(tǒng)所獨(dú)有的,計(jì)算機(jī)系統(tǒng)都有這個(gè)問題。只是在數(shù)據(jù)庫系統(tǒng)中大量數(shù)據(jù)集中存放,而且為許多用戶直接共享,是十分重要的信息資源。從而使安全性問題變得更為突出。系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要性能指標(biāo)之一。對于數(shù)據(jù)庫的安全保密方式可以有系統(tǒng)處理的和物理的兩個(gè)方面。所謂物理的是指,對于強(qiáng)力逼迫透露口令、在通信線路上竊聽、以至盜竊物理存儲設(shè)備等行為。對此所采取的措施是將數(shù)據(jù)編為密碼,加強(qiáng)警衛(wèi)以識別用戶身份和保護(hù)存儲設(shè)備等措施。在一般計(jì)算機(jī)系統(tǒng)中,安全措施是一級一級層層設(shè)置的。
(1)用戶標(biāo)識和鑒定首先,系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份。系統(tǒng)進(jìn)行核實(shí),通過鑒定后才提供機(jī)器使用權(quán)。常用的方法有:用一個(gè)用戶名或者用戶標(biāo)識號來標(biāo)明用戶身份。系統(tǒng)鑒別此用戶是否是合法用戶。若是,則可以進(jìn)入下一步的核實(shí);若不是,則不能使用計(jì)算機(jī)。用戶名的登錄只由系統(tǒng)管理員進(jìn)行,一般用戶不能實(shí)施用戶名登錄。口令(Password),為了進(jìn)一步核實(shí)用戶,系統(tǒng)常常要求用戶輸入口令。
(2)存取控制對于獲得上機(jī)權(quán)的用戶還要根據(jù)預(yù)先定義好的用戶權(quán)限進(jìn)行存取控制,保證用戶只能存取他有權(quán)存取的數(shù)據(jù)。所謂用戶權(quán)限是指不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限。它由兩部分組成,一是數(shù)據(jù)對象,二是操作類型。數(shù)據(jù)對象有二類。一類是數(shù)據(jù)本身,如關(guān)系數(shù)據(jù)庫中的表、字段,非關(guān)系數(shù)據(jù)庫中的記錄、字段(亦稱為數(shù)據(jù)項(xiàng))。另一類是外模式、模式、內(nèi)模式。在關(guān)系系統(tǒng)中DBA可以把建立、修改基本表的權(quán)力授予用戶,用戶獲得此權(quán)力后可以建立基本表、索引、視圖。這說明關(guān)系系統(tǒng)中存取控制的數(shù)據(jù)對象不僅有數(shù)據(jù)而且有模式、外模式、內(nèi)模式等數(shù)據(jù)字典中的內(nèi)容。對于存取權(quán)限的定義稱為授權(quán)(Authorization)。這些定義經(jīng)過編譯后存儲在數(shù)據(jù)字典中。每當(dāng)用戶發(fā)出存取數(shù)據(jù)庫的操作請求后,DBMS查找數(shù)據(jù)字典,根據(jù)用戶權(quán)限進(jìn)行合法權(quán)限檢查(Authorization Check)。若用戶的操作請求超出了定義的權(quán)限,系統(tǒng)拒絕執(zhí)行此操作。授權(quán)編譯程序和合法權(quán)限檢查機(jī)制一起組成了安全性子系統(tǒng)。衡量授權(quán)子系統(tǒng)精巧程度的另一個(gè)盡度是否提供與數(shù)據(jù)值有關(guān)的授權(quán)。有的系統(tǒng)還允許存取謂詞中引用系統(tǒng)變量,如一天中的時(shí)刻,終端設(shè)備號。這樣用戶只能在某臺終端、某段時(shí)間內(nèi)存取有關(guān)數(shù)據(jù),這就是與時(shí)間和地點(diǎn)有關(guān)的存取權(quán)限。另外,在操作系統(tǒng)中對文件、目標(biāo)等的存取還有一些安全保護(hù)措施。其中加密是一種防止數(shù)據(jù)內(nèi)容被別人引用或了解的切實(shí)可行的辦法。加密有程序加密和硬件加密卡兩種形式。
2.完整性
數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。DBMS必須提供一種功能來保證數(shù)據(jù)庫中數(shù)據(jù)的完整性。這種功能亦稱為完整性檢查,即系統(tǒng)用一定的機(jī)制來檢查數(shù)據(jù)庫中的數(shù)據(jù)是否滿足規(guī)定的條件。這種條件在數(shù)據(jù)庫中稱為完整性約束條件。數(shù)據(jù)的約束條件是語義的體現(xiàn),這些完整性約束條件將作為模式的一部分存放數(shù)據(jù)字典中。數(shù)據(jù)的完整性和安全性是兩個(gè)不同的概念。前者是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯(cuò)誤信息的輸入和輸出,即所謂垃圾進(jìn)垃圾出(Garbage In Garbage Out)所造成的無效操作和錯(cuò)誤結(jié)果。而后者是保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。當(dāng)然,完整性和安全性是密切相關(guān)的。特別從系統(tǒng)實(shí)現(xiàn)的方法來看,往往是一種機(jī)制常常既可用于安全性保護(hù)亦可用于完整性保證。完整性約束條件可以分類如下:(1)值的約束和結(jié)構(gòu)的約束前者指對數(shù)據(jù)的值的限制,后者指對數(shù)據(jù)之間聯(lián)系的限制。關(guān)于對數(shù)據(jù)值的約束 這類約束條件是指對數(shù)據(jù)取值類型、范圍、精度等的規(guī)定。關(guān)于數(shù)據(jù)之間聯(lián)系的約束 數(shù)據(jù)庫中同一關(guān)系的不同屬性之間可以有一定的聯(lián)系,從而也應(yīng)滿足一定的約束條件。同時(shí),由于數(shù)據(jù)庫中數(shù)據(jù)是結(jié)構(gòu)化的,不同的關(guān)系之間也可以有聯(lián)系,因而不同關(guān)系的屬性之間也可滿足一定的約束條件。
(2)靜態(tài)約束和動態(tài)約束所謂靜態(tài)約束是指對數(shù)據(jù)庫每一確定狀態(tài)的數(shù)據(jù)所應(yīng)滿足的約束條件。以上所講的約束都屬靜態(tài)約束。動態(tài)約束是指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時(shí)新、舊值之間所應(yīng)滿足的約束條件。
(3)立即執(zhí)行約束和延遲執(zhí)行約束立即執(zhí)行約束是指在執(zhí)行用戶事務(wù)時(shí),對事務(wù)中某一更新語句執(zhí)行完后馬上對此數(shù)據(jù)所應(yīng)滿足的約束條件進(jìn)行完整性檢查。延遲執(zhí)行是指在整個(gè)事務(wù)執(zhí)行結(jié)束后方對此約束條件進(jìn)行完整性檢查,結(jié)果正確方能提交。完整性的實(shí)現(xiàn)應(yīng)包括兩個(gè)方面,一是系統(tǒng)要提供定義完整性約束條件的功能,二是提供檢查完整性約束條件的方法。對于數(shù)據(jù)值的那類完整性約束條件通常在模式中定義。例如在模式中定義屬性名、類型、長度、碼屬性名并標(biāo)明其值是唯一的、非空的等等。另外的那些約束條件就要用專門的方式加以定義。
3.并發(fā)控制
數(shù)據(jù)庫是一個(gè)共享資源,可以由多個(gè)用戶使用。這些用戶程序可以一個(gè)一個(gè)地串行執(zhí)行,也可以并行執(zhí)行。在單CPU計(jì)算機(jī)上,為了充分利用數(shù)據(jù)庫資源,應(yīng)該允許多個(gè)用戶程序并行的存取數(shù)據(jù)。這樣就會產(chǎn)生多個(gè)用戶程度并發(fā)地存取同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就會存取和存儲不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的完整性(這里也稱為一致性)。在多CPU計(jì)算機(jī)或多計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境下,并發(fā)控制尤為重要。
(1)事務(wù)的概念 事務(wù)(Transaction)是并發(fā)控制的基本單位。所謂事務(wù)是一個(gè)操作序列。這些操作作為一個(gè)序列形成一個(gè)整體要么都做,要么都不做,是一個(gè)不可分割的工作單位。事務(wù)通常以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK操作結(jié)束。COMMIT即提交,提交事務(wù)中所有的操作,事務(wù)正常結(jié)束。ROLLBACK即撤消已作的所有操作,滾回到事務(wù)開始時(shí)的狀態(tài)。這里的操作指對數(shù)據(jù)庫的更新操作。滾回即相當(dāng)于所有操作均未執(zhí)行。事務(wù)和程序是兩個(gè)概念。一般地講,一個(gè)程序可包括多個(gè)事務(wù),由于事務(wù)是并發(fā)控制的基本單位,所以下面的討論均以事務(wù)為對象。
(2)數(shù)據(jù)一致性級別的概念。所謂并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,避免造成數(shù)據(jù)的不一致性,使一個(gè)用戶事務(wù)的執(zhí)行不受其它事務(wù)的干擾。
4.封鎖
封鎖(Locking)就是事務(wù)T可以向系統(tǒng)發(fā)出請求,對某個(gè)數(shù)據(jù)對象(最常用的是記錄)加鎖。于是事務(wù)T對這個(gè)數(shù)據(jù)對象就有一定的控制。例如,其它事務(wù)不能更新此數(shù)據(jù)直到T釋放(unlock)它的鎖為止。確切的控制由封鎖的類型決定;镜姆怄i類型有兩種:排它鎖(Exclu sive locks簡記為X鎖)和共享鎖(Share locks簡記為S鎖)。若事務(wù)T對數(shù)據(jù)R加上X鎖,則只允許T讀取和修改R;其它一切事務(wù)對R的任何(包括封鎖)請求都不成功,直至T釋放R上的X鎖為止。這就保證了其它事務(wù)不能再讀取和修改R,直到T釋放X鎖。若事務(wù)T對數(shù)據(jù)R加上S鎖,則其它事務(wù)對R的X鎖請求不能成功,而對R的共享請求可以得到。這就保證了其它事務(wù)以讀取R但不能修改R,直至T釋放S鎖為止。
5.可串行性
定義 當(dāng)且僅當(dāng)某組事務(wù)的一定交叉調(diào)度產(chǎn)生的結(jié)果和這些事務(wù)的某一串行調(diào)度的結(jié)果相同,則這個(gè)交叉調(diào)度是可串行化的?纱行(Serializability)是并行事務(wù)正確性的準(zhǔn)則。這個(gè)準(zhǔn)則規(guī)定,一給定的交叉調(diào)度,當(dāng)且僅當(dāng)它是可串行化的,才認(rèn)為是正確的。
6.兩段鎖協(xié)議
兩段鎖協(xié)議規(guī)定所有的事務(wù)應(yīng)遵守下列規(guī)則:
(1)在對任何數(shù)據(jù)進(jìn)行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖,而且:
(2)在釋放一個(gè)封鎖之后,事務(wù)不再獲得任何其它鎖。所謂“兩段”鎖的含義是:事務(wù)分為兩個(gè)階段。第一階段是獲得封鎖,也稱為擴(kuò)展階段。第二階段是釋放封鎖,也稱為收縮階段。定理 若所有事務(wù)均遵守兩段鎖協(xié)議,則這些事務(wù)的所有交叉調(diào)度都是可串行化的(證明略)。為了確保事務(wù)并行執(zhí)行的正確性,許多系統(tǒng)采用兩段鎖協(xié)議。同時(shí)系統(tǒng)設(shè)有死鎖檢測機(jī)制,發(fā)現(xiàn)死鎖后按一定的算法解除死鎖。
7.恢復(fù)
盡管系統(tǒng)中采取了各種保護(hù)措施來保證數(shù)據(jù)庫的安全性和完整性不被破壞,保證并行事務(wù)的正確執(zhí)行,但是計(jì)算機(jī)系統(tǒng)中硬件的故障、軟件的錯(cuò)誤、操作員的失誤以及故意的破壞仍是不可避免的。這些故障輕則造成運(yùn)行事務(wù)非正常地中斷,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分?jǐn)?shù)據(jù)丟失。因此數(shù)據(jù)庫管理系統(tǒng)必須具有把數(shù)擾庫從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為完整狀態(tài)或一致狀態(tài))的功能,這就是數(shù)據(jù)庫的恢復(fù);謴(fù)子系統(tǒng)是數(shù)據(jù)庫管理系統(tǒng)的一個(gè)重要組成部分,而且還相當(dāng)龐大,常常占整個(gè)系統(tǒng)代碼的10%以上(如IMS,DB2)。故障恢復(fù)是否考慮周到和行之有效,是數(shù)據(jù)庫系統(tǒng)性能的一個(gè)重要指標(biāo)。大型的數(shù)據(jù)庫應(yīng)用對故障恢復(fù)的要求更加強(qiáng)烈。有時(shí)甚至采用雙工制。
(1)故障的種類數(shù)據(jù)庫系統(tǒng)中可能發(fā)生各種各樣的故障,大致可以分以下幾類:①事務(wù)內(nèi)部的故障;②系統(tǒng)范圍內(nèi)的故障;③介質(zhì)故障;④計(jì)算機(jī)病毒。
(2)轉(zhuǎn)儲和恢復(fù)轉(zhuǎn)儲是數(shù)據(jù)庫恢復(fù)中經(jīng)常采用的基本技術(shù)。所謂轉(zhuǎn)儲即DBA定期地將整個(gè)數(shù)據(jù)庫復(fù)制到磁帶或另一個(gè)磁盤上保存起來的過程。這些備用的數(shù)據(jù)文本為后備副本或后援副本。當(dāng)數(shù)據(jù)庫遭到破壞后就可以利用后備副本把數(shù)據(jù)庫恢復(fù)。這時(shí),數(shù)據(jù)庫只能恢復(fù)到轉(zhuǎn)儲時(shí)的狀態(tài),從那以后的所有更新事務(wù)必須重新運(yùn)行才能恢復(fù)到現(xiàn)時(shí)的正常狀態(tài)。轉(zhuǎn)儲是十分耗費(fèi)時(shí)間和資源的,不能頻繁進(jìn)行。DBA應(yīng)該根據(jù)數(shù)據(jù)庫使用情況確定一個(gè)適當(dāng)?shù)霓D(zhuǎn)儲周期。轉(zhuǎn)儲可分為靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。靜態(tài)轉(zhuǎn)儲是指轉(zhuǎn)儲期間不允許(或不存在)對數(shù)據(jù)庫進(jìn)行任何存取、修改活動。動態(tài)轉(zhuǎn)儲是指轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進(jìn)行存取或修改。即轉(zhuǎn)儲和用戶事務(wù)可以并發(fā)執(zhí)行。靜態(tài)轉(zhuǎn)儲簡單,但轉(zhuǎn)儲必須等待用戶事務(wù)結(jié)束才能進(jìn)行。同樣,新的事務(wù)必須等待轉(zhuǎn)儲結(jié)束才能執(zhí)行。顯然,這會降低數(shù)據(jù)庫的可用性。動態(tài)轉(zhuǎn)儲可克服靜態(tài)轉(zhuǎn)儲的缺點(diǎn)。但是,轉(zhuǎn)儲結(jié)束時(shí)后援副本上的數(shù)據(jù)并不能保證正確有效。例如,在轉(zhuǎn)儲期間的某時(shí)刻t 1 系統(tǒng)把數(shù)據(jù)A=100轉(zhuǎn)儲到了磁帶上,而在時(shí)刻t 2 ,某一事務(wù)對A進(jìn)行了修改使A=200轉(zhuǎn)儲結(jié)束,后援副本上的A已是過時(shí)的數(shù)據(jù)了。為此,必須把轉(zhuǎn)儲期間事務(wù)對數(shù)據(jù)庫的修改活動登記下來,建立日志文件(log file)。這樣,后援副本加上日志文件就能把數(shù)據(jù)庫恢復(fù)到某一時(shí)刻的正確狀態(tài)。轉(zhuǎn)儲還可以分為海量轉(zhuǎn)儲和增量轉(zhuǎn)儲。海量轉(zhuǎn)儲是指每次轉(zhuǎn)儲全部數(shù)據(jù)庫。增量轉(zhuǎn)儲則指每次只轉(zhuǎn)儲上次轉(zhuǎn)儲后更新過的數(shù)據(jù)。如果數(shù)據(jù)庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲方式是很有效的。(3)日志文件日志文件是用來記錄對數(shù)據(jù)庫每一次更新活動的文件。在動態(tài)轉(zhuǎn)儲方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復(fù)數(shù)據(jù)庫。在靜態(tài)轉(zhuǎn)儲方式中,也可以建立日志文件。當(dāng)數(shù)據(jù)庫毀壞后可重新裝放后援副本把數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲結(jié)束時(shí)刻的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進(jìn)行重做處理,對故障發(fā)生時(shí)尚未完成的事務(wù)進(jìn)行撤消處理。這樣不必重新運(yùn)行那些在轉(zhuǎn)儲前已完成的事務(wù)程序就可把數(shù)據(jù)庫恢復(fù)到故障前某一時(shí)刻的正確狀態(tài)。
八、數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)
1.數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)步驟
按規(guī)范設(shè)計(jì)的方法可將數(shù)據(jù)庫設(shè)計(jì)分為以下六個(gè)階段
(1)需求分析;
(2)概念結(jié)構(gòu)設(shè)計(jì);
(3)邏輯結(jié)構(gòu)設(shè)計(jì);
(4)數(shù)據(jù)庫物理設(shè)計(jì);
(5)數(shù)據(jù)庫實(shí)施;
(6)數(shù)據(jù)庫運(yùn)行和維護(hù)。
2.需求分析
需求收集和分析是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的第一階段。明確地把它作為數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的第一步是十分重要的。這一階段收集到的基礎(chǔ)數(shù)據(jù)和一組數(shù)據(jù)流圖(Data Flow Diaˉgram———DFD)是下一步設(shè)計(jì)概念結(jié)構(gòu)的基礎(chǔ)。概念結(jié)構(gòu)對整個(gè)數(shù)據(jù)庫設(shè)計(jì)具有深刻影響。而要設(shè)計(jì)好概念結(jié)構(gòu),就必須在需求分析階段用系統(tǒng)的觀點(diǎn)來考慮問題、收集和分析數(shù)據(jù)及其處理。如何分析和表達(dá)用戶需求呢?在眾多的分析方法中,結(jié)構(gòu)化分析(Structured Analysis,簡稱SA方法)是一個(gè)簡單實(shí)用的方法。SA方法用自頂向下、逐層分解的方式分析系統(tǒng)。用數(shù)據(jù)流圖,數(shù)據(jù)字典描述系統(tǒng)。然后把一個(gè)處理功能的具體內(nèi)容分解為若干子功能,每個(gè)子功能繼續(xù)分解,直到把系統(tǒng)的工作過程表達(dá)清楚為止。在處理功能逐步分解的同時(shí),它們所用的數(shù)據(jù)也逐級分解。形成若干層次的數(shù)據(jù)流圖。數(shù)據(jù)流圖表達(dá)了數(shù)據(jù)和處理過程的關(guān)系。處理過程的處理邏輯常常用判定表或判定樹來描述。數(shù)據(jù)字典(Data Dictionary,簡稱DD)則是對系統(tǒng)中數(shù)據(jù)的詳盡描述,是各類數(shù)據(jù)屬性的清單。對數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)來講,數(shù)據(jù)字典是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果。數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括以下5個(gè)部分:
(1)數(shù)據(jù)項(xiàng),是數(shù)據(jù)最小單位。
(2)數(shù)據(jù)結(jié)構(gòu),是若干數(shù)據(jù)項(xiàng)有意義的集合。
(3)數(shù)據(jù)流,可以是數(shù)據(jù)項(xiàng),也可以是數(shù)據(jù)結(jié)構(gòu)。表示某一處理過程的輸入輸出。
(4)數(shù)據(jù)存儲,處理過程中存取的數(shù)據(jù)。常常是手工憑證、手工文檔或計(jì)算機(jī)文件。
(5)處理過程。
3.概念結(jié)構(gòu)設(shè)計(jì)
如同軟件工程中重視需求分析與規(guī)范說明的思想一樣,數(shù)據(jù)庫設(shè)計(jì)中同樣十分重視數(shù)據(jù)分析、抽象與概念結(jié)構(gòu)的設(shè)計(jì)。概念結(jié)構(gòu)的設(shè)計(jì),是整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵之一。概念結(jié)構(gòu)獨(dú)立于數(shù)據(jù)庫邏輯結(jié)構(gòu),獨(dú)立于支持?jǐn)?shù)據(jù)庫的DBMS,也獨(dú)立于具體計(jì)算機(jī)軟件和硬件系統(tǒng)。歸納總結(jié),其主要特點(diǎn)是:
(1)能充分地反映現(xiàn)實(shí)世界,包括實(shí)體和實(shí)體之間的聯(lián)系,能滿足用戶對數(shù)據(jù)處理的要求,是現(xiàn)實(shí)世界的一個(gè)真實(shí)的模型,或接近真實(shí)的模型。
(2)易于理解,從而可以和不熟悉計(jì)算機(jī)的用戶交換意見。用戶的積極參與是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)成功與否的關(guān)鍵。
(3)易于更動。當(dāng)現(xiàn)實(shí)世界改變時(shí)容易修改和擴(kuò)充,特別是軟件、硬件環(huán)境變化時(shí)更應(yīng)如此。
(4)易于向關(guān)系、網(wǎng)狀或?qū)哟蔚雀鞣N數(shù)據(jù)模型轉(zhuǎn)換。概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),它比任意一種數(shù)據(jù)模型更獨(dú)立于機(jī)器,更抽象,從而更加穩(wěn)定。描述概念結(jié)構(gòu)的有力工具是E-R模型。P.P.S.Chen把用E-R模型定義的概念結(jié)構(gòu)稱為組織模式。設(shè)計(jì)概念結(jié)構(gòu)的策略有3種:
(1)自頂向下 首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化。
(2)自底向上 首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成,得到全局概念結(jié)構(gòu)。
(3)混合策略 自頂向下和自底向上相結(jié)合的方法。用自頂向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu),F(xiàn)介紹自底向上設(shè)計(jì)概念結(jié)構(gòu)的策略。按照這種策略,概念結(jié)構(gòu)的設(shè)計(jì)可按下面步驟進(jìn)行。
(1)數(shù)據(jù)抽象與局部視圖設(shè)計(jì)
E-R模型是對現(xiàn)實(shí)世界的一種抽象。一般地講,所謂抽象是對實(shí)際的人、物、事和概念的人為處理。它抽取人們關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),并把這些特性用各種抽象的概念精確地加以描述。這些概念組成了現(xiàn)實(shí)世界的一種模型表示。有3種抽象方法形成了抽象機(jī)制,來對數(shù)據(jù)進(jìn)行組織:①分類(Classification) 定義某一概念作為現(xiàn)實(shí)世界中一組對象的類型。這些對象具有某些共同的特性和行為。它抽象了對象值和型之間的“is a member of”的語義。在E-R模型中,實(shí)體型就是這種抽象。②聚集(Aggregation) 定義某一類型的組成成分。它抽象了對象內(nèi)部屬性類型和整體與部分之間“is a part of”的語義。在E-R模型中若干屬性的聚集組成了實(shí)體型,就是這種抽象。③概括(Generalization) 定義類型之間的一種子集聯(lián)系。它抽象了類型之間的“is a subset of”的語義。概括具有一個(gè)很重要的性質(zhì):繼承性。子類繼承超類上定義的所有抽象性質(zhì)。當(dāng)然,子類可以增加自己的某些特殊屬性。概念結(jié)構(gòu)設(shè)計(jì)的第一步就是利用上面介紹的抽象機(jī)制對需求分析階段收集到的數(shù)據(jù)進(jìn)行組織,形成實(shí)體、實(shí)體的屬性,標(biāo)識實(shí)體的碼,確定實(shí)體之間的聯(lián)系類型(1∶1,1∶n,n∶m),設(shè)計(jì)成部分E-R圖。
(2)視圖的集成視圖集成就是把上一步得到的各個(gè)部分E-R圖綜合成一個(gè)總體的E-R圖。視圖集成可以有兩種方式:①多個(gè)部分E-R圖一次集成。②逐步集成。用累加的方式一次集成兩個(gè)部分E-R圖。無論哪種方式,每次集成可分兩步走。第一步是合并,解決各部分E-R圖之間的沖突問題,生成初步E-R圖。第二步是修改和重構(gòu),消除不必要的冗余,生成基本E-R圖。
4.邏輯結(jié)構(gòu)設(shè)計(jì)
邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)就是把概念結(jié)構(gòu)轉(zhuǎn)換為選用的DBMS所支持的數(shù)據(jù)模型的過程。設(shè)計(jì)邏輯結(jié)構(gòu)按理應(yīng)選擇對某個(gè)概念結(jié)構(gòu)最好的數(shù)據(jù)模型,然后對支持這種數(shù)據(jù)模型的各種DBMS進(jìn)行比較,選出最合適的DBMS。但實(shí)際情況常常是已給定了某臺機(jī)器,設(shè)計(jì)人員沒有選擇DBMS的余地,F(xiàn)行的DBMS一般只支持關(guān)系、網(wǎng)狀或?qū)哟稳N模型中的某一種,對某一種數(shù)據(jù)模型,各個(gè)機(jī)器系統(tǒng)又有許多不同的限制,提供不同的環(huán)境與工具。因而我們把設(shè)計(jì)過程分三步進(jìn)行。首先把概念結(jié)構(gòu)向一般的關(guān)系模型轉(zhuǎn)換,然后向特定的DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換,最后進(jìn)行模型的優(yōu)化。
(1)E-R圖向關(guān)系數(shù)據(jù)模型的轉(zhuǎn)換下面給出把E-R圖轉(zhuǎn)換為關(guān)系模型的轉(zhuǎn)換規(guī)則。
、僖粋(gè)實(shí)體轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。
、谝粋(gè)聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系的屬性轉(zhuǎn)換為關(guān)系的屬性。該關(guān)系的碼則有三種情況:若聯(lián)系為1∶1,則每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。若聯(lián)系為1∶n,關(guān)系的碼為n端實(shí)體的碼。若聯(lián)系為n∶m,則關(guān)系的碼為諸實(shí)體碼的組合。具有相同碼的關(guān)系模式可合并。形成了一般的數(shù)據(jù)模型后,下一步就向特定的DBMS規(guī)定的模型轉(zhuǎn)換。設(shè)計(jì)人員必須熟知所用DBMS的功能及限制。這一步轉(zhuǎn)換是依賴于機(jī)器的,不能給出一個(gè)普遍的規(guī)則。轉(zhuǎn)化后的模型必須進(jìn)行優(yōu)化。對數(shù)據(jù)模型進(jìn)行優(yōu)化是指調(diào)整數(shù)據(jù)模型的結(jié)構(gòu),以提高數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能。性能有動態(tài)性能和靜態(tài)性能兩種。靜態(tài)性能分析容易實(shí)現(xiàn)。根據(jù)應(yīng)用要求,選出合適的模型是一項(xiàng)復(fù)雜的工作。
(2)規(guī)范化理論的應(yīng)用規(guī)范化理論是數(shù)據(jù)庫邏輯設(shè)計(jì)的指南和工具,具體地講可應(yīng)用在下面幾個(gè)具體的方面:
第一,在數(shù)據(jù)分析階段用數(shù)據(jù)依賴的概念分析和表示各數(shù)據(jù)項(xiàng)之間的關(guān)系。
第二,在設(shè)計(jì)概念結(jié)構(gòu)階段,用規(guī)范化理論為工具消除初步E-R圖中冗余的聯(lián)系。
第三,由E-R圖向數(shù)據(jù)模型轉(zhuǎn)換過程中用模式分解的概念和算法指導(dǎo)設(shè)計(jì)。現(xiàn)在,不管選用的DBMS是支持哪種數(shù)據(jù)模型的,均先把概念結(jié)構(gòu)向關(guān)系模型轉(zhuǎn)換。然后,充分運(yùn)用規(guī)范化理論的成果優(yōu)化關(guān)系數(shù)據(jù)庫模式的設(shè)計(jì)。
5.數(shù)據(jù)庫的物理設(shè)計(jì)
物理設(shè)計(jì)的內(nèi)容主要包括:
(1)確定數(shù)據(jù)的存儲結(jié)構(gòu) 從DBMS所提供的存儲結(jié)構(gòu)中選取一種合適的加以實(shí)現(xiàn)。確定存儲結(jié)構(gòu)的主要因素是存取時(shí)間、存儲空間利用率和維護(hù)代價(jià)三個(gè)方面。設(shè)計(jì)者常常要對這些因素進(jìn)行權(quán)衡。一般的DBMS也總是具有一定靈活性供你選擇。例如,若引入某些冗余數(shù)據(jù),則可能減少物理I/O次數(shù)提高檢索效率。相反節(jié)約存儲空間檢索代價(jià)就會增加。當(dāng)然應(yīng)該盡量尋找優(yōu)化方法,使這三方面的性能都較好。折衷有時(shí)是必須的。
(2)存取路徑的選擇和調(diào)整 數(shù)據(jù)庫必須支持多個(gè)用戶的多種應(yīng)用,因而必須提供對數(shù)據(jù)庫的多個(gè)存取入口,也就是對同一數(shù)據(jù)存儲要提供多條存取路徑。物理設(shè)計(jì)的任務(wù)應(yīng)確定建立哪些存取路徑。設(shè)計(jì)者應(yīng)該進(jìn)行定量的分析,根據(jù)計(jì)算結(jié)果確定存取路徑。
(3)確定數(shù)據(jù)存放位置 首先按數(shù)據(jù)的應(yīng)用情況劃分為不同的組,然后確定存放位置。一般的應(yīng)把數(shù)據(jù)的易變部分和穩(wěn)定部分分開,把經(jīng)常存取和不常存取的數(shù)據(jù)分開。經(jīng)常存取或存取時(shí)間要求高的記錄應(yīng)存放在高速存儲器上,如硬盤。存取頻率小或存取時(shí)間要求低的放在低速存儲器上,如軟盤磁帶。對于同一數(shù)據(jù)文件也可根據(jù)情況進(jìn)行水平劃分或垂直劃分。
(4)確定存儲分配 許多DBMS提供了存儲分配的參數(shù)供設(shè)計(jì)者物理優(yōu)化處理用。例如溢出空間的大小和分布參數(shù),塊的長度,塊因子的大小,裝填因子,緩沖區(qū)的大小和個(gè)數(shù)等等,它們都要在物理設(shè)計(jì)中確定。這些參數(shù)的大小影響存取時(shí)間和存儲空間的分配。物理設(shè)計(jì)過程需要對時(shí)間、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案。在實(shí)施數(shù)據(jù)庫前對這些方案進(jìn)行方案進(jìn)行細(xì)致的評價(jià),以選擇一個(gè)較優(yōu)的方案是十分必要的。
6.數(shù)據(jù)庫應(yīng)用系統(tǒng)的實(shí)施和維護(hù)
對數(shù)據(jù)庫的物理設(shè)計(jì)初步評價(jià)完成后就可建立數(shù)據(jù)庫了。數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)施對應(yīng)于軟件工程的編碼、調(diào)試階段。設(shè)計(jì)人員運(yùn)用DBMS提供的數(shù)據(jù)定義語言將邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果嚴(yán)格地描述出來,成為DBMS可接受的源代碼。經(jīng)過調(diào)試產(chǎn)生目標(biāo)模式。然后組織數(shù)據(jù)入庫。組織數(shù)據(jù)入庫是數(shù)據(jù)庫應(yīng)用系統(tǒng)實(shí)施階段最主要的工作。
(1)數(shù)據(jù)庫數(shù)據(jù)的載入和應(yīng)用程序的開發(fā)由于數(shù)據(jù)庫數(shù)據(jù)量一般都非常大,并且這些數(shù)據(jù)來源于一個(gè)組織的各個(gè)部門,分散在各種數(shù)據(jù)文件或原始憑證中。這些數(shù)據(jù)的結(jié)構(gòu)和格式一般也不符合數(shù)據(jù)庫的要求,還要進(jìn)行轉(zhuǎn)換。因此組織數(shù)據(jù)入庫是一件耗費(fèi)大量人力物力的工作。數(shù)據(jù)的轉(zhuǎn)換和組織對于小系統(tǒng)可以用人工方法完成。但是,人工轉(zhuǎn)換效率低、質(zhì)量差。一般來說,應(yīng)設(shè)計(jì)一個(gè)數(shù)據(jù)輸入子系統(tǒng)讓計(jì)算機(jī)完成這個(gè)工作。輸入子系統(tǒng)的主要功能是:原始數(shù)據(jù)的輸入、抽取、校驗(yàn)、分類、轉(zhuǎn)換和綜合,最終把數(shù)據(jù)組織成符合數(shù)據(jù)庫結(jié)構(gòu)的形式。然后把數(shù)據(jù)存入數(shù)據(jù)庫中。數(shù)據(jù)的轉(zhuǎn)換、分類和綜合常常要經(jīng)過多次才能完成,因而輸入子系統(tǒng)的設(shè)計(jì)和實(shí)施亦是比較復(fù)雜的,要編寫許多應(yīng)用程序。輸入子系統(tǒng)的設(shè)計(jì)不能等物理設(shè)計(jì)完成后才動手,應(yīng)該和數(shù)據(jù)庫設(shè)計(jì)工作并行開展。為了保證數(shù)據(jù)庫數(shù)據(jù)正確無誤,必須高度重視數(shù)據(jù)的檢驗(yàn)工作。在輸入子系統(tǒng)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的過程中應(yīng)該進(jìn)行多次檢驗(yàn),每次檢驗(yàn)的方法亦不要相同。對于重要數(shù)據(jù)的校驗(yàn)更應(yīng)該反復(fù)多次,確認(rèn)正確后方可入庫。數(shù)據(jù)庫應(yīng)用系統(tǒng)中應(yīng)用程序的設(shè)計(jì)應(yīng)該和數(shù)據(jù)庫模式設(shè)計(jì)并行。數(shù)據(jù)庫應(yīng)用系統(tǒng)的實(shí)施階段的另一項(xiàng)工作便這是這些應(yīng)用程序的編碼、調(diào)試工作。有了裝載實(shí)際數(shù)據(jù)的數(shù)據(jù)庫和應(yīng)用程序,就建立了數(shù)據(jù)庫應(yīng)用系統(tǒng),可以試運(yùn)行了。
(2)數(shù)據(jù)庫應(yīng)用系統(tǒng)的試運(yùn)行在完成上述工作之后,便可進(jìn)入數(shù)據(jù)庫的試運(yùn)行階段,或者稱聯(lián)合調(diào)試階段。這階段的主要工作是:
、賹(shí)際運(yùn)行應(yīng)用程序,執(zhí)行對數(shù)據(jù)庫的各種操作,測試應(yīng)用程序的功能。
、跍y量系統(tǒng)的性能指標(biāo),分析是否符合設(shè)計(jì)目標(biāo)。雖然已在物理設(shè)計(jì)過程中進(jìn)行了性能預(yù)測,但是僅僅估價(jià)了時(shí)間和空間指標(biāo),而且在性能估價(jià)的過程中作了許多簡化和假設(shè),忽略了許多次要因素,因而估價(jià)是粗糙的并可能失真。必須在試運(yùn)行階段進(jìn)行實(shí)際測量和評價(jià)。有些參數(shù)的最佳值往往是經(jīng)過運(yùn)行調(diào)試后才找到的。如果實(shí)際結(jié)果不符合設(shè)計(jì)目標(biāo),則需返回物理設(shè)計(jì)階段,調(diào)整物理結(jié)構(gòu),修改參數(shù)。有時(shí),也許還需要返回邏輯設(shè)計(jì)階段,調(diào)整邏輯結(jié)構(gòu)。最后還須指出兩點(diǎn)。
第一,上面已看到組織數(shù)據(jù)入庫是十分費(fèi)事的,如果運(yùn)行調(diào)試后又要修改數(shù)據(jù)庫設(shè)計(jì)則又要重新組織數(shù)據(jù)入庫。因此應(yīng)分批分期輸入數(shù)據(jù),逐步完成運(yùn)行評價(jià)。
第二,數(shù)據(jù)庫的實(shí)施和調(diào)試不是一朝一夕能完成的,在此期間軟硬件的錯(cuò)誤隨時(shí)可能發(fā)生。加上數(shù)據(jù)庫剛剛建立,工作人員對系統(tǒng)還不熟悉,對其規(guī)律更缺乏深入了解,容易發(fā)生操作錯(cuò)誤。因此必須做好數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)工作,這就要求設(shè)計(jì)人員了解DBMS的這個(gè)功能,并根據(jù)調(diào)試方式和特點(diǎn)首先實(shí)施,盡量減少對數(shù)據(jù)庫的破壞并簡化故障恢復(fù)。
(3)數(shù)據(jù)庫應(yīng)用系統(tǒng)的運(yùn)行和維護(hù)數(shù)據(jù)庫應(yīng)用系統(tǒng)投入運(yùn)行標(biāo)志著開發(fā)任務(wù)的基本完成和維護(hù)工作的開始,但并不意味著設(shè)計(jì)過程結(jié)束。任何數(shù)據(jù)庫應(yīng)用系統(tǒng)只要它存在一天,它的設(shè)計(jì)就得不斷地進(jìn)行評價(jià)、調(diào)整、修改,甚至完全改革。因此數(shù)據(jù)庫應(yīng)用系統(tǒng)的維護(hù)不僅是維護(hù)其正;顒佣沂窃O(shè)計(jì)工作的繼續(xù)和提高。維護(hù)階段的主要工作是:
、贁(shù)據(jù)庫的安全性、完整性控制及系統(tǒng)的轉(zhuǎn)儲和恢復(fù);
、谛阅艿谋O(jiān)督、分析和改進(jìn);
、蹟(shù)據(jù)庫的重組織和重構(gòu)造。下面簡單介紹數(shù)據(jù)庫的重組織和重構(gòu)造。數(shù)據(jù)庫運(yùn)行一段時(shí)間后,由于記錄的不斷增、刪、改,會使數(shù)據(jù)庫的物理存儲變壞。例如,邏輯上屬于同一記錄型或同一關(guān)系的數(shù)據(jù)被分散到了不同的文件或文件的多個(gè)碎片上。從而降低了數(shù)據(jù)庫存儲空間的利用率和數(shù)據(jù)的存取效率,數(shù)據(jù)庫的性能下降。這時(shí),DBA就要進(jìn)行數(shù)據(jù)庫的重組織,DBMS一般都提供重組織用的實(shí)用程序。在重組過程中,按原設(shè)計(jì)要求重新安排記錄的存儲位置,調(diào)整數(shù)據(jù)區(qū)和溢出區(qū),回收“垃圾”,減少指針鏈等。數(shù)據(jù)庫的重組織不改變原設(shè)計(jì)的數(shù)據(jù)邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。而數(shù)據(jù)庫的重構(gòu)造則不同。部分修改原數(shù)據(jù)庫的模式或內(nèi)模式稱為數(shù)據(jù)庫的重構(gòu)造。由于數(shù)據(jù)庫應(yīng)用環(huán)境的變化,數(shù)據(jù)庫重構(gòu)的程度是有限的。只能作部分的修改和調(diào)整。若應(yīng)用變化太大,重構(gòu)也無濟(jì)于事了,則表明數(shù)據(jù)庫應(yīng)用系統(tǒng)生命周期的結(jié)束,應(yīng)該重新設(shè)計(jì)數(shù)據(jù)庫應(yīng)用系統(tǒng)。新的數(shù)據(jù)庫應(yīng)用系統(tǒng)新的生命周期開始了。
相關(guān)推薦:
2016計(jì)算機(jī)四級數(shù)據(jù)庫復(fù)習(xí)重難點(diǎn)匯總
各地計(jì)算機(jī)等級考試報(bào)名入口及官方網(wǎng)站匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |