數(shù)據(jù)庫原理總結(jié)_第1頁
數(shù)據(jù)庫原理總結(jié)_第2頁
數(shù)據(jù)庫原理總結(jié)_第3頁
數(shù)據(jù)庫原理總結(jié)_第4頁
數(shù)據(jù)庫原理總結(jié)_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理總結(jié)簡介第一篇:數(shù)據(jù)庫原理總結(jié)1關(guān)系的范式及規(guī)范化 范式是衡量關(guān)系模式優(yōu)劣的標(biāo)準(zhǔn)。范式級別越高,其數(shù)據(jù)冗余和操作異常現(xiàn)象就越少。第一范式:如果一個關(guān)系模式r的所有屬性都是不可分的基本數(shù)據(jù)項,則這個關(guān)系屬于第一范式。第二范式:若關(guān)系模式r屬于第一范式,且每個非主屬性都完全函數(shù)依賴于主鍵,則r屬于第二范式。第三范式:若關(guān)系模式r屬于第一范式,且每個非主屬性都不傳遞依賴于主關(guān)鍵字,則r屬于第三范式。bc范式:若關(guān)系模式r屬于第一范式,且每個屬性都不傳遞依賴于主關(guān)鍵字,則r屬于bc范式。 2對模式的分解顯然不是隨意的,主要涉及以下兩個原則:無損聯(lián)結(jié):當(dāng)對關(guān)系模式r進(jìn)行分解時,r的元組將分別在

2、相應(yīng)屬性集進(jìn)行投影而產(chǎn)生新的關(guān)系。如果對新的關(guān)系進(jìn)行自然聯(lián)接得到的元組的集合與原關(guān)系完全一致,則稱為無損聯(lián)結(jié)。保持依賴:當(dāng)對關(guān)系模式r進(jìn)行分解時,r的函數(shù)依賴集也將按相應(yīng)的模式進(jìn)行分解。如果分解后總的函數(shù)依賴集與原函數(shù)依賴集保持一致,則稱為保持依賴。 3事務(wù)的定義:事務(wù)是數(shù)據(jù)庫的邏輯工作單位,由用戶定義的一組操作序列組成,序列中的操作要么全做要么全不做。 4簡述事務(wù)所具有的acid(原子性,一致性,隔離性,持續(xù)性)特性:事務(wù)的acid特性是: 原子性:事務(wù)是一個不可分割的單位。一致性:事務(wù)對數(shù)據(jù)庫操作的結(jié)果是將數(shù)據(jù)庫從一個一致性狀態(tài)變?yōu)榱硪粋€一致性狀態(tài)。隔離性:多個事務(wù)的并發(fā)執(zhí)行不互相干擾。持

3、續(xù)性:事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就是永久性的。 5事務(wù)的調(diào)度:事務(wù)的執(zhí)行次序稱為調(diào)度。若多個事務(wù)是按照某一次序串行地執(zhí)行,則稱事務(wù)的調(diào)度是串行調(diào)度。若多個事務(wù)同時交叉地并行執(zhí)行,則稱事務(wù)的調(diào)度為并發(fā)調(diào)度。 6事務(wù)并發(fā)執(zhí)行產(chǎn)生的不一致情況及避免:并發(fā)操作可能會產(chǎn)生丟失修改,不能重復(fù)讀和讀”臟”數(shù)據(jù)這三種不一致情況,采用封鎖機制來進(jìn)行并發(fā)控制,可避各種不一致情況。一級封鎖協(xié)議可以避免丟失修改,二級封鎖協(xié)議可以避免丟失修改和讀”臟”數(shù)據(jù),三級封鎖協(xié)議可以避免丟失修改、不能重復(fù)讀和讀”臟”數(shù)據(jù)。 7事務(wù)的commit語句和rollback語句的功能是什么?答:commit語句表示事務(wù)執(zhí)行成功

4、地接結(jié)束(提交),此時告訴系統(tǒng),db要進(jìn)入一個新的正確狀態(tài),該事務(wù)對db的所有更新都已交付實施(寫入磁盤)。rollback語句表示事務(wù)執(zhí)行不成功地結(jié)束(應(yīng)該“回退”)此時告訴系統(tǒng),已發(fā)生錯誤,db可能處在不正確的狀態(tài),該事務(wù)對db的所有更新必須被撤消,db應(yīng)恢復(fù)該事務(wù)到初始狀態(tài)。 8活鎖和死鎖:活鎖:在多個事務(wù)并發(fā)執(zhí)行的過程中,可能會存在某個總有機會獲得鎖的事務(wù)卻永遠(yuǎn)也沒得到鎖的現(xiàn)象,可以通過“先來先服務(wù)”的策略預(yù)防活鎖的發(fā)生。死鎖:在多個事務(wù)并發(fā)執(zhí)行過程中,多個并發(fā)事務(wù)處于相互等待的狀態(tài)的現(xiàn)象。 9死鎖的預(yù)防:數(shù)據(jù)庫當(dāng)中預(yù)防死鎖的方法有兩種。第一種方法是要求每個事務(wù)必須一次性地將所有要使用

5、的數(shù)據(jù)加鎖或必須按照一個預(yù)定的加鎖順序?qū)κ褂玫降臄?shù)據(jù)加鎖。第二種方法是每當(dāng)處于等待狀態(tài)的事務(wù)由可能導(dǎo)致死鎖時,就不再等待下去,強行回滾該事務(wù)。 10完整性約束的定義:關(guān)系數(shù)據(jù)庫提供的三類完整性約束:實體完整性、參照完整性和用戶自定義完整性。實體完整性:實體完整性約束是指任何基本表(關(guān)系)的主鍵(主關(guān)鍵字)中的每一個屬性列都不能取空值,即基本表中的每一個元組在主鍵上的分量都有值。參照完整性:根據(jù)參照完整性原則,用戶只要定義了某一個關(guān)系(基本表)的外鍵(外部關(guān)鍵字),系統(tǒng)就會控制外鍵的值要么為空,要么等于被參照關(guān)系中某一個主鍵的值,這就是系統(tǒng)對外鍵的一種約束。用戶定義完整性:用戶定義完整性約束條件

6、的作用對象可以是屬性列、元組或關(guān)系(基本表),其中對屬性列的約束可以規(guī)定屬性列的數(shù)據(jù)類型、取值范圍等;對元組的約束可以規(guī)定元組中各屬性間的相互關(guān)系;而對關(guān)系的約束則可以規(guī)定各元組間或關(guān)系間的相互聯(lián)系。 11故障恢復(fù)的原則:對數(shù)據(jù)庫的影響有兩種可能性:一是數(shù)據(jù)庫本身被破壞;二是數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確,這是因為事務(wù)的運行被非正常終止造成的。 12恢復(fù)算法一般由兩部分組成:在正常事務(wù)處理時采取措施,保證有足夠的冗余信息可用于故障恢復(fù)。故障發(fā)生后采取措施,將數(shù)據(jù)庫內(nèi)容恢復(fù)到某個保證數(shù)據(jù)庫一致性、事務(wù)原子性及持久性的狀態(tài)。 13數(shù)據(jù)庫在運行過程中可能產(chǎn)生的故障有哪幾類? 答:1)事務(wù)故障:事

7、務(wù)在運行過程中由于種種原因,如輸入數(shù)據(jù)的錯誤,運算溢出,違反了某些完整性限制,某些應(yīng)用程序的錯誤,以及并行事務(wù)發(fā)生死鎖等,使事務(wù)未能運行到正常中指點之前就被撤消了,這種情況稱為“事務(wù)故障”。2)系統(tǒng)故障:系統(tǒng)故障是指系統(tǒng)在運行過程中,由于某些原因,如os和dbms代碼錯誤,操作員操作事物。特定類型的硬件錯誤(cpu故障),突然停電等造成系統(tǒng)停止運行,致使事物在執(zhí)行過程中以非控方式中指。這時。內(nèi)存中的信息丟失,而存儲在外存儲上的數(shù)據(jù)未受影響,這種情況稱為“系統(tǒng)故障”。3)介質(zhì)故障:系統(tǒng)在運行過程中,由于某種硬件故障,如磁盤損壞,磁頭碰撞,或由于os的某種潛在的錯誤。瞬間強磁場干擾,使存儲在外存的

8、數(shù)據(jù)部分損失或全部損失,稱之為“介質(zhì)故障”。 14故障恢復(fù)技術(shù):數(shù)據(jù)轉(zhuǎn)儲、日志文件、檢查點方法、數(shù)據(jù)庫鏡像 15關(guān)系的完整性約束:域完整性約束:關(guān)系中屬性的值應(yīng)是域中的值,并由語義決定其能否為空值。實體完整性約束:關(guān)系中的主鍵不能為空值。參照完整性約束:關(guān)系的外鍵必須是另一個關(guān)系主鍵的有效值或者是空值。用戶自定義完整性約束:正對某一具體數(shù)據(jù)的約束條件,由應(yīng)用環(huán)境決定。 16故障恢復(fù)原理是冗余可分為副本和日志?;謴?fù)算法:在正常事物處理時采取措施,保證有足夠的冗余信息可用于故障恢復(fù)、故障發(fā)生后采取措施,將數(shù)據(jù)庫內(nèi)容恢復(fù)到某個保證數(shù)據(jù)庫一致性、事物原子性及持久性的狀態(tài)。 17事務(wù)故障的恢復(fù):事務(wù)故障

9、是指事務(wù)在運行至正常終止點前被中止,這時恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(undo)此事務(wù)已對數(shù)據(jù)庫進(jìn)行的修改。事務(wù)故障的恢復(fù)是由系統(tǒng)自動完成的,對用戶是透明的,系統(tǒng)的恢復(fù)步驟是: 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。 對該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫。這樣,如果記錄中是插入操作,則相當(dāng)于做刪除操作(因此時“更新前的值”為空)。若記錄中是刪除操作,則做插入操作,若是修改操作,則相當(dāng)于用修改前值代替修改后值。 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。 如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)就完成了

10、。 18系統(tǒng)故障的恢復(fù):系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因有兩個,一是未完成事務(wù)對數(shù)據(jù)庫的更新可能已寫入數(shù)據(jù)庫,二是已提交事務(wù)對數(shù)據(jù)庫的更新可能還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫。因此,恢復(fù)操作就是要撤銷故障發(fā)生時未完成的事務(wù),重做已完成的事務(wù)。系統(tǒng)恢復(fù)步驟如下:正向掃描日志文件,即從頭掃描日志文件,找出在故障發(fā)證前已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)示記入重做隊列,同時找出故障發(fā)證時尚未完成的事務(wù),將其事務(wù)標(biāo)識計入撤銷隊列、對撤銷隊列中的各個事務(wù)進(jìn)行撤銷處理、對重做隊列中的各個事務(wù)進(jìn)行重做掃描 19日志文件作用及建立原因:答:日志文件是用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。目的是進(jìn)行事物故障恢復(fù);進(jìn)行系統(tǒng)

11、故障恢復(fù);協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。 20三級模式:三級模式結(jié)構(gòu):數(shù)據(jù)庫的三級模式由外模式、概念模式和內(nèi)模式三級模式構(gòu)成。概念模式:簡稱模式,又稱數(shù)據(jù)庫模式、邏輯模式。一個數(shù)據(jù)庫只有一個概念模式,它是數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu)的中間層,概念模式是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯描述,而不是數(shù)據(jù)庫本身,它是裝配數(shù)據(jù)的一個結(jié)構(gòu)框架。外模式:外模式簡稱子模式,又稱用戶模式,是數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是用戶與數(shù)據(jù)庫系統(tǒng)之間的接口。一個數(shù)據(jù)庫可以有多個外模式,設(shè)置外模式的優(yōu)點如下:方便用戶使用,簡化用戶接口、保證數(shù)據(jù)的獨立性、有利于數(shù)據(jù)共享、有利于數(shù)據(jù)安全

12、和保密。內(nèi)模式:內(nèi)模式也稱存儲模式。是對數(shù)據(jù)庫中數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示形式。一個數(shù)據(jù)庫只能有一個內(nèi)模式。 21兩級映像:外模式/概念模式映像:外模式/概念模式映像定義了各個外模式與概念模式間的映像關(guān)系。概念模式/內(nèi)模式映像:概念模式/內(nèi)模式映像定義了數(shù)據(jù)庫全局邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系。 22兩極結(jié)構(gòu)的獨立性:物理數(shù)據(jù)獨立性:如果數(shù)據(jù)庫內(nèi)模式要修改,即數(shù)據(jù)庫的物理結(jié)構(gòu)有所變化,那么只要對概念模式/內(nèi)模式做相應(yīng)的修改即可。概念模式/內(nèi)模式提供了數(shù)據(jù)的物理數(shù)據(jù)獨立性。邏輯數(shù)據(jù)獨立性:如果概念模式要修改,例如增加記錄類型或增加數(shù)據(jù)項,那么只要對外模式/概念模式映

13、像做相應(yīng)的修改,就可以使外模式和應(yīng)用程序盡可能保持不變。這樣,就稱數(shù)據(jù)庫打到了邏輯數(shù)據(jù)獨立性。外模式/概念模式映像提供了數(shù)據(jù)的邏輯獨立性。 23數(shù)據(jù)庫技術(shù)的發(fā)展階段:工管理階段(數(shù)據(jù)部保存、沒有對數(shù)據(jù)進(jìn)行管理的軟件系統(tǒng)、沒有文件的概念、一組數(shù)據(jù)對應(yīng)于一個程序,數(shù)據(jù)時面向應(yīng)用的)、文件系統(tǒng)階段(數(shù)據(jù)需要長期保存在外存上供反復(fù)使用、程序和數(shù)據(jù)之間有了一定得獨立性、文件的形式已經(jīng)多樣化、數(shù)據(jù)的存取基本以記錄為單位)、數(shù)據(jù)庫系統(tǒng)階段(數(shù)據(jù)結(jié)構(gòu)化、數(shù)據(jù)共享、減少數(shù)據(jù)冗余、具有較高的數(shù)據(jù)獨立性、方便用戶接口、統(tǒng)一的數(shù)據(jù)管理與控制功能) 某校與教學(xué)管理相關(guān)的3個關(guān)系模式的結(jié)構(gòu)如下: 學(xué)生(學(xué)號、姓名、年齡、

14、性別、所在系) 課程(課程號、課程名、開課系、任課教師) 學(xué)習(xí)(學(xué)號、課程號、成績) 試進(jìn)行如下操作: 1.創(chuàng)建“教學(xué)”數(shù)據(jù)庫,在“教學(xué)”數(shù)據(jù)庫中創(chuàng)建“學(xué)生”、“課程”、“學(xué)習(xí)”這3個基本表,并說明主鍵和外鍵。 2.使用sql的查詢語句表達(dá)下列查詢 (1)查詢劉老師所授課程的課程號和課程名 (2)查詢年齡大于23歲的男學(xué)生的學(xué)號和姓名 (3)查詢至少修讀劉老師所授課程中一門課程的女學(xué)生和姓名 (4)查詢王樂同學(xué)不學(xué)的課程的課程號 (5)查詢至少修讀兩門課程的學(xué)生學(xué)號 (6)查詢?nèi)繉W(xué)生都修讀的課程的課程號與課程名 (7)查詢修讀課程中包含劉老師所授課程的學(xué)生學(xué)號 3)select 姓名 fro

15、m 學(xué)生 where 性別=女 and exists (select * from 學(xué)習(xí) where 學(xué)習(xí).學(xué)號=學(xué)生.學(xué)號 and 課程號 in (select 課程號 from 課程 where 任課教師 like 劉%) 4) select 課程號 from 課程 where not exists (select * from 學(xué)習(xí) where 學(xué)習(xí).課程號=課程.課程號 and 學(xué)號 in (select 學(xué)號 from 學(xué)生 where 姓名=王樂 ) 5)select 學(xué)號 from 學(xué)生 group by 學(xué)號 having count(*)>=2 6)select 課程號

16、,課程名 from 課程 where not exists (select * from 學(xué)生 where not exists (select * 學(xué)號 from 學(xué)習(xí) where 學(xué)習(xí).課程號=課程.課程號 and 學(xué)習(xí).學(xué)號=學(xué)生.學(xué)號 ) 7)select 學(xué)號 from 學(xué)習(xí) where exists (select * from 學(xué)習(xí) where 課程號 in (select * from 課程號 from 課程 where 任課教師 like 劉%)) 試用sql查詢語句表達(dá)下列對教學(xué)數(shù)據(jù)庫中3個基本表“學(xué)生”、“課程”、“學(xué)習(xí)”的查詢 (1)統(tǒng)計有學(xué)生修讀的課程門數(shù) (2)求修

17、讀c4課程的學(xué)生的平均年齡 (3)求劉老師所授課程的每門課程的學(xué)生平均成績 (4)統(tǒng)計每門課程學(xué)生的修讀人數(shù)(超過10人的課程才統(tǒng)計),要求輸出課程號和修讀人數(shù),查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號升序排列 (5)查詢學(xué)號比王樂同學(xué)大,而年齡比他小的學(xué)生姓名 (6)查詢姓名以王打頭的所有學(xué)生的姓名和年齡 (7)在“學(xué)習(xí)”表中檢索成績?yōu)榭罩档膶W(xué)生學(xué)號和課程號 (8)求年齡大于女同學(xué)平均年齡的男學(xué)生姓名和年齡 (9)求年齡大于所有女同學(xué)年齡的男學(xué)生姓名和年齡 select count(distinct 課程號) from 學(xué)習(xí) select avg(年齡) from 學(xué)生 where ex

18、ists (select * from 學(xué)習(xí) where學(xué)生.學(xué)號=學(xué)習(xí).學(xué)號 and 課程號=c4) select avg(成績) from 學(xué)習(xí) where group by 課程號 having 課程號 in (select 課程號 from 課程 where 任課教師 like 劉%) select 課程號,count(*) as c_count from 學(xué)習(xí) having c_count>10 order by c_count desc,課程號 select 姓名 from 學(xué)生 where 學(xué)號>all(select 學(xué)號from 學(xué)生where 姓名=王樂) and

19、 年齡(select avg(年齡) from 學(xué)生 where 性別=女) select 姓名, 年齡 from 學(xué)生where 性別=男 and年齡>(select max(年齡) from 學(xué)生 where 性別=女) 試用sql更新語句表達(dá)對“教學(xué)”數(shù)據(jù)庫中3個基本表“學(xué)生”、“課程”和“學(xué)習(xí)”的各個更新操作 (1)向基本表“學(xué)生”中插入一個學(xué)生組(s009,吳,18) (2)在基本表“學(xué)生”中查詢每一門課程成績都大于等于80分的學(xué)生學(xué)號、姓名和性別,并把查詢到的值送往另一個已存在的基本表“結(jié)果”(學(xué)號,姓名,性別)中 (3)在基本表“學(xué)習(xí)”中刪除尚無成績的元組 (4)把王樂同學(xué)

20、在“學(xué)習(xí)”基本表中的課程和成績?nèi)縿h除 (5)把修讀java課程不及格的成績?nèi)臑榭罩?(6)把低于總平均成績的女同學(xué)成績提高5% (7)在基本表“學(xué)習(xí)”中修改c4課程的成績,若成績小于等于75分時提高5%,若成績大于75分時提高4%(用兩個update語句實現(xiàn)) insert into 學(xué)生 values (s009,吳,18) insert into 結(jié)果(學(xué)號,姓名,性別) select學(xué)號,姓名,性別 from 學(xué)生 where not exists (select * from 學(xué)習(xí) where 學(xué)生.學(xué)號=學(xué)習(xí).學(xué)號 and 成績75 and 課程號=c4 update 學(xué)習(xí) set 成績=成績*1.05 where 成績908)、 查詢至少有一門課的成績在80分以上的男同學(xué)的學(xué)號;select snofrom student awhere exists (select

溫馨提示

  • 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

提交評論