數(shù)據(jù)庫原理及應(yīng)用教程(第5版) (微課版)課件 陳志泊 第5、6章 數(shù)據(jù)庫優(yōu)化和管理、數(shù)據(jù)庫設(shè)計_第1頁
數(shù)據(jù)庫原理及應(yīng)用教程(第5版) (微課版)課件 陳志泊 第5、6章 數(shù)據(jù)庫優(yōu)化和管理、數(shù)據(jù)庫設(shè)計_第2頁
數(shù)據(jù)庫原理及應(yīng)用教程(第5版) (微課版)課件 陳志泊 第5、6章 數(shù)據(jù)庫優(yōu)化和管理、數(shù)據(jù)庫設(shè)計_第3頁
數(shù)據(jù)庫原理及應(yīng)用教程(第5版) (微課版)課件 陳志泊 第5、6章 數(shù)據(jù)庫優(yōu)化和管理、數(shù)據(jù)庫設(shè)計_第4頁
數(shù)據(jù)庫原理及應(yīng)用教程(第5版) (微課版)課件 陳志泊 第5、6章 數(shù)據(jù)庫優(yōu)化和管理、數(shù)據(jù)庫設(shè)計_第5頁
已閱讀5頁,還剩151頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

北京市優(yōu)質(zhì)本科課程教材數(shù)據(jù)庫原理及應(yīng)用教程(第5版)“十二五”普通高等教育本科國家級規(guī)劃教材國家級一流線上課程配套教材第5章數(shù)據(jù)庫優(yōu)化和管理數(shù)據(jù)庫優(yōu)化和管理微課5.1視圖

視圖是一個虛擬表,其內(nèi)容由查詢定義。同基本表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。視圖在數(shù)據(jù)庫中并不是以數(shù)據(jù)值存儲集形式存在,除非是索引視圖。行和列數(shù)據(jù)來自定義視圖的查詢所引用的基本表,并且在引用視圖時動態(tài)生成?;颈硐嗨疲阂晥D可用于SELECT語句中進(jìn)行查詢VS視圖不同:視圖只存儲定義語句,不存儲其數(shù)據(jù)當(dāng)使用視圖進(jìn)行查詢時,視圖包含的數(shù)據(jù)才會臨時生成。1.視圖工作機(jī)制

2.視圖的作用及應(yīng)用

視圖提升了數(shù)據(jù)的邏輯獨(dú)立性視圖可用于數(shù)據(jù)集成視圖提升了數(shù)據(jù)操作的便攜性視圖提升了數(shù)據(jù)的安全性5.1視圖3.創(chuàng)建和修改視圖5.1視圖用ManagementStudio創(chuàng)建視圖用SQL命令創(chuàng)建視圖CREATEVIEWview_name[(column[,...n])][WITH<view_attribute>[,...n]]ASselect_statement[WITHCHECKOPTION][;]<view_attribute>::={[ENCRYPTION][SCHEMABINDING][VIEW_METADATA]}5.1視圖CREATEVIEWSub_TASSELECTTNo,TN,ProfFROMTWHEREDept='計算機(jī)'[例5-1]創(chuàng)建一個計算機(jī)系教師情況的視圖Sub_T。CREATEVIEWS_SC_C(SNo,SN,CN,Score)ASSELECTS.SNo,SN,CN,ScoreFROMS,C,SCWHERES.SNo=SC.SNoANDSC.CNo=C.CNoCREATEVIEWS_Avg(SNo,Avg)ASSELECTSNo,Avg(Score)FROMSCGROUPBYSNo[例5-2]創(chuàng)建一學(xué)生情況視圖S_SC_C(包括學(xué)號、姓名、課程名及成績)。[例5-3]創(chuàng)建一學(xué)生平均成績視圖S_Avg。3.創(chuàng)建和修改視圖5.1視圖ALTERVIEW<視圖名>[(<視圖列表>)]AS<子查詢>用ManagementStudio修改視圖用SQL命令修改視圖ALTERVIEWS_SC_C(SN,CN,Score)ASSELECTSN,CN,ScoreFROMS,C,SCWHERES.SNo=SC.SNoANDSC.CNo=C.CNo[例5-4]修改學(xué)生情況視圖S_SC_C(包括姓名、課程名及成績)。4.使用和刪除視圖5.1視圖[例5-5]查詢視圖Sub_T中職稱為教授的教師號和姓名。

SELECTTNo,TN FROMSub_T WHEREProf='教授'

視圖定義后,對視圖的查詢操作如同對基本表的查詢操作一樣。SELECTTNo,TNFROMTWHEREDept='計算機(jī)‘ANDProf='教授'視圖的建立簡化了查詢操作4.使用和刪除視圖5.1視圖DROPVIEW<視圖名>

用ManagementStudio刪除視圖用SQL命令刪除視圖DROPVIEWSub_T[例5-6]刪除計算機(jī)系教師情況的視圖Sub_T。5.更新視圖5.1視圖由于視圖是一張?zhí)摫恚詫σ晥D的更新,最終轉(zhuǎn)換成對基本表的更新。其語法格式如同對基本表的更新操作一樣。添加修改刪除INSERTUPDATEDELETE5.1視圖[例5-7]向計算機(jī)系教師視圖Sub_T中添加一條記錄(教師號:T6、姓名:李丹、職稱:副教授)。UPDATESub_TSETProf='副教授'WHERE(TN='劉偉')轉(zhuǎn)換成對基本表的修改操作:UPDATETSETProf='副教授'WHERETN='劉偉'ANDDept='計算機(jī)'DELETEFROMSub_TWHERETN='劉偉'[例5-8]將計算機(jī)系教師視圖Sub_T中劉偉的職稱改為“副教授”。[例5-9]刪除計算機(jī)系教師視圖Sub_T中劉偉老師的記錄。INSERTINTOSub_T(TNo,TN,Prof)VALUES('T6','李丹','副教授')5.2索引1.索引的作用在很多數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫讀取的次數(shù)多于數(shù)據(jù)庫寫的次數(shù)如果把數(shù)據(jù)庫看做字典,可以將索引的鍵看做是字典的拼音,值為該拼音所在的第一個漢字的位置,借助拼音檢索可以縮小目標(biāo)漢字查找范圍,避免逐頁查找。索引是一種以空間代價提升時間效率的方法。索引一旦創(chuàng)建,將由MySQL自動管理和維護(hù),索引的維護(hù)需要消耗計算資源和存儲資源,如何設(shè)計索引,是提升數(shù)據(jù)庫使用效率的關(guān)鍵。如何優(yōu)化數(shù)據(jù)庫讀取數(shù)據(jù)效率是數(shù)據(jù)庫優(yōu)化的主要工作之一索引采用鍵值對的數(shù)據(jù)結(jié)構(gòu),加快檢索速度5.2索引2.索引的類型可以從多種角度對索引進(jìn)行分類:01020304根據(jù)索引與數(shù)據(jù)物理存儲關(guān)系進(jìn)行分類聚集型索引、非聚集型索引根據(jù)索引涉及列數(shù)進(jìn)行分類單列索引、復(fù)合索引根據(jù)索引特征進(jìn)行分類普通索引、唯一索引、主鍵索引、全文索引和空間索引根據(jù)索引存儲方式進(jìn)行分類B-Tree索引、Hash索引5.2索引3.索引的設(shè)置原則嚴(yán)格限制同一個表或視圖上的索引數(shù)量。索引增多將會嚴(yán)重影響INSERT、UPDATE和DELETE語句的執(zhí)行性能。對于表中使用頻度較低或者不再使用的索引,需及時刪除。對于重復(fù)值較多的列,不建議建立索引。對排序、分組或者表連接涉及的字段建立索引,可提升數(shù)據(jù)檢索效率。對視圖建立索引將提升使用視圖的檢索效率。注意唯一索引和全文對于NULL的處理方式。5.2索引4.創(chuàng)建和修改索引[例5-10]為表SC在SNo和CNo上建立惟一索引。CREATEUNIQUEINDEXSCIONSC(SNo,CNo)[例5-11]為教師表T在TN上建立聚集索引。CREATECLUSTERINDEXTIONT(TN)用ManagementStudio創(chuàng)建索引用SQL語句創(chuàng)建索引5.2索引4.創(chuàng)建和修改索引修改索引的SQL命令語法如下:ALTERINDEX{index_name|ALL}ONtable_or_view_name{REBUILD[[PARTITION=ALL][WITH(<rebuild_index_option>[,...n])]|[PARTITION=partition_number[WITH(<single_partition_rebuild_index_option>[,...n])]]]|DISABLE|REORGANIZE[PARTITION=partition_number][WITH(LOB_COMPACTION={ON|OFF})]|SET(<set_index_option>[,...n])}[;]5.2索引5.查看和刪除索引Sp_helpindex[@objname=]'name'表的名稱用ManagementStudio查看索引用Sp_helpindex存儲過程查看索引[例5-12]查看表SC的索引。EXECSp_helpindexSC5.2索引5.查看和刪除索引[例5-13]更改T表中的索引TI名稱為T_Index。EXECSp_rename'T.TI','T_Index'如果要更改索引名稱,可利用Sp_rename存儲過程更改,其語法如下:Sp_rename'數(shù)據(jù)表名.原索引名','新索引名'5.2索引5.查看和刪除索引用ManagementStudio刪除索引用SQL語句刪除索引DROPINDEX<tableorviewname>.<indexname>DROPINDEX<indexname>ON<tableorviewname>5.3數(shù)據(jù)庫的安全性1.數(shù)據(jù)庫安全性的含義安全性問題有許多方面:(1)法律、社會和倫理方面時問題。(2)物理控制方面的問題。(3)政策方面的問題。(4)運(yùn)行方面的問題。(5)硬件控制方面的問題。(6)操作系統(tǒng)安全性方面的問題。(7)數(shù)據(jù)庫系統(tǒng)本身的安全性方面的問題。數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止非法使用所造成的數(shù)據(jù)泄露、更改或破壞。5.3數(shù)據(jù)庫的安全性2.安全性控制的一般方法

圖5-1安全控制模型安全性控制是指要盡可能地杜絕所有可能的數(shù)據(jù)庫非法訪問。5.3數(shù)據(jù)庫的安全性2.安全性控制的一般方法

(1)用戶標(biāo)識和鑒定(2)用戶存取權(quán)限控制(3)定義視圖(4)數(shù)據(jù)加密(5)審計(Audit)5.3數(shù)據(jù)庫的安全性用戶標(biāo)識和鑒定用戶標(biāo)識和鑒定是由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識,每次用戶要求進(jìn)入系統(tǒng)時,由系統(tǒng)進(jìn)行核實(shí),通過鑒定后才提供計算機(jī)的使用權(quán)。用戶標(biāo)識和鑒定的方法用一個用戶名或用戶標(biāo)識符來標(biāo)明用戶的身份,系統(tǒng)以此來鑒別用戶的合法性。用戶標(biāo)識符是用戶公開的標(biāo)識,它不足以成為鑒別用戶身份的憑證。通過用戶名和口令來鑒定用戶的方法簡單易行,但該方法在使用時,由于用戶名和口令的產(chǎn)生和使用比較簡單,也容易被竊取,因此還可采用更復(fù)雜的方法。5.3數(shù)據(jù)庫的安全性用戶存取權(quán)限控制用戶存取權(quán)限指的是不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限。在數(shù)據(jù)庫系統(tǒng)中,定義用戶存取權(quán)限稱為授權(quán)。定義視圖為不同的用戶定義不同的視圖,可以限制各個用戶的訪問范圍。通過視圖機(jī)制把要保密的數(shù)據(jù)對無權(quán)存取這些數(shù)據(jù)的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護(hù)。5.3數(shù)據(jù)庫的安全性數(shù)據(jù)加密加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)加密成為不可直接識別的格式,數(shù)據(jù)以密文的形式存儲和傳輸。加密方法替換方法,該方法使用密鑰將明文中的每一個字符轉(zhuǎn)換為密文中的字符。轉(zhuǎn)換方法,該方法將明文中的字符按不同的順序重新排列。通常將這兩種方法結(jié)合起來使用,就可以達(dá)到相當(dāng)高的安全程度。5.3數(shù)據(jù)庫的安全性審計審計功能是一種監(jiān)視措施,它跟蹤記錄有關(guān)數(shù)據(jù)的訪問活動。使用審計功能把用戶對數(shù)據(jù)庫的所有操作自動記錄下來,存放在一個特殊文件中,即審計日志中。記錄的內(nèi)容一般包括:操作類型(如修改、查詢等),操作終端標(biāo)識與操作者標(biāo)識,操作日期和時間,操作所涉及到的相關(guān)數(shù)據(jù)(如基本表、視圖、記錄、屬性等),數(shù)據(jù)的前象和后象等。5.3數(shù)據(jù)庫的安全性3.SQLServer的安全機(jī)制SQLServer的安全模型分為三層結(jié)構(gòu),分別為服務(wù)器安全管理、數(shù)據(jù)庫安全管理和數(shù)據(jù)庫對象的訪問權(quán)限管理。第一層安全性是SQLServer服務(wù)器級別的安全性第二層安全性是數(shù)據(jù)庫級別的安全性第三層安全性是數(shù)據(jù)庫對象級別的安全性5.3數(shù)據(jù)庫的安全性圖5-2SQLServer的三層安全機(jī)制5.3數(shù)據(jù)庫的安全性SQLServer提供兩種身份驗(yàn)證模式:Windows身份驗(yàn)證模式和混合身份驗(yàn)證模式(SQLServer和Windows身份驗(yàn)證模式)。在該驗(yàn)證模式下,SQLServer2022使用Windows操作系統(tǒng)來對登錄的賬號進(jìn)行身份驗(yàn)證,支持Windows操作系統(tǒng)的密碼策略和鎖寫策略,賬號和密碼保存在Windows操作系統(tǒng)的賬戶數(shù)據(jù)庫中,是一個系統(tǒng)文件。SQLServer2022服務(wù)器自身不再負(fù)責(zé)身份驗(yàn)證。Windows身份驗(yàn)證模式Windows驗(yàn)證模式下主要有以下優(yōu)點(diǎn):(1)數(shù)據(jù)庫管理員的工作可以集中在管理數(shù)據(jù)庫方面,而不是管理用戶賬戶。(2)Windows有著更強(qiáng)的用戶賬戶管理工具??梢栽O(shè)置賬戶鎖定、密碼期限等。(3)Windows的組策略支持多個用戶同時被授權(quán)訪問SQLServer。如果網(wǎng)絡(luò)中有多個SQLServer服務(wù)器,就可以選擇通過Windows身份驗(yàn)證機(jī)制來完成。5.3數(shù)據(jù)庫的安全性TCP/IPSockets命名管道SQLServer身份驗(yàn)證模式Windows身份驗(yàn)證模式混合身份驗(yàn)證模式混合身份驗(yàn)證模式允許以SQLServer身份驗(yàn)證模式或者Windows身份驗(yàn)證模式來進(jìn)行驗(yàn)證。使用哪種身份驗(yàn)證取決于最初通信時使用的網(wǎng)絡(luò)庫。在SQLServer身份驗(yàn)證模式下,賬號和密碼保存在master數(shù)據(jù)庫的syslogins數(shù)據(jù)表中。5.3數(shù)據(jù)庫的安全性混合驗(yàn)證模式的優(yōu)點(diǎn)(1)如果用戶是具有Windows登錄名和密碼的Windows域用戶,則還必須提供另一個用于連接SQLServer的登錄名和密碼,因此,該種驗(yàn)證模式創(chuàng)建了Windows之上的另外一個安全層次。(2)允許SQLServer支持具有混合操作系統(tǒng)的環(huán)境,在這種環(huán)境中并不是所有用戶均由Windows域進(jìn)行驗(yàn)證。(3)允許用戶從未知的或不可信的域進(jìn)行連接。(4)允許SQLServer支持基于Web的應(yīng)用程序,在這些應(yīng)用程序中用戶可創(chuàng)建自己的標(biāo)識。5.3數(shù)據(jù)庫的安全性設(shè)置身份驗(yàn)證模式安裝SQLServer2012時,安裝程序會提示用戶選擇服務(wù)器身份驗(yàn)證模式,然后根據(jù)用戶的選擇將服務(wù)器設(shè)置為“Windows身份驗(yàn)證模式”或“SQLServer和Windows”身份驗(yàn)證模式。在使用過程中,可以根據(jù)需要來重新設(shè)置服務(wù)器的身份驗(yàn)證模式。具體的過程如下:(1)在SQLServerManagementStudio的【對象資源管理器】中,右鍵單擊服務(wù)器,在彈出的快捷菜單中單擊【屬性】,會彈出“服務(wù)器屬性”窗口。(2)在“服務(wù)器屬性“窗口中,在“選擇頁列表中”選擇”安全性”,之后,在“服務(wù)器身份驗(yàn)證”下,可以選擇新的服務(wù)器身份驗(yàn)證模式,再單擊【確定】按鈕,如圖5-3所示。(3)重新啟動SQLServer,使設(shè)置生效。5.3數(shù)據(jù)庫的安全性圖5-3設(shè)置SQLServer服務(wù)器的身份驗(yàn)證模式5.3數(shù)據(jù)庫的安全性4.登錄賬號和服務(wù)器角色在SQLServer中,賬號有兩種:一種是登錄服務(wù)器的登錄賬號(LoginName),另外一種是使用數(shù)據(jù)庫的用戶賬號(UserName)。

登錄賬號是指能登錄到SQLServer的賬號,它屬于服務(wù)器的層面,本身并不能讓用戶訪問服務(wù)器中的數(shù)據(jù)庫,而登錄者要使用服務(wù)器中的數(shù)據(jù)庫時,必須要有用戶賬號才能存取數(shù)據(jù)庫。就如同公司門口先刷卡進(jìn)入(登錄服務(wù)器),然后再拿鑰匙打開自己的辦公室(進(jìn)入數(shù)據(jù)庫)一樣。5.3數(shù)據(jù)庫的安全性創(chuàng)建登錄賬號(1)在【對象資源管理器】中,展開【安全性】結(jié)點(diǎn),然后右鍵單擊【登錄名】,在彈出的快捷菜單中選擇【新建登錄名】,會出現(xiàn)“登錄名-新建”窗口。(2)在“登錄名-新建”窗口中,在“選擇頁”列表中選擇“常規(guī)”。(3)在“登錄名”文本框中輸入要創(chuàng)建的登錄賬號的名稱,單擊“SQLServer身份驗(yàn)證”單選鈕,并輸入密碼,之后,取消勾選“強(qiáng)制實(shí)施密碼策略”復(fù)選框,如圖5-4所示。5.3數(shù)據(jù)庫的安全性創(chuàng)建登錄賬號(4)在圖5-4中,在“選擇頁”列表中選擇“服務(wù)器角色”,如圖5-5所示。這里可以選擇將該登錄賬號添加到某個服務(wù)器角色中成為其成員,并自動具有該服務(wù)器角色的權(quán)限。其中,public角色自動選中,并且不能刪除。在此選擇sysadmin角色,使該登錄賬號具有服務(wù)器層面的任何權(quán)限。(5)設(shè)置完所有需要設(shè)置的選項之后,單擊【確定】按鈕即可創(chuàng)建登錄賬號,并且顯示在登錄名列表中,如圖5-6所示5.3數(shù)據(jù)庫的安全性圖5-4創(chuàng)建SQLServer的登錄賬號5.3數(shù)據(jù)庫的安全性圖5-5設(shè)置登錄賬號的服務(wù)器角色圖5-6新建的登錄賬號顯示在登錄名列表中5.3數(shù)據(jù)庫的安全性修改登錄賬號的過程和創(chuàng)建登錄賬號的過程類似,在【對象資源管理器】中,展開【安全性】結(jié)點(diǎn)下面的【登錄名】結(jié)點(diǎn),然后右鍵單擊要修改的登錄名,在彈出的快捷菜單中選擇【屬性】菜單,即可打開【登錄屬性】對話框,接下來就可以對該登錄賬號進(jìn)行修改。其中各選項的含義和“登錄名-新建”窗口中的選項含義相同,這里不再贅述。修改登錄賬號5.3數(shù)據(jù)庫的安全性刪除登錄賬號SQLServer的服務(wù)器角色~角色(Role)是對權(quán)限集中管理的一種機(jī)制,將不同的權(quán)限組合在一起就

形成了一種角色。~服務(wù)器角色是執(zhí)行服務(wù)器級管理操作的用戶權(quán)限的集合。在【對象資源管理器】中,展開【安全性】結(jié)點(diǎn)下面的【登錄名】結(jié)點(diǎn),然后右鍵單擊要刪除的登錄名,在彈出的快捷菜單中選擇【刪除】,在出現(xiàn)的“刪除對象”窗口中單擊【確定】按鈕即可刪除該登錄賬號。5.3數(shù)據(jù)庫的安全性5.數(shù)據(jù)庫用戶賬號和數(shù)據(jù)庫角色數(shù)據(jù)庫的用戶賬號登錄名本身并不能讓用戶訪問服務(wù)器中的數(shù)據(jù)庫資源。要訪問具體數(shù)據(jù)庫中的資源,還必須有該數(shù)據(jù)庫的用戶名。新的登錄名創(chuàng)建以后,才能創(chuàng)建數(shù)據(jù)庫用戶,數(shù)據(jù)庫用戶在特定的數(shù)據(jù)庫內(nèi)創(chuàng)建,必須和某個登錄名相關(guān)聯(lián)。5.3數(shù)據(jù)庫的安全性一個登錄賬戶可以與服務(wù)器上的所有數(shù)據(jù)庫進(jìn)行關(guān)聯(lián),而數(shù)據(jù)庫用戶是一個登錄賬戶在某數(shù)據(jù)庫中的映射,也即一個登錄賬戶可以映射到不同的數(shù)據(jù)庫,產(chǎn)生多個數(shù)據(jù)庫用戶(但一個登錄賬戶在一個數(shù)據(jù)庫至多只能映射一個數(shù)據(jù)庫用戶),一個數(shù)據(jù)庫用戶只能映射到一個登錄賬戶。允許數(shù)據(jù)庫為每個用戶對象分配不同的權(quán)限,這一特性為在組內(nèi)分配權(quán)限提供了最大的自由度與可控性。數(shù)據(jù)庫的用戶賬號5.3數(shù)據(jù)庫的安全性創(chuàng)建數(shù)據(jù)庫的用戶賬號可以通過以下兩種方法創(chuàng)建數(shù)據(jù)庫用戶賬號。一種是利用對象資源管理器創(chuàng)建數(shù)據(jù)庫用戶,另一種是利用T-SQL語句創(chuàng)建。5.3數(shù)據(jù)庫的安全性查看或修改數(shù)據(jù)庫用戶賬號(1)在【對象資源管理器】中,展開“具體的數(shù)據(jù)庫名”(例如數(shù)據(jù)庫“Teach”)下面的“安全性”節(jié)點(diǎn),再展開其中的“用戶”結(jié)點(diǎn),在“用戶”文件夾下能看到該數(shù)據(jù)庫的已有用戶。(2)右鍵單擊某個要操作的用戶,在系統(tǒng)彈出的快捷菜單中選擇“屬性”命令。(3)在打開的數(shù)據(jù)庫用戶屬性對話框中可以查看或修改用戶的權(quán)限信息,如“常規(guī)”中的“擁有架構(gòu)”、“角色成員”;“安全對象”中的具體權(quán)限設(shè)置及“擴(kuò)展屬性”等。(4)設(shè)置完成后,單擊“確定”按鈕,則成功修改數(shù)據(jù)庫用戶。5.3數(shù)據(jù)庫的安全性刪除數(shù)據(jù)庫用戶賬號(1)在【對象資源管理器】中,展開“具體的數(shù)據(jù)庫名”(例如數(shù)據(jù)庫“Teach”)下面的“安全性”節(jié)點(diǎn),再展開其中的“用戶”結(jié)點(diǎn),在“用戶”文件夾下能看到該數(shù)據(jù)庫的已有用戶。(2)右鍵單擊某個要刪除的用戶,在系統(tǒng)彈出的快捷菜單中選擇“刪除”命令,打開“刪除對象”對話框。(3)在打開的“刪除對象”對話框中選定要刪除的賬號,然后單擊“確定”按鈕,則成功刪除數(shù)據(jù)庫用戶。5.3數(shù)據(jù)庫的安全性數(shù)據(jù)庫角色SQLServer在每個數(shù)據(jù)庫中都提供了10個固定的數(shù)據(jù)庫角色。與服務(wù)器角色不同的是,數(shù)據(jù)庫角色權(quán)限的作用域僅限在特定的數(shù)據(jù)庫內(nèi)。在“對象資源管理器”中展開相應(yīng)數(shù)據(jù)庫下的“安全性”結(jié)點(diǎn),然后再單擊“數(shù)據(jù)庫角色”,即可看到這10個數(shù)據(jù)庫角色。5.3數(shù)據(jù)庫的安全性服務(wù)器角色權(quán)限描述db_accessadmin

訪問權(quán)限管理員,能夠添加或刪除數(shù)據(jù)庫用戶和角色db_backupoperator

數(shù)據(jù)庫備份管理員,能夠備份和還原數(shù)據(jù)庫db_datareader數(shù)據(jù)庫檢索操作員,能夠讀取數(shù)據(jù)庫中所有用戶表中的所有數(shù)據(jù)db_datawriter數(shù)據(jù)維護(hù)操作員,能夠?qū)?shù)據(jù)庫中的所有用戶表添加、刪除或修改數(shù)據(jù)db_ddladmin

數(shù)據(jù)庫對象管理員,能夠添加、刪除和修改數(shù)據(jù)庫對象,如:表、視圖等5.3數(shù)據(jù)庫的安全性服務(wù)器角色權(quán)限描述public每個數(shù)據(jù)庫用戶都屬于public數(shù)據(jù)庫角色,具有默認(rèn)的權(quán)限db_denydatareader

拒絕執(zhí)行檢索操作員,不能讀取數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)db_denydatawriter拒絕執(zhí)行數(shù)據(jù)維護(hù)操作員,不能添加、修改或刪除數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)db_owner數(shù)據(jù)庫所有者,可以執(zhí)行數(shù)據(jù)庫的所有活動,在數(shù)據(jù)庫中擁有全部權(quán)限db_securityadmin

安全管理員,可以修改角色成員身份和管理權(quán)限5.3數(shù)據(jù)庫的安全性用戶管理權(quán)限權(quán)限用來指定授權(quán)用戶可以使用的數(shù)據(jù)庫對象和這些授權(quán)用戶可以對這些數(shù)據(jù)庫對象執(zhí)行的那些操作。當(dāng)用戶以某個登錄賬號登錄到SQLServer服務(wù)器后,該數(shù)據(jù)庫用戶賬號(一定依附于某個登錄賬號)所歸屬的Windows組(Windows登錄賬號)或所歸屬的數(shù)據(jù)庫角色被賦予的權(quán)限決定了該用戶能夠?qū)δ男?shù)據(jù)庫對象執(zhí)行哪種操作以及能夠訪問、修改哪些數(shù)據(jù)。在每個數(shù)據(jù)庫中,權(quán)限獨(dú)立于用戶賬號和用戶在數(shù)據(jù)庫中的角色,每個數(shù)據(jù)庫都有自己獨(dú)立的權(quán)限系統(tǒng)。5.3數(shù)據(jù)庫的安全性用戶管理權(quán)限系統(tǒng)權(quán)限:系統(tǒng)權(quán)限表示用戶對數(shù)據(jù)庫的操作權(quán)限。即創(chuàng)建數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫中的其他內(nèi)容所需要的權(quán)限類型稱為系統(tǒng)權(quán)限。對象權(quán)限:數(shù)據(jù)庫對象權(quán)限是授予數(shù)據(jù)庫用戶對特定數(shù)據(jù)庫中的表、視圖和存儲過程等對象的操作權(quán)限,它決定了能對表、視圖等數(shù)據(jù)庫對象執(zhí)行哪些操作,相當(dāng)于數(shù)據(jù)庫操縱語言的語句權(quán)限。5.4數(shù)據(jù)庫完整性控制1.數(shù)據(jù)庫完整性的含義數(shù)據(jù)庫的完整性是指保護(hù)數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和相容性,防止錯誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫造成無效操作。數(shù)據(jù)庫的完整性是指防止合法用戶使用數(shù)據(jù)庫時向數(shù)據(jù)庫中加入不符合語義的數(shù)據(jù)。完整性措施的防范對象是不合語義的數(shù)據(jù)。5.4數(shù)據(jù)庫完整性控制2.完整性約束條件的分類根據(jù)約束條件:值的約束和結(jié)構(gòu)的約束值的約束即對數(shù)據(jù)類型、數(shù)據(jù)格式、取值范圍和空值等進(jìn)行規(guī)定。(1)對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位和精度等。(2)對數(shù)據(jù)格式的約束。(3)對取值范圍的約束。(4)對空值的約束。5.4數(shù)據(jù)庫完整性控制2.完整性約束條件的分類結(jié)構(gòu)的約束即對數(shù)據(jù)之間聯(lián)系的約束。(1)函數(shù)依賴約束。(2)實(shí)體完整性約束。(3)參照完整性約束。(4)統(tǒng)計約束。根據(jù)約束條件:值的約束和結(jié)構(gòu)的約束5.4數(shù)據(jù)庫完整性控制根據(jù)約束狀態(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)整時不得低于其原來的工資。5.4數(shù)據(jù)庫完整性控制3.SQLServer完整性的實(shí)施聲明式數(shù)據(jù)完整性聲明式數(shù)據(jù)完整性是將數(shù)據(jù)所需符合的條件融入到對象的定義中,這樣SQLServer會自動確保數(shù)據(jù)符合事先制定的條件。這是實(shí)施數(shù)據(jù)完整性的首選。聲明式數(shù)據(jù)完整性的特點(diǎn)是:①通過針對表和字段定義聲明的約束,可使聲明式數(shù)據(jù)完整性成為數(shù)據(jù)定義的一部分。②使用約束、默認(rèn)值與規(guī)則實(shí)施聲明式數(shù)據(jù)完整性。5.4數(shù)據(jù)庫完整性控制程序化數(shù)據(jù)完整性如果所需符合的條件以及該條件的實(shí)施均通過所編寫的程序代碼完成,則這種形式的數(shù)據(jù)完整性稱為程序化數(shù)據(jù)完整性。程序化數(shù)據(jù)完整性的特點(diǎn)是:程序化數(shù)據(jù)完整性可以通過相關(guān)的程序語言及工具在客戶端或服務(wù)器端實(shí)施。

SQLServer可以使用存儲過程或觸發(fā)器實(shí)施程序化數(shù)據(jù)完整性。5.4數(shù)據(jù)庫完整性控制數(shù)據(jù)庫完整性的實(shí)施使用規(guī)則使用默認(rèn)5.4數(shù)據(jù)庫完整性控制規(guī)則規(guī)則(Rule)就是數(shù)據(jù)庫對存儲在表中的列或用戶自定義數(shù)據(jù)類型中的值的規(guī)定和限制。規(guī)則與其作用的表或用戶自定義數(shù)據(jù)類型是相互獨(dú)立的,即表或用戶自定義對象的刪除、修改不會對與之相連的規(guī)則產(chǎn)生影響。規(guī)則和約束可以同時使用,表的列可以有一個規(guī)則及多個check約束。5.4數(shù)據(jù)庫完整性控制規(guī)則的使用步驟創(chuàng)建規(guī)則將規(guī)則綁定到數(shù)據(jù)庫的對象上,或者將規(guī)則從數(shù)據(jù)庫的對象上松綁。CREATERULErule_nameAScondition_expression創(chuàng)建規(guī)則創(chuàng)建規(guī)則后,規(guī)則僅僅是一個存在于數(shù)據(jù)庫中的對象,并未發(fā)生作用。需要將規(guī)則與數(shù)據(jù)庫表或用戶自定義對象聯(lián)系起來,才能達(dá)到創(chuàng)建規(guī)則的目的。所謂綁定就是指定規(guī)則作用于哪個表的哪一列或哪個用戶自定義數(shù)據(jù)類型。解除規(guī)則與對象的綁定稱為“松綁”。CREATERULEage_ruleAS@age>=18and@age<=50【例】創(chuàng)建學(xué)生年齡規(guī)則5.4數(shù)據(jù)庫完整性控制規(guī)則的使用步驟創(chuàng)建規(guī)則將規(guī)則綁定到數(shù)據(jù)庫的對象上,或者將規(guī)則從數(shù)據(jù)庫的對象上松綁。sp_bindrule[@rulename=]'rule',[@objname=]'object_name'[,'futureonly’][例]綁定規(guī)則age_rule到S表的字段Age。EXECsp_bindrule'age_rule','S.Age‘用存儲過程sp_bindrule綁定規(guī)則規(guī)則對已經(jīng)輸入表中的數(shù)據(jù)不起作用。sp_unbindrule[@objname=]'object_name'[,'futureonly'][例]解除已綁定到S表的字段Age的規(guī)則age_rule。EXECsp_unbindrule'S.Age'用存儲過程sp_unbindrule松綁規(guī)則的綁定5.4數(shù)據(jù)庫完整性控制刪除規(guī)則在刪除一個規(guī)則前必須先將與其綁定的對象解除綁定。使用DROPRULE命令刪除規(guī)則DROPRULE{rule_name}[,...n][例]刪除age_rule規(guī)則。DROPRULEage_rule5.4數(shù)據(jù)庫完整性控制默認(rèn)值默認(rèn)(Default)是向用戶輸入記錄時沒有指定具體數(shù)據(jù)的列中自動插入的數(shù)據(jù)。表的一列或一個用戶自定義數(shù)據(jù)類型只能與一個默認(rèn)綁定。5.4數(shù)據(jù)庫完整性控制默認(rèn)的使用步驟創(chuàng)建默認(rèn)綁定默認(rèn)到數(shù)據(jù)庫中的對象CREATEDEFAULTdefault_nameASconstant_expr?ession創(chuàng)建默認(rèn)CREATEDEFAULTbirthday_defaAS'1978-1-1'【例】創(chuàng)建出生日期默認(rèn)birthday_defa。使用sp_helptext存儲過程可以查看默認(rèn)的信息。[例]查看默認(rèn)birthday_defa。EXECsp_helptextbirthday_defa查看默認(rèn)5.4數(shù)據(jù)庫完整性控制默認(rèn)的使用步驟用存儲過程sp_bindefault綁定默認(rèn)sp_bindefault[@defname=]'default', [@objname=]'object_name' [,'futureonly']用存儲過程sp_unbindefault解除默認(rèn)的綁定sp_unbindefault[@objname=]'object_name'[,'futureonly']創(chuàng)建默認(rèn)綁定默認(rèn)到數(shù)據(jù)庫中的對象5.4數(shù)據(jù)庫完整性控制刪除默認(rèn)使用DROPDEFAULT命令刪除默認(rèn)DROPDEFAULT{default_name}[,…n][例5-21]刪除學(xué)生生日默認(rèn)birthday_defa.DROPDEFGAULTbirthday_defa刪除默認(rèn)在刪除一個默認(rèn)前必須先將與其綁定的對象解除綁定。5.5數(shù)據(jù)庫并發(fā)控制1.數(shù)據(jù)庫并發(fā)性的含義為了充分利用數(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ù)。5.5數(shù)據(jù)庫并發(fā)控制2.事務(wù)及性質(zhì)*

事務(wù)是數(shù)據(jù)庫系統(tǒng)中執(zhí)行的一個工作單位,它是由用戶定義的一組操作序列。*

一個事務(wù)可以是一組SQL語句、一條SQL語句或整個程序,一個應(yīng)用程序可以包括多個事務(wù)。定義事務(wù)的語句有三條:BEGINTRANSACTION事務(wù)的開始COMMIT事務(wù)的提交ROLLBACK事務(wù)的回滾5.5數(shù)據(jù)庫并發(fā)控制事務(wù)的性質(zhì)原子性(Atomicity)AI隔離性(Isolation)C一致性(Consistency)D持久性(Durability)5.5數(shù)據(jù)庫并發(fā)控制原子性(Atomicity)一個事務(wù)是一個不可分割的工作單位,事務(wù)在執(zhí)行時,應(yīng)該遵守“要么不做,要么全做”(NothingorAll)的原則,即不允許完成部分的事務(wù)。一致性(Consistency)事務(wù)對數(shù)據(jù)庫的作用是數(shù)據(jù)庫從一個一致狀態(tài)轉(zhuǎn)變到另一個一致狀態(tài)。所謂數(shù)據(jù)庫的一致狀態(tài)是指數(shù)據(jù)庫中的數(shù)據(jù)滿足完整性約束。5.5數(shù)據(jù)庫并發(fā)控制隔離性(Isolation)如果多個事務(wù)并發(fā)地執(zhí)行,應(yīng)像各個事務(wù)獨(dú)立執(zhí)行一樣,一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。持久性(Durability)持久性指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是持久的,即使數(shù)據(jù)庫因故障而受到破壞,DBMS也應(yīng)該能夠恢復(fù)。5.5數(shù)據(jù)庫并發(fā)控制3.并發(fā)操作與數(shù)據(jù)的不一致性多個用戶同時訪問同一個數(shù)據(jù)資源并對其進(jìn)行操作時,稱之為并發(fā)操作。并發(fā)操作并發(fā)控制問題并發(fā)操作時,如果不加以適當(dāng)控制,可能會存儲不正確的數(shù)據(jù),產(chǎn)生數(shù)據(jù)的不一致性問題。能夠合理調(diào)度并發(fā)事務(wù),避免并發(fā)事務(wù)之間的互相干擾造成數(shù)據(jù)不一致性的技術(shù)稱為數(shù)據(jù)庫管理系統(tǒng)的并發(fā)控制技術(shù)。5.5數(shù)據(jù)庫并發(fā)控制[例5-22]并發(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ā)操作引起的。5.5數(shù)據(jù)庫并發(fā)控制數(shù)據(jù)庫的并發(fā)操作導(dǎo)致的數(shù)據(jù)庫不一致性主要有以下三種:丟失更新(LostUpdate)當(dāng)兩個事務(wù)T1和T2讀入同一數(shù)據(jù),并發(fā)執(zhí)行修改操作時,T2把T1或T1把T2的修改結(jié)果覆蓋掉,造成了數(shù)據(jù)的丟失更新問題,導(dǎo)致數(shù)據(jù)的不一致。污讀(DirtyRead)事務(wù)T1更新了數(shù)據(jù)R,事務(wù)T2讀取了更新后的數(shù)據(jù)R,事務(wù)T1由于某種原因被撤銷,修改無效,數(shù)據(jù)R恢復(fù)原值。事務(wù)T2得到的數(shù)據(jù)與數(shù)據(jù)庫的內(nèi)容不一致,這種情況稱為“污讀”。5.5數(shù)據(jù)庫并發(fā)控制不可重讀(UnrepeatableRead)事務(wù)T1讀取了數(shù)據(jù)R,事務(wù)T2讀取并更新了數(shù)據(jù)R,當(dāng)事務(wù)T1再讀取數(shù)據(jù)R以進(jìn)行核對時,得到的兩次讀取值不一致,這種情況稱為“不可重讀”。4.封鎖和封鎖協(xié)議實(shí)現(xiàn)并發(fā)控制的方法主要有兩種:封鎖(Lock)技術(shù)和時標(biāo)(Timestamping)技術(shù)。所謂封鎖就是當(dāng)一個事務(wù)在對某個數(shù)據(jù)對象(可以是數(shù)據(jù)項、記錄、數(shù)據(jù)集以至整個數(shù)據(jù)庫)進(jìn)行操作之前,必須獲得相應(yīng)的鎖,以保證數(shù)據(jù)操作的正確性和一致性。5.5數(shù)據(jù)庫并發(fā)控制5.5數(shù)據(jù)庫并發(fā)控制封鎖類型(LockType)基本的封鎖類型有兩種排它型封鎖(ExclusiveLock)排它型封鎖又稱寫封鎖,簡稱為X封鎖,它采用的原理是禁止并發(fā)操作。共享封鎖(ShareLock)共享封鎖又稱讀封鎖,簡稱為S鎖,它采用的原理是允許其他用戶對同一數(shù)據(jù)對象進(jìn)行查詢,但不能對該數(shù)據(jù)對象進(jìn)行修改。一個事務(wù)對數(shù)據(jù)對象A加了X鎖,那么該事務(wù)可以對A進(jìn)行讀和寫,但其加鎖期間其他事務(wù)不能對A加任何鎖,直到X鎖釋放。一個事務(wù)對數(shù)據(jù)對象A加了S鎖,那么該事務(wù)可以對A進(jìn)行讀操作,但不能進(jìn)行寫操作,同時在其加鎖期間其他事務(wù)能對A加S鎖,但不能加X鎖,直到S鎖釋放。X鎖S鎖5.5數(shù)據(jù)庫并發(fā)控制封鎖協(xié)議(LockProtocol)封鎖可以保證合理地進(jìn)行并發(fā)控制,保證數(shù)據(jù)的一致性。在封鎖時,要考慮一定的封鎖規(guī)則,例如,何時開始封鎖、封鎖多長時間、何時釋放等,這些封鎖規(guī)則稱為封鎖協(xié)議。5.5

數(shù)據(jù)庫并發(fā)控制通過三級封鎖協(xié)議在不同程度上給予解決:一級封鎖協(xié)議事務(wù)T在修改數(shù)據(jù)對象之前必須對其加X鎖,直到事務(wù)結(jié)束。二級封鎖協(xié)議在一級封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后釋放S鎖。三級封鎖協(xié)議在一級封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后并不釋放S鎖,而直到事務(wù)T結(jié)束才釋放。5.5數(shù)據(jù)庫并發(fā)控制封鎖粒度(LockGranularity)封鎖粒度指封鎖的單位。根據(jù)對數(shù)據(jù)的不同處理,封鎖的對象可以是這樣一些邏輯單元:字段、記錄、表、數(shù)據(jù)庫等,封鎖的數(shù)據(jù)對象的大小叫封鎖粒度。封鎖粒度越小,系統(tǒng)中能夠被封鎖的對象就越多,并發(fā)度越高,但封鎖機(jī)構(gòu)復(fù)雜,系統(tǒng)開銷也就越大。封鎖粒度越大,系統(tǒng)中能夠被封鎖的對象就越少,并發(fā)度越低,封鎖機(jī)構(gòu)越簡單,相應(yīng)系統(tǒng)開銷也就越小。5.5數(shù)據(jù)庫并發(fā)控制死鎖和活鎖活鎖(Livelock)當(dāng)某個事務(wù)請求對某一數(shù)據(jù)進(jìn)行排他性封鎖時,由于其他事務(wù)對該數(shù)據(jù)的操作而使這個事務(wù)處于永久等待狀態(tài),這種狀態(tài)稱為活鎖。死鎖(Deadlock)在同時處于等待狀態(tài)的兩個或多個事務(wù)中,其中的每一個在它能夠進(jìn)行之前,都等待著某個數(shù)據(jù),而這個數(shù)據(jù)已被它們中的某個事務(wù)所封鎖,這種狀態(tài)稱為死鎖。5.5數(shù)據(jù)庫并發(fā)控制死鎖產(chǎn)生的條件互斥條件:一個數(shù)據(jù)對象一次只能被一個事務(wù)所使用,即對數(shù)據(jù)的封鎖采用排他式。不可搶占條件:一個數(shù)據(jù)對象只能被占有它的事務(wù)所釋放,而不能被別的事務(wù)強(qiáng)行搶占。部分分配條件:一個事務(wù)已經(jīng)封鎖分給它的數(shù)據(jù)對象,但仍然要求封鎖其他數(shù)據(jù)。循環(huán)等待條件:允許等待其他事務(wù)釋放數(shù)據(jù)對象,系統(tǒng)處于加鎖請求相互等待的狀態(tài)。5.5數(shù)據(jù)庫并發(fā)控制死鎖的預(yù)防一次加鎖法一次加鎖法是每個事物必須將所有要使用的數(shù)據(jù)對象全部一次加鎖,并要求加鎖成功,只要一個加鎖不成功,表示本次加鎖失敗,則應(yīng)該立即釋放所有加鎖成功的數(shù)據(jù)對象,然后重新開始加鎖。順序加鎖法預(yù)先對所有可加鎖的數(shù)據(jù)對象規(guī)定一個加鎖順序,每個事務(wù)都需要按此順序加鎖,在釋放時,按逆序進(jìn)行。5.5數(shù)據(jù)庫并發(fā)控制死鎖的診斷與解除

如果在事務(wù)依賴圖中沿著箭頭方向存在一個循環(huán),那么死鎖的條件就形成了,系統(tǒng)就會出現(xiàn)死鎖。選擇一個處理死鎖代價最小的事務(wù),將其撤銷以解除死鎖。數(shù)據(jù)RT1T2

事務(wù)依賴圖5.6數(shù)據(jù)庫的備份與恢復(fù)1.數(shù)據(jù)庫恢復(fù)的基礎(chǔ)恢復(fù)系統(tǒng)應(yīng)該提供兩種類型的功能:一種是生成冗余數(shù)據(jù),即對可能發(fā)生的故障做某些準(zhǔn)備;另一種是冗余重建,即利用這些冗余數(shù)據(jù)恢復(fù)數(shù)據(jù)庫。生成冗余數(shù)據(jù)最常用的技術(shù)是登記日志文件和數(shù)據(jù)轉(zhuǎn)儲,在實(shí)際應(yīng)用中,這兩種方法常常結(jié)合在一起使用。5.6數(shù)據(jù)庫的備份與恢復(fù)登記日志文件典型的日志文件主要包含以下內(nèi)容:(1)更新數(shù)據(jù)庫的事務(wù)標(biāo)識(標(biāo)明是哪個事務(wù));(2)操作的類型(插入、刪除或修改);(3)操作對象;(4)更新前數(shù)據(jù)的舊值(對于插入操作,沒有舊值);(5)更新后數(shù)據(jù)的新值(對于刪除操作,沒有新值);(6)事務(wù)處理中各個關(guān)鍵時刻(事務(wù)開始、結(jié)束及其真正回寫時間)。5.6數(shù)據(jù)庫的備份與恢復(fù)登記日志文件

日志編輯的原則:先寫原則(1)至少要等到相應(yīng)運(yùn)行記錄的撤銷部分已經(jīng)寫入日志文件中以后,才允許該事務(wù)向物理數(shù)據(jù)庫中寫入記錄;(2)直到事務(wù)的所有運(yùn)行記錄的撤銷和重做兩部分都已寫入日志文件中以后,才允許事務(wù)完成提交處理。5.6數(shù)據(jù)庫的備份與恢復(fù)數(shù)據(jù)轉(zhuǎn)儲(DataDump)存儲方式:海量轉(zhuǎn)儲和增量轉(zhuǎn)儲。存儲狀態(tài):靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。數(shù)據(jù)轉(zhuǎn)儲是指定期地將整個數(shù)據(jù)庫復(fù)制到多個存儲設(shè)備(如磁帶、磁盤)上保存起來的過程,它是數(shù)據(jù)庫恢復(fù)中采用的基本手段。5.6數(shù)據(jù)庫的備份與恢復(fù)2.數(shù)據(jù)庫的故障和恢復(fù)的策略事務(wù)撤銷的具體做法如下:(1)反向掃描日志文件,查找該事務(wù)的更新操作;(2)對該事務(wù)的更新操作執(zhí)行反操作,即對已經(jīng)插入的新記錄進(jìn)行刪除操作,對已刪除的記錄進(jìn)行插入操作,對修改的數(shù)據(jù)恢復(fù)舊值,用舊值代替新值;這樣由后向前逐個掃描該事務(wù)已做的所有更新操作,并做同樣處理,直到掃描到此事務(wù)的開始標(biāo)記,則事務(wù)故障恢復(fù)完畢。事務(wù)故障(TransactionFailure)及其恢復(fù)事務(wù)故障表示由非預(yù)期的、不正常的程序結(jié)束所造成的故障。5.6數(shù)據(jù)庫的備份與恢復(fù)恢復(fù)的具體做法如下:(1)正向掃描日志文件,查找尚未提交的事務(wù),將其事務(wù)標(biāo)識記入撤銷隊列。同時查找已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識記入重做隊列。(2)對撤銷隊列中的各個事務(wù)進(jìn)行撤銷處理。(3)對重做隊列中的各個事務(wù)進(jìn)行重做處理。系統(tǒng)故障(SystemFailure)及其恢復(fù)由于某種原因,造成系統(tǒng)停止運(yùn)轉(zhuǎn),致使所有正在運(yùn)行的事務(wù)都以非正常方式終止,要求系統(tǒng)重新啟動。5.6數(shù)據(jù)庫的備份與恢復(fù)恢復(fù)的具體做法如下:(1)裝入最新的數(shù)據(jù)庫后備副本,使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲的可用狀態(tài)。(2)裝入最新的日志文件副本,根據(jù)日志文件中的內(nèi)容重做已完成的事務(wù)。(3)找出發(fā)生故障前已提交的事務(wù),將其記入重做隊列。再對重做隊列中的各個事務(wù)進(jìn)行重做處理。介質(zhì)故障(MediaFailure)及其恢復(fù)系統(tǒng)在運(yùn)行過程中,由于輔助存儲器介質(zhì)受到破壞,使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失。5.6數(shù)據(jù)庫的備份與恢復(fù)3.備份和恢復(fù)概述備份和恢復(fù)組件是SQLServer的重要組成部分。備份是對SQLServer數(shù)據(jù)庫或事務(wù)日志進(jìn)行復(fù)制,數(shù)據(jù)庫備份記錄了在進(jìn)行備份這一操作時數(shù)據(jù)庫中所有數(shù)據(jù)的狀態(tài),如果數(shù)據(jù)庫因意外而損壞,這些備份文件將在數(shù)據(jù)庫恢復(fù)時用來還原數(shù)據(jù)庫?;謴?fù)就是把遭受破壞、丟失的數(shù)據(jù)或出現(xiàn)錯誤的數(shù)據(jù)庫恢復(fù)到原來的正常狀態(tài)。5.6數(shù)據(jù)庫的備份與恢復(fù)數(shù)據(jù)庫完整備份事務(wù)日志備份差異備份文件和文件組備份數(shù)據(jù)庫備份是指對數(shù)據(jù)庫內(nèi)的所有對象都進(jìn)行備份事務(wù)日志備份只備份數(shù)據(jù)庫的事務(wù)日志內(nèi)容。是完整備份的補(bǔ)充,只備份自從上次數(shù)據(jù)庫完整備份后數(shù)據(jù)庫變動的部分。是針對單一數(shù)據(jù)庫文件或者是文件組做備份數(shù)據(jù)庫備份的類型5.6數(shù)據(jù)庫的備份與恢復(fù)SQLServer提供了幾種方法來減少備份或恢復(fù)操作的執(zhí)行時間。使用多個備份設(shè)備來同時進(jìn)行備份處理。綜合使用完整數(shù)據(jù)庫備份、差異備份或事務(wù)日志備份來減少每次需要備份的數(shù)據(jù)量。使用文件或文件組備份以及事務(wù)日志備份,這樣可以只備份或恢復(fù)那些包含相關(guān)數(shù)據(jù)的文件,而不是整個數(shù)據(jù)庫。備份和還原的策略5.6數(shù)據(jù)庫的備份與恢復(fù)4.備份數(shù)據(jù)庫創(chuàng)建備份設(shè)備使用對象資源管理器創(chuàng)建備份設(shè)備sp_addumpdevice[@devtype=]'device_type',[@logicalname=]'logical_name',[@physicalname=]'physical_name'使用系統(tǒng)存儲過程sp_addumpdevice創(chuàng)建備份設(shè)備5.6數(shù)據(jù)庫的備份與恢復(fù)備份數(shù)據(jù)庫使用對象資源管理器備份數(shù)據(jù)庫(1)完整備份和差異備份(2)事務(wù)日志備份(3)文件和文件組備份使用T-SQL語句備份數(shù)據(jù)庫5.6數(shù)據(jù)庫的備份與恢復(fù)5.恢復(fù)數(shù)據(jù)庫在SQLServer中有三種數(shù)據(jù)庫恢復(fù)模式,分別是簡單恢復(fù)、完全恢復(fù)和批日志恢復(fù)。使用對象資源管理器恢復(fù)數(shù)據(jù)庫使用SQL語句恢復(fù)數(shù)據(jù)庫RESTOREDATABASEdatabase_nameFROM[DISK|URL]='backup_device’[WITHoptions];使用SQLServer維護(hù)計劃使用備份軟件北京市優(yōu)質(zhì)本科課程教材數(shù)據(jù)庫原理及應(yīng)用教程(第5版)“十二五”普通高等教育本科國家級規(guī)劃教材國家級一流線上課程配套教材第6章

數(shù)據(jù)庫設(shè)計第6章

數(shù)據(jù)庫設(shè)計第六章主要內(nèi)容設(shè)計概述及需求分析01OPTION03OPTION物理結(jié)構(gòu)設(shè)計02OPTION概念結(jié)構(gòu)設(shè)計和邏輯結(jié)構(gòu)設(shè)計04OPTION實(shí)施及運(yùn)維6.1數(shù)據(jù)庫設(shè)計的任務(wù)和內(nèi)容數(shù)據(jù)庫設(shè)計的任務(wù):

對于給定的業(yè)務(wù)描述和應(yīng)用環(huán)境,通過合理的數(shù)據(jù)分析、設(shè)計和組織方法,綜合DBMS特性以及系統(tǒng)支撐環(huán)境特性,構(gòu)造最為適合的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能可靠、有效地滿足用戶的信息處理要求。6.1數(shù)據(jù)庫設(shè)計的任務(wù)和內(nèi)容數(shù)據(jù)庫設(shè)計的內(nèi)容:

數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計是指根據(jù)給定的應(yīng)用環(huán)境,進(jìn)行數(shù)據(jù)庫的子模式或模式的設(shè)計。結(jié)構(gòu)設(shè)計(靜態(tài)模型設(shè)計)數(shù)據(jù)庫的行為設(shè)計主要是指數(shù)據(jù)庫用戶的行為和動作設(shè)計,這些行為和動作需要通過應(yīng)用程序?qū)崿F(xiàn),所以也可以將數(shù)據(jù)庫的行為設(shè)計看作是應(yīng)用程序或業(yè)務(wù)邏輯的設(shè)計。行為設(shè)計(動態(tài)模型設(shè)計)6.1數(shù)據(jù)庫設(shè)計的任務(wù)和內(nèi)容數(shù)據(jù)庫設(shè)計方法概述:

直觀設(shè)計法規(guī)范設(shè)計法計算機(jī)輔助設(shè)計法E-R模型方法范式理論方法視圖方法重點(diǎn)介紹6.2各階段主要工作數(shù)據(jù)庫系統(tǒng)規(guī)劃階段需求分析階段設(shè)計階段實(shí)現(xiàn)階段加載和測試階段運(yùn)行和維護(hù)階段6.2各階段主要工作數(shù)據(jù)庫系統(tǒng)規(guī)劃階段:

結(jié)合業(yè)務(wù)需求,對數(shù)據(jù)庫系統(tǒng)進(jìn)行可行性分析和規(guī)劃,判斷是否有必要分析、設(shè)計和開發(fā)該數(shù)據(jù)庫系統(tǒng)。需求分析階段:

綜合運(yùn)用面向過程或面向?qū)ο蠓治龇椒ǎ占c業(yè)務(wù)相關(guān)的數(shù)據(jù)資源和業(yè)務(wù)描述,使用數(shù)據(jù)流圖或用例圖等工具,抽象滿足業(yè)務(wù)需求的數(shù)據(jù)模型(數(shù)據(jù)項)和功能模型。6.2各階段主要工作設(shè)計階段:

根據(jù)需求分析階段的數(shù)據(jù)模型和功能模型,獲取滿足業(yè)務(wù)需求的數(shù)據(jù)庫結(jié)構(gòu)和程序結(jié)構(gòu)。實(shí)現(xiàn)階段:

根據(jù)設(shè)計結(jié)果,完成數(shù)據(jù)庫和程序?qū)崿F(xiàn)工作。加載和測試階段:

實(shí)現(xiàn)數(shù)據(jù)庫和程序后,通過數(shù)據(jù)加載、軟件測試等手段,測試實(shí)現(xiàn)內(nèi)容是否滿足需求分析要求。運(yùn)行和維護(hù)階段6.3需求分析的任務(wù)和方法論需求分析的任務(wù):

編寫需求分析規(guī)格說明書

系統(tǒng)需求分析階段的最后是編寫《系統(tǒng)需求分析規(guī)格說明書》報告。編寫需求分析規(guī)格說明書是一個不斷反復(fù)、逐步深入和逐步完善的過程。調(diào)查分析用戶活動

該過程對相關(guān)用戶的業(yè)務(wù)或舊系統(tǒng)進(jìn)行分析,收集業(yè)務(wù)相關(guān)原始資料,明確未來系統(tǒng)開發(fā)的需求目標(biāo),確定這個目標(biāo)的功能域和數(shù)據(jù)域。轉(zhuǎn)換業(yè)務(wù)需求,確定系統(tǒng)邊界

在熟悉業(yè)務(wù)活動的基礎(chǔ)上,使用規(guī)范化分析方法,與用戶共同明確對新系統(tǒng)的功能性需求、信息需求、非功能性需求等各類需求等。6.3需求分析的任務(wù)和方法論需求分析各階段工作圖

6.3需求分析的任務(wù)和方法論需求分析方法論:

自頂向下的需求分析方法又稱自上而下的需求分析方法,它采用逐層分解的方式,將已知宏觀業(yè)務(wù)的需求按業(yè)務(wù)的執(zhí)行部門、涉及崗位或角色等原則,劃分為相對具體的子業(yè)務(wù)需求,如果子業(yè)務(wù)需求還可細(xì)分,則再次執(zhí)行分解方法,直到分解到基本功能點(diǎn)為止。自頂向下的需求分析方法自底向上的需求分析方法又稱自下而上的需求分析方法,它采用逐層組合的方式,將已知業(yè)務(wù)需求按業(yè)務(wù)間協(xié)同原則,構(gòu)成更為復(fù)雜或者更為宏觀的業(yè)務(wù)需求,如果構(gòu)成的新業(yè)務(wù)需求不滿足目標(biāo)業(yè)務(wù)需求,還將進(jìn)一步組合現(xiàn)有業(yè)務(wù)需求,直到組合后的業(yè)務(wù)需求滿足目標(biāo)需求為止。自底向上的需求分析方法6.4需求分析工具數(shù)據(jù)流圖:

數(shù)據(jù)流圖是一種常用自頂向下需求分析工具。例子:財務(wù)報銷例子6.4需求分析工具數(shù)據(jù)字典:

數(shù)據(jù)字典是對系統(tǒng)中數(shù)據(jù)資源結(jié)構(gòu)和處理過程的詳細(xì)描述,是各類數(shù)據(jù)結(jié)構(gòu)和屬性的清單。數(shù)據(jù)項數(shù)據(jù)結(jié)構(gòu)根數(shù)據(jù)項是數(shù)據(jù)的最小單位,其具體內(nèi)容包括數(shù)據(jù)項名、含義說明、別名、類型、長度、取值范圍、與其他數(shù)據(jù)項的關(guān)系。數(shù)據(jù)結(jié)構(gòu)是有意義的數(shù)據(jù)項集合。內(nèi)容包括:數(shù)據(jù)結(jié)構(gòu)名、組成的數(shù)據(jù)項。數(shù)據(jù)流數(shù)據(jù)存儲處理過程數(shù)據(jù)流表示業(yè)務(wù)執(zhí)行過程中數(shù)據(jù)在系統(tǒng)內(nèi)傳輸?shù)穆窂?。?nèi)容包括:數(shù)據(jù)流名、說明、流出過程、流入過程。數(shù)據(jù)存儲是指處理過程中數(shù)據(jù)的存放場所,通常為數(shù)據(jù)庫、文件或其他業(yè)務(wù)處理過程。處理過程通常描述了數(shù)據(jù)的處理邏輯。處理過程包括處理過程名、說明、輸入(數(shù)據(jù)流)、輸出(數(shù)據(jù)流)和處理(簡要說明)。6.4需求分析工具用例圖:

使用面向?qū)ο蟪绦蛟O(shè)計時,可通過用例圖對參與系統(tǒng)的用戶和用戶可執(zhí)行的功能進(jìn)行描述。6.4需求分析工具用例圖:

使用人形圖標(biāo)表示參與者,用于描述系統(tǒng)的用戶,參與者之間可以是空心箭頭表示繼承關(guān)系使用橢圓圖形表示用例,用于描述用戶可執(zhí)行的業(yè)務(wù)或功能。對于復(fù)雜的業(yè)務(wù)或功能,通常可以進(jìn)一步拆分或以多種方式實(shí)現(xiàn)。6.5案例的需求分析用例圖:

使用面向?qū)ο蟪绦蛟O(shè)計時,可通過用例圖對參與系統(tǒng)的用戶和用戶可執(zhí)行的功能進(jìn)行描述。分解6.5案例的需求分析案例的數(shù)據(jù)流圖分析:

根據(jù)DFD的繪制要素,結(jié)合任課和選課業(yè)務(wù)所涉及的業(yè)務(wù)流程,繪制相關(guān)DFD圖。6.5案例的需求分析案例的數(shù)據(jù)流圖分析:

根據(jù)DFD的繪制要素,結(jié)合任課和選課業(yè)務(wù)所涉及的業(yè)務(wù)流程,繪制相關(guān)DFD圖。6.5案例的需求分析案例的用例圖分析:

根據(jù)用例圖的繪制要素,結(jié)合任課和選課業(yè)務(wù)所涉及的業(yè)務(wù)流程,繪制相關(guān)用例圖。6.5案例的需求分析案例的數(shù)據(jù)字典:

分析案例的數(shù)據(jù)字典包含哪些數(shù)據(jù)結(jié)構(gòu)和包含數(shù)據(jù)項數(shù)據(jù)結(jié)構(gòu)名稱數(shù)據(jù)項內(nèi)容學(xué)生自然情況信息學(xué)生的學(xué)號、學(xué)生的姓名、學(xué)生的年齡和學(xué)生的院系等課程信息課程的編號、課程的名字和授課教師等教師的信息教師的編號、教師的名字、教師的性別、教師的職稱和教授課程等任課信息課程名和授課教師名等學(xué)生選課信息學(xué)生名、課程名和教師名等...主要內(nèi)容設(shè)計概述及需求分析01OPTION03OPTION物理結(jié)構(gòu)設(shè)計02OPTION概念結(jié)構(gòu)設(shè)計和邏輯結(jié)構(gòu)設(shè)計04OPTION實(shí)施及運(yùn)維6.6概念結(jié)構(gòu)設(shè)計主要任務(wù):

將需求分析得到的用戶需求(數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)項),抽象為描述數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)項之間關(guān)系的抽象模型,該抽象模型稱為概念模型。必要性:

從數(shù)據(jù)庫設(shè)計人員角度,將概念結(jié)構(gòu)從邏輯結(jié)構(gòu)設(shè)計中分離后,各階段的任務(wù)相對單一化,概念模型只需根據(jù)業(yè)務(wù)抽象的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)項,分析關(guān)其語義關(guān)聯(lián)關(guān)系,無需關(guān)心DBMS選型或有關(guān)數(shù)據(jù)存儲工作。從業(yè)務(wù)操作人員角度,概念模型不含具體的DBMS的技術(shù)細(xì)節(jié),使得設(shè)計結(jié)果也更容易為用戶所理解,便于與客戶交流并確認(rèn)模型的正確性。6.6概念結(jié)構(gòu)設(shè)計概念模型的E-R表示方式:

E-R模型(EntityRelationshipModel)是廣泛應(yīng)用于數(shù)據(jù)庫設(shè)計工作中的一種概念模型,它利用E-R圖來表示數(shù)據(jù)結(jié)構(gòu)(實(shí)體型)之間的聯(lián)系和數(shù)據(jù)結(jié)構(gòu)(實(shí)體型)與數(shù)據(jù)項(屬性)之間的聯(lián)系。E-R圖的基本元素:

學(xué)生學(xué)號選修(a)實(shí)體(b)屬性(c)聯(lián)系1:11:nm:n

6.6概念結(jié)構(gòu)設(shè)計E-R圖的幾種關(guān)系:

實(shí)體之間的聯(lián)系有一對一(1:1)、一對多(1:n)和多對多(m:n)三種聯(lián)系類型。系主任成績領(lǐng)導(dǎo)系學(xué)生屬于系學(xué)生選修課程111nnm系主任領(lǐng)導(dǎo)系學(xué)生屬于系學(xué)生選修6.6概念結(jié)構(gòu)設(shè)計E-R圖的幾種關(guān)系:

E-R圖的兩個以上實(shí)體間的聯(lián)系。數(shù)量供應(yīng)商供應(yīng)零件nm項目n領(lǐng)導(dǎo)職工1n同一實(shí)體集內(nèi)部各實(shí)體之間的聯(lián)系6.6概念結(jié)構(gòu)設(shè)計例子:

學(xué)生與課程聯(lián)系的完整的E-R圖。6.6概念結(jié)構(gòu)設(shè)計類UML類圖表示方法:

類UML類圖是E-R圖的另一種表示方法,其本質(zhì)還是通過實(shí)體及聯(lián)系刻畫數(shù)據(jù)項的邏輯關(guān)系,只是使用了不用的圖元表示實(shí)體、屬性和聯(lián)系。實(shí)體表示方法:實(shí)體聯(lián)系表示方法:6.6概念結(jié)構(gòu)設(shè)計例子:

學(xué)生與課程聯(lián)系的的UML圖。6.6概念結(jié)構(gòu)設(shè)計基于E-R圖的概念結(jié)構(gòu)設(shè)計過程:

6.6概念結(jié)構(gòu)設(shè)計局部E-R圖:

建立局部E-R模型,就是根據(jù)待開發(fā)系統(tǒng)的需求分析結(jié)果,按系統(tǒng)使用部門、角色或關(guān)鍵業(yè)務(wù)線,對系統(tǒng)建模過程進(jìn)行劃分,使用E-R圖描述每個劃分中包含的實(shí)體、屬性和聯(lián)系,并繪制相應(yīng)的局部E-R圖描述實(shí)體的屬性以及實(shí)體與實(shí)體間的聯(lián)系及類型。局部E-R圖的劃分依據(jù)按關(guān)鍵業(yè)務(wù)線進(jìn)行劃分按系統(tǒng)使用部門進(jìn)行劃分按照角色劃分局部E-R圖中實(shí)體和屬性的區(qū)分依據(jù)分類聚集6.6概念結(jié)構(gòu)設(shè)計局部E-R圖中實(shí)體和屬性的設(shè)計的粒度:

實(shí)體具有描述信息,而屬性沒有。屬性不能與其他實(shí)體具有聯(lián)系,聯(lián)系只能發(fā)生在實(shí)體之間。例子:如果考慮一個系的系主任、學(xué)生人數(shù)、教師人數(shù)、辦公地點(diǎn)等,則系別應(yīng)作為一個實(shí)體6.6邏輯結(jié)構(gòu)設(shè)計全局E-R圖的集成方法:

多元集成法,一次性將多個局部E-R圖合并為一個全局E-R圖二元集成法,先集成兩個重要的局部E-R圖6.6邏輯結(jié)構(gòu)設(shè)計全局E-R圖的集成步驟:

6.7邏輯結(jié)構(gòu)設(shè)計邏輯結(jié)構(gòu)設(shè)計:

數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計的任務(wù)是將概念結(jié)構(gòu)模型轉(zhuǎn)換成特定DBMS所支持的數(shù)據(jù)模型的過程邏輯結(jié)構(gòu)步驟:

6.7邏輯結(jié)構(gòu)設(shè)計轉(zhuǎn)化原則:

總體原則:實(shí)體轉(zhuǎn)換為關(guān)系模式,實(shí)體的屬性為關(guān)系的屬性,實(shí)體的鍵為關(guān)系的鍵。聯(lián)系的處理:一個聯(lián)系轉(zhuǎn)換為一個關(guān)系模式,有三種情況:如果聯(lián)系為1:1,則每個實(shí)體的鍵都是關(guān)系的候選鍵;如果聯(lián)系為1:n,則n端實(shí)體的鍵是關(guān)系的鍵;如果聯(lián)系為n:m,則各實(shí)體鍵的組合是關(guān)系的鍵。E—R圖實(shí)體屬性聯(lián)系關(guān)系模式6.7邏輯結(jié)構(gòu)設(shè)計注意事項轉(zhuǎn)換過程中不要漏掉實(shí)體和聯(lián)系,轉(zhuǎn)換后需要指出實(shí)體的主碼。聯(lián)系轉(zhuǎn)換時區(qū)分聯(lián)系的類型,1:n實(shí)際上并不產(chǎn)生新的關(guān)系。處理兩個以上實(shí)體產(chǎn)生聯(lián)系時,可以根據(jù)實(shí)際需要單獨(dú)設(shè)定一個自增主碼。6.7邏輯結(jié)構(gòu)設(shè)計關(guān)系模式的規(guī)范化:

確定范式級別實(shí)施規(guī)范化處理關(guān)系模式的評價和改進(jìn):

功能評價(出現(xiàn)問題,回溯分析)根據(jù)需求分析,檢查規(guī)范化后的關(guān)系模式集合是否支持用戶所有的要求。性能評價(執(zhí)行效果)對實(shí)際性能進(jìn)行估計,包括邏輯記錄的存取數(shù)、傳送量以及物理結(jié)構(gòu)設(shè)計算法的模型等。模式改進(jìn)——若是性能問題模式改進(jìn)——若是性能問題模式改進(jìn)——若是不滿足用戶要求,則要添加模式和屬性模式改進(jìn)——若是性能問題合并(KEY)

分解(水平和垂直)

合并(KEY)

分解(水平和垂直)

合并(KEY)

分解(水平和垂直)

合并(KEY)

分解(水平和垂直)

合并key、水平分解、垂直分解6.7邏輯結(jié)構(gòu)設(shè)計案例的案例的初始關(guān)系模式設(shè)計將全局E-R模型四個實(shí)體分別轉(zhuǎn)換成四個關(guān)系模式:學(xué)生(學(xué)號,姓名,性別,年齡)課程(課程號,課程名)教師(教師號,姓名,性別,職稱)系(系編號,系名,電話)其中,下劃線表示主碼。將全局E-R模型中四個聯(lián)系也分別轉(zhuǎn)換成四個關(guān)系模式:屬于(教師號,系編號)講授(教師號,課程號)選修(學(xué)號,課程號,成績)擁有(系編號,學(xué)號)6.7邏輯結(jié)構(gòu)設(shè)計逐一對初始關(guān)系模式按照規(guī)范化理論,分析關(guān)系模式上的函數(shù)依賴關(guān)系,明確范式級別。實(shí)體轉(zhuǎn)換的關(guān)系模式和聯(lián)系轉(zhuǎn)換的關(guān)系模式均為3NF,確保了屬性原子化要求,不存在非主屬性對碼的部分函數(shù)依賴和傳遞函數(shù)依賴。6.7邏輯結(jié)構(gòu)設(shè)計案例關(guān)系模式的評價和改進(jìn)可以將屬于聯(lián)系中的系名屬性添加到教師實(shí)體中,形成新的教師實(shí)體并刪除屬于聯(lián)系??梢詫碛新?lián)系中的系編號屬性添加到學(xué)生實(shí)體中,形成新的學(xué)生實(shí)體并刪除擁有聯(lián)系:學(xué)生(學(xué)號,姓名,性別,年齡,系編號)課程(課程號,課程名)教師(教師號,姓名,性別,職稱,系編號)系(系編號,系名,電話)講授(教師號,課程號)選修(學(xué)號,課程號,成績)根據(jù)實(shí)際業(yè)務(wù)需求,還可通過其他分解手段,進(jìn)一步改進(jìn)上述關(guān)系模式。6.8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計AOPTION數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計的任務(wù)有效地實(shí)現(xiàn)邏輯模式確定所采取的存儲策略BOPTION數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計的步驟確定物理結(jié)構(gòu),即確定數(shù)據(jù)庫的存取方法和存儲結(jié)構(gòu)評價物理結(jié)構(gòu),評價的重點(diǎn)是時間和空間效率數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計的任務(wù)和步驟6.8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計的內(nèi)容和方法詳細(xì)分析常用的查詢和更新事務(wù)充分了解DBMS內(nèi)部特征物理結(jié)構(gòu)設(shè)計數(shù)據(jù)查詢事務(wù):(1)查詢所涉及的關(guān)系;(2)查詢條件所涉及的屬性;(3)連接條件所涉及的屬性;(4)查詢列表中涉及的屬性。更新數(shù)據(jù)事務(wù):(1)更新所涉及的關(guān)系;(2)每個關(guān)系上的更新條件所涉及的屬性;(3)更新操作所涉及的屬性。首先要對常用的查詢和對數(shù)據(jù)進(jìn)行更新的事務(wù)進(jìn)行詳細(xì)分析,獲得物理結(jié)構(gòu)設(shè)計所需的各種參數(shù)。6.8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計的內(nèi)容和方法詳細(xì)分析常用的查詢和更新事務(wù)充分了解DBMS內(nèi)部特征物理結(jié)構(gòu)設(shè)計(1)充分了解DBMS的特點(diǎn),例如存儲結(jié)構(gòu)和存儲方法、DBMS所能提供的物理環(huán)境等;(2)充分了解應(yīng)用環(huán)境,特別是應(yīng)用的處理頻率和響應(yīng)時間要求;(3)熟悉外存設(shè)備的特性,例如設(shè)備的I/O特性等。其次,要充分了解所使用的DBMS的內(nèi)部特征,特別是系統(tǒng)提供的存取方法和存儲結(jié)構(gòu)。6.8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計的內(nèi)容和方法詳細(xì)分析常用的查詢和更新事務(wù)充分了解DBMS內(nèi)部特征物理結(jié)構(gòu)設(shè)計(1)確定數(shù)據(jù)的存儲結(jié)構(gòu)(2)設(shè)計合適的存取路徑(3)確定數(shù)據(jù)的存放位置(4)確定系統(tǒng)配置在對上述關(guān)鍵信息和參數(shù)進(jìn)行充分了解以及確定之后,設(shè)計人員就可以開始進(jìn)行物理結(jié)構(gòu)設(shè)計:6.8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計確定物理結(jié)構(gòu)AOPTION存儲記錄結(jié)構(gòu)的設(shè)計存儲記錄結(jié)構(gòu)包括記錄的組成、數(shù)據(jù)項的類型和長度,以及邏輯記錄到存儲記錄的映射。文件組織或文件結(jié)構(gòu)是組成文件的存儲記錄的表示法。文件結(jié)構(gòu)應(yīng)該表示文件格式、邏輯次序、物理次序、存取路徑和物理設(shè)備的分配。決定存儲結(jié)構(gòu)的主要因素包括存取時間、存儲空間和維護(hù)代價三個方面,設(shè)計時應(yīng)當(dāng)根據(jù)實(shí)際情況對這三個方面進(jìn)行綜合權(quán)衡。聚集——針對重復(fù)的存儲和高頻的查詢。索引——保證數(shù)據(jù)的完整性,提高查詢效率,但注意維護(hù)成本。6.8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計確定物理結(jié)構(gòu)AOPTION存儲記錄結(jié)構(gòu)的設(shè)計聚集——為了提高查詢速度,把在一個(或一組)屬性上具有相同值的元組集中地存放在一個物理塊中。其中,這個(或這組)屬性稱為聚集碼。聚集的作用(1)可以節(jié)省存儲空間;(2)可以大大提高按聚集碼進(jìn)行查詢的效率。6.8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計確定物理結(jié)構(gòu)AOPTION存儲記錄結(jié)構(gòu)的設(shè)計索引——在主碼上應(yīng)該建立唯一索引,這樣不但可以提高查詢速度,還能避免主碼重復(fù)值的錄入,

溫馨提示

  • 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

提交評論