版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫原理期末總結(jié)數(shù)據(jù)庫原理期末總結(jié)數(shù)據(jù)庫原理期末總結(jié)V:1.0精細(xì)整理,僅供參考數(shù)據(jù)庫原理期末總結(jié)日期:20xx年X月緒論:信息:信息是關(guān)于現(xiàn)實(shí)世界事物的存在方式或運(yùn)動(dòng)狀態(tài)的反映的綜合,是一種被加工為特定形式的數(shù)據(jù),有意義和價(jià)值。數(shù)據(jù):是描述事物的符號記錄,是信息的具體表現(xiàn)形式。數(shù)據(jù)庫:是長期存儲(chǔ)在計(jì)算機(jī)內(nèi)的、有組織的、可共享的大量的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù):按一定的數(shù)據(jù)模型組織、描述和存儲(chǔ),具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,可共享。數(shù)據(jù)庫管理系統(tǒng)位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。主要功能:數(shù)據(jù)定義、組織、存儲(chǔ)、操縱,數(shù)據(jù)庫的事務(wù)管理和運(yùn)行管理、建立和維護(hù)。數(shù)據(jù)庫系統(tǒng)是在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫的系統(tǒng)。包括:數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員(DBA)、用戶。數(shù)據(jù)處理:對各種數(shù)據(jù)進(jìn)行收集、儲(chǔ)存、加工和傳播等。數(shù)據(jù)管理:數(shù)據(jù)處理的中心問題,對數(shù)據(jù)進(jìn)行分類、組織、編碼、存儲(chǔ)、檢索和維護(hù)。數(shù)據(jù)管理的三個(gè)階段:人工管理、文件系統(tǒng)、數(shù)據(jù)庫系統(tǒng)階段。數(shù)據(jù)庫與文件系統(tǒng)的根本區(qū)別:數(shù)據(jù)結(jié)構(gòu)化。在數(shù)據(jù)庫中,不僅文件內(nèi)部數(shù)據(jù)彼此相關(guān),而且文件之間在結(jié)構(gòu)上也有機(jī)地聯(lián)系在一起。數(shù)據(jù)的獨(dú)立性包括:a.物理獨(dú)立性:用戶的應(yīng)用程序與存儲(chǔ)在磁盤上的數(shù)據(jù)庫中的數(shù)據(jù)是相互獨(dú)立的。b.邏輯獨(dú)立性:應(yīng)用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)相互獨(dú)立。數(shù)據(jù)的獨(dú)立性是由DBMS的二級映象功能來保證的。DBMS必須提供的控制功能:安全性保護(hù)、完整性檢查、并發(fā)控制、數(shù)據(jù)庫恢復(fù)。模型現(xiàn)實(shí)世界特征的模擬和抽象;數(shù)據(jù)模型是現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象。兩個(gè)不同層次的模型:a.概念模型(數(shù)據(jù)庫設(shè)計(jì))b.邏輯模型(DBMS的實(shí)現(xiàn))和物理模型(系統(tǒng)內(nèi)部的表示和存取方法)抽象過程:現(xiàn)實(shí)世界——信息世界——機(jī)器世界。數(shù)據(jù)模型的三要素:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、完整性約束數(shù)據(jù)結(jié)構(gòu):組成數(shù)據(jù)庫的對象類型的集合、對系統(tǒng)靜態(tài)特性的描述。數(shù)據(jù)操作:檢索(查詢)和更新(包括插入、刪除、修改)兩大類操作。完整性約束:數(shù)據(jù)及其聯(lián)系所滿足的制約和依存規(guī)則,以保證數(shù)據(jù)的正確、有效和相容。碼(Key):唯一標(biāo)識實(shí)體的屬性集。E-R圖表示實(shí)體型、屬性和聯(lián)系的方法:實(shí)體型——矩形;聯(lián)系——菱形;屬性——橢圓。關(guān)系模型是建立在嚴(yán)格的數(shù)學(xué)概念之上的,它的數(shù)據(jù)結(jié)構(gòu)是一張二維表。關(guān)系:一個(gè)關(guān)系對應(yīng)一張二維表。元組:一行。屬性:一列。主碼:可唯一標(biāo)識元組的屬性或?qū)傩越M,也稱為關(guān)系的鍵。關(guān)系模式:對關(guān)系的描述,一般表示為:關(guān)系名(屬性1,屬性2,…,屬性n),如:學(xué)生(學(xué)號,姓名,年齡,性別,專業(yè),年級)。數(shù)據(jù)操縱主要包括查詢、插入、刪除和修改數(shù)據(jù)。數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu):外模式、模式、內(nèi)模式。兩層映象:外模式/模式映像、模式/內(nèi)模式映像。外模式/模式映像:當(dāng)模式改變時(shí),外模式/模式的映像要作相應(yīng)的改變,以保證外模式保持不變。保證了數(shù)據(jù)的邏輯獨(dú)立性。模式/內(nèi)模式映像:定義數(shù)據(jù)邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)之間的對應(yīng)關(guān)系,當(dāng)數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)改變時(shí),模式/內(nèi)模式的映像也必須作相應(yīng)的修改,使得模式保持不變。保證了數(shù)據(jù)的物理獨(dú)立性。模式:數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述。只是對記錄型的描述,而與具體的值無關(guān);不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),還要定義數(shù)據(jù)間的聯(lián)系,安全性、完整性要求。外模式:數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。注:一個(gè)應(yīng)用程序只能使用一個(gè)外模式。內(nèi)模式:也稱存儲(chǔ)模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。注:一個(gè)數(shù)據(jù)庫只能有一個(gè)內(nèi)模式。第二章 關(guān)系數(shù)據(jù)庫:關(guān)系的三種完整性約束:實(shí)體完整性、參照完整性、用戶自定義的完整性。域:具有相同數(shù)據(jù)類型的值的集合。域中值的個(gè)數(shù)成為基數(shù)。域表示屬性的取值范圍。笛卡爾積:給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n},其中每一個(gè)元素(d1,d2,…,dn)叫做一個(gè)n元組(n-tuple)或簡稱元組(Tuple)。元素中的每一個(gè)值di叫做一個(gè)分量(Component)。例如:給出三個(gè)域:D1=導(dǎo)師集合SUPERVISOR={張,劉易}D2=專業(yè)集合SPECIALITY={計(jì)算機(jī),信息}D3=研究生集合POSTGRADUATE={李勇,劉晨,王敏}則D1×D2×D3={(張,計(jì)算機(jī),李勇),(張,計(jì)算機(jī),劉晨),(張,計(jì)算機(jī),王敏),(張,信息,李勇),(張,信息,劉晨),(張,信息,王敏),(劉易,計(jì)算機(jī),李勇),(劉易,計(jì)算機(jī),劉晨),(劉易,計(jì)算機(jī),王敏),(劉易,信息,李勇),(劉易,信息,劉晨),(劉易,信息,王敏)}關(guān)系:D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的關(guān)系。n是關(guān)系的目或度。由于域可以相同,為了加以區(qū)分,必須對每列起一個(gè)名字,稱為屬性(Attribute)。候選碼:若關(guān)系中的某一屬性組的值能唯一地標(biāo)識一個(gè)元組,則該屬性組就是候選碼。若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼。主碼的屬性稱為主屬性關(guān)系的三種類型:基本關(guān)系、查詢表、視圖。注:基本表是實(shí)際存在的表;查詢表式查詢結(jié)果對應(yīng)的表;視圖表是虛表,不對應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù)。實(shí)體完整性規(guī)則:若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。用戶定義的完整性:針對某一具體關(guān)系數(shù)據(jù)庫的約束條件。并:R∪S={t|t∈R∨t∈S} 差:R-S={t|t∈R∧tS} 交:R∩S={t|t∈R∧t∈S}廣義笛卡爾積:R×S={tr⌒ts|tr∈R∧ts∈S}例如:給定兩個(gè)關(guān)系R和S 則有: 選擇:在關(guān)系R中選擇滿足給定條件的諸元組。F(R)={t|t∈R∧F(t)=‘真’}例:查詢信息系(IS)全體學(xué)生:Sdept=‘IS’(Student) 查詢年齡小于20歲的學(xué)生:Sage<20(Student)投影:關(guān)系R上的投影,是從R中選擇出若干屬性列構(gòu)成新的關(guān)系。A(R)={t[A]|t∈R}例:查詢學(xué)生的姓名和所在的系:Sname,Sdept(Student) 查詢學(xué)生關(guān)系中有哪些系:Sdept(Student)連接:從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組。R?S={tr⌒ts|tr∈R∧ts∈S∧tr[A]ts[B]}AB等值連接:為“=”的連接為等值連接自然連接:兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且去掉結(jié)果中重復(fù)的屬性列。例5對于下面的兩個(gè)關(guān)系R和S,考慮三個(gè)連接 除運(yùn)算:給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運(yùn)算得到一個(gè)新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影的集合。R÷S={tr[X]|tr∈R∧Y(S)Yx}例6對于下面的關(guān)系R和S,計(jì)算R÷S。 對于關(guān)系R,A可以取四個(gè)值:{a1,a2,a3,a4},其中:a1的象集(B,C)a1={(b1,c2),(b2,c3),(b2,c1)}a2的象集(B,C)a2={(b3,c7),(b2,c3)}a3的象集(B,C)a3={(b4,c6)} a4的象集(B,C)a4={(b6,c6)} S在(B,C)上的投影為:{(b1,c2),(b2,c1),(b2,c3)} R÷S的結(jié)果為:幾個(gè)例子關(guān)系:例7查詢選修2號課程的學(xué)生的學(xué)號 Sno(Cno=‘2’(SC))例9查詢至少選修了一門其直接先行課為5號課程的學(xué)生姓名。 Sname(Cpno=‘5’(Course)?SC?Sno,Sname(Student))例10查詢選修了全部課程的學(xué)生的學(xué)號和姓名。 Sno,Cno(SC)÷Cno(Course)?Sno,Sname(Student)元組關(guān)系演算以元組變量作為為此變元的基本對象。典型的關(guān)系演算語言:ALPHA。第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL:SQL的三級模式結(jié)構(gòu):外模式——視圖和部分基本表、模式——基本表、內(nèi)模式——存儲(chǔ)文件。定義模式:CREATESCHEMA<模式名>AUTHORIZATION<用戶名>CREATESCHEMA“S-T”AUTHORIZATIONWANG;為用戶wang定義了一個(gè)模式S-T。刪除模式:DROPSCHEMA<模式名><CASCADE|RESTRICT>注:CASCADE和RESTRICT兩者必選其一。 CASCADE—級聯(lián)刪除:把該模式中所有的數(shù)據(jù)庫對象全部一起刪除。 RESTRICT—限制刪除:如果該模式中已經(jīng)定義了下屬的數(shù)據(jù)庫對象,則拒絕該刪除語句的執(zhí)行。沒有下屬對象時(shí)才能執(zhí)行。 例:DROPSCHEMAZHANGCASCADE;刪除模式zhang,同時(shí)已經(jīng)定義的表也被刪除。模式實(shí)際上定義了一個(gè)命名空間,在這個(gè)空間可以進(jìn)一步定義該模式包含的數(shù)據(jù)庫對象:基本表、視圖、索引等。創(chuàng)建了一個(gè)模式,就建立了一個(gè)數(shù)據(jù)庫的命名空間,一個(gè)框架,這個(gè)空間中首先應(yīng)定義的是該模式包含的基本表。非空值約束:不知道、不確定或無法填入的值。 唯一性約束:指明基本表上的某個(gè)列或某些列的組合在不同的元組中的取值不能相同。主鍵約束:用于定義基本表的主鍵。 外鍵約束:是指一個(gè)表(稱從表)的一個(gè)列或列組合,它的值需要引用另一個(gè)表(稱引用表)的主鍵或唯一性鍵的值。ONDELETE選項(xiàng)是設(shè)置當(dāng)引用表中具有外鍵約束的行被刪除時(shí),系統(tǒng)所做的處理。有三種可能的處理辦法:RESTRICT:缺省選項(xiàng),引用表中凡是被從表所引用的行都不準(zhǔn)刪除;CASCADE:從表中所有引用了引用表中被刪除行的行也隨之被刪除;SETNULL:外鍵的值被設(shè)置為NULL。定義基本表:CREATETABLE<表名>;注:“<>”中的內(nèi)容是必選項(xiàng)“[]”中的內(nèi)容是可選項(xiàng);DEFAULT選項(xiàng)是列指定缺省值。建立一個(gè)學(xué)生表Student,課程表course,選課表sc。 CREATETABLEStudent(SnoCHAR(5)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINTDEFAULT18,SdeptCHAR(15)); CREATETABLECourse(CnoCHAR(2)PRIMARYKEY,CnameCHAR(30)NOTNULL,CpnoCHAR(2),CcreditSMALLINT)); CREATETABLESC(SnoCHAR(5),CnoCHAR(2),GradeSMALLINT, PRIMARYKEY(Sno,Cno), FOREIGNKEY(Sno)REFERENCESStudent(Sno), FOREIGNKEY(Cno)REFERENCESCourse(Cno)ONDELETECASCADE));修改基本表:ALTERTABLE<表名>+[ADD[<新列名><數(shù)據(jù)類型>][完整性約束]] [DROP<完整性約束名>] [MODIFY<列名><數(shù)據(jù)類型>];向Student表增加“入學(xué)時(shí)間(Scome)”列。ALTERTABLEStudentADDScomeDATE;將Student表Sage的數(shù)據(jù)類型改為INT ALTERTABLEStudentMODIFYSageINT;例4刪除Student表學(xué)生姓名(Sname)的唯一性約束。ALTERTABLEStudentDROPUNIQUE(Sname);刪除基本表:DROPTABLE<表名>;連同數(shù)據(jù)及視圖一同被刪除。 例5刪除Student表。 DROPTABLEStudent;建立索引:CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);索引提供多種存取路徑,加快查詢速度。建在表的一列或多列上,各列名之間用逗號分隔。列名后面還可以用次序選項(xiàng)指定索引值的排列次序,可選ASC(升序)或DESC(降序),缺省值為ASC;UNIQUE表明要建立唯一索引;CLUSTER表示要建立聚簇索引。聚簇索引是指索引項(xiàng)的順序與表中記錄的物理順序一致的索引組織,并且表中的數(shù)據(jù)與索引一同存儲(chǔ)。可以在最常查詢的列上建立簇聚索引以提高查詢效率。唯一索引是指每一個(gè)索引值只對應(yīng)唯一的數(shù)據(jù)記錄。 CREATECLUSTERINDEXStusnameONStudent(Sname);例為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個(gè)表建立索引。其中Student表按學(xué)號升序建唯一索引,Course表按課程號升序建唯一索引,SC表按學(xué)號升序和課程號降序建唯一索引。 CREATEUNIQUEINDEXStusnoONStudent(Sno); CREATEUNIQUEINDEXCoucnoONCourse(Cno); CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);刪除索引:DROPINDEX<索引名>; 例7刪除Student表的Stusname索引。 DROPINDEXStusname;查詢:SELECT[ALL|DISTINCT]<列名或表達(dá)式>[別名1][,<列名或表達(dá)式>[別名2]]…FROM<表名或視圖名>[表別名][,<表名或視圖名>[表別名]]…[WHERE<條件表達(dá)式>][GROUPBY<列名1>][HAVING<條件表達(dá)式>][ORDERBY<列名2>][ASC|DESC];單表查詢:例1查詢?nèi)w學(xué)生的學(xué)號和姓名。 SELECTSno,Sname FROMStudent;例2查詢?nèi)w學(xué)生的詳細(xì)記錄。 SELECT*FROMStudent; 例3查詢?nèi)w學(xué)生的姓名、出生年份和所在系,要求用小寫字母表示所有系名。 SELECTSname,‘YearofBirth:’,1996-Sage,ISLOWER(Sdept) FROMStudent; SLEECTSnameName,‘YearofBirth:’BIRTH,1996-SageBIRTHDAY,ISLOWER(Sdept)DEPARTMENT(查詢并將列重命名) FROMStudent;消除取值重復(fù)行:SLEECTDISTINCTSno FROMSC;查詢滿足條件的元組:=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較符 BETWEENAND,NOTBETWEENAND確定范圍 IN,NOTIN確定集合(查找屬性值屬于指定集合的元組) LIKE,NOTLIKE進(jìn)行字符串的匹配 ISNULL,ISNOTNULL空值 AND,OR多重條件注:當(dāng)LIKE后面的匹配串中不含通配符時(shí),可以用=取代LIKE謂詞。確定范圍:例10查詢年齡在20~23之間的學(xué)生的姓名、系別和年齡。 SELECTSname,Sdept,Sage FROMStudent WHERESageBETWEEN20AND23;確定集合:例13查詢不是信息系、數(shù)學(xué)系和計(jì)算機(jī)科學(xué)系學(xué)生的姓名和性別。 SELECTSname,Ssex FROMStudent WHERESdeptNOTIN(‘IS’,‘MA’,‘CS’);字符匹配:例21查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。 SELECTCno,Ccredit FROMCourse WHERECnameLIKE‘DB\_Design’ESCAPE’\’;(ESCAPE’\’后面的字符”_”不再有通配符的含義,轉(zhuǎn)移為普通的“_”字符)涉及空值的查詢:例22查詢有成績的學(xué)生的學(xué)號和相應(yīng)的課程號 SELECTSno,Cno FROMSC WHEREGradeISNOTNULL;多重條件查詢:例23查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。 SELECTSname FROMStudent WHERESdept=‘CS’ANDSage<20;對查詢結(jié)果排序:用ORDERBY字句,升序(ASC)或降序排序(DESC)。例25查詢?nèi)w學(xué)生情況,結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡將序排列。 SELECT* FROMStudent ORDERBYSdept,SageDESC;集函數(shù):count,sum,avg,max,min 例27查詢選修了課程的學(xué)生人數(shù)。 SELECTCOUNT(DISTINCTSno) FROMSC;GROUPBY子句:將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。 例31查詢選修了3門以上課程的學(xué)生學(xué)號。 SELECTSno FROMSC GROUPBYSno HAVINGCOUNT(*)>3;連接條件:連接查詢中用來連接兩個(gè)表的條件。 例32查詢每個(gè)學(xué)生及其選修課程的情況。 SELECTStudent.*,SC.* FROMStudent,SCWHEREStudent.Sno=SC.Sno;等值連接:連接運(yùn)算符為=。自然連接:在等值連接中,把目標(biāo)列中重復(fù)的屬性列去掉,就成為自然連接。自身連接:一個(gè)表與其自己進(jìn)行連接。 例34查詢每一門課的間接先修課(即先修課的先修課)SELECTFIRST.Cno,SECOND.Cpno FROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno; 運(yùn)行結(jié)果:嵌套查詢:將一個(gè)查詢快嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢。注:子查詢不能用ORDERBY子句。 例37查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生。 SELECTSno,Sname,Sdept FROMStudent WHERESdeptIN( SELECTSdept FROMStudent WHERESname=‘劉晨’);不相關(guān)子查詢:子查詢的查詢條件不依賴于父查詢。SELECTSno,Sname,Sdept FROMStudentWHERESdept=(SELECTSdept FROMStudentWHERESname=‘劉晨’);注意子查詢要在比較符之后。相關(guān)子查詢:子查詢的查詢條件依賴于外層父查詢的某個(gè)屬性值。例:找出每個(gè)學(xué)生超過他選修課程平均成績的課程號 SELECTSno,Cno FROMSCSCXWHEREGrade>=(SELECTAVG(Grade) FROMSCSCYWHERESCY.Sno=SCX.Sno);ANY:與子查詢結(jié)果的某個(gè)值比較 ALL:與子查詢結(jié)果的所有值比較例39查詢其他系中比信息系某一學(xué)生年齡小的學(xué)生姓名和年齡。SELECTSname,Sage FROMStudentWHERESage<ANY(SELECTSage FROMStudentWHERESdept=‘IS’) ANDSdept<>’IS’;帶有EXISTS謂詞的子查詢: 例41查詢所有選修了1號課程的學(xué)生姓名。SELECTSname FROMStudentWHEREEXISTS(SELECT* FROMSCWHERESC.Sno=Student.SnoANDCno=‘1’);用連接可寫成:SELECTSname FROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=‘1; 例42查詢選修了全部課程的學(xué)生姓名。 SELECTSname FROMStudent WHERENOTEXISTS(SELECT* FROMCourseWHERENOTEXISTS(SELECT* FROMSCWHERESC.Sno=Student.SnoANDSC.Cno=Course.Cno));例46查詢選修了課程1或者選修了課程2的學(xué)生學(xué)號。SELECTSno FROMSCWHERECno=‘1’UNIONSELECTSno FROMSCWHERECno=‘2’;例48查詢同時(shí)選修了課程1和課程2的學(xué)生學(xué)號。SELECTSno FROMSCWHERECno=‘1’ANDSnoIN(SELECTSno FROMSCWHERECno=‘2’);SQL中更新包括:插入、刪除、修改將一個(gè)新學(xué)生記錄(學(xué)號:200215128;姓名:陳東;性別:男;所在系:IS;年齡:18)插入到Student表中。INSERT INTOStudent VALUES(‘200215128’,‘陳東’,‘男’,‘IS’,18);對每一個(gè)系,求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫。 CREATETABLEDeptage(SdeptCHAR(15),AvgageSMALLINT); INSERTINTODeptage(Sdept,Avgage) SELECTSdept,Avg(Sage) FROMStudent GROUPBYSdept;將學(xué)生200215121的年齡改為22歲。UPDATEStudentSETSage=22WHERESno=‘200215121’;刪除學(xué)號為200215128的學(xué)生記錄。DELETE FROMStudentWHERESno=‘200215128’;視圖:從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的表,是一個(gè)虛表。數(shù)據(jù)庫中只存放視圖的定義。而不存放視圖對應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在原來的基本表中。 例2建立信息系學(xué)生的視圖,并要求更新視圖時(shí)仍保證視圖只有信息系的學(xué)生。 CREATEVIEWIS_StudentASSELECTSno,Sname,Sage FROMStudentWHERESdept=‘IS’WITHCHECKOPTION(當(dāng)對視圖進(jìn)行插入或更新時(shí),要保證新行滿足視圖的定義中的謂詞條件。)注:AS下面的子查詢通常不允許含有ORDERBY子句和DISTINCT短語。行列子集視圖:若一個(gè)視圖是從單個(gè)基本表導(dǎo)出的,并且只是去掉了基本表的某些行和某些列,但保留了碼,稱這類視圖為行列子集視圖。建立信息系選修了1號課程的學(xué)生視圖。 CREATEVIEWIS_S1(Sno,Sname,Grade) AS SELECTStudent.Sno,Student.Sname,Grade FROMStudent,SC WHERESdept=‘IS’ANDStudent.Sno=SC.SnoANDSC.Cno=‘1’;虛擬列:視圖定義中的一些基本表中并不存在派生屬性。表達(dá)式視圖:帶虛擬列的視圖。 例5定義一個(gè)反映學(xué)生出生年份的視圖。 CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2006-Sage FROMStudent;刪除視圖:例8刪除視圖IS_S1: DROPVIEWIS_S1;視圖查詢: 例3在S_G視圖中查詢平均成績在90分以上的學(xué)生學(xué)號和平均成績。SELECT* FROMS_GWHEREGavg>=90;視圖消解后得到:SELECTSno,AVG(Grade) FROMSCWHEREAVG(Grade)>=90 GROUPBYSno;正確的查詢語句應(yīng)該是:SELECTSno,AVG(Grade) FROMSCGROUPBYSno; HAVINGAVG(Grade)>=90并不是所有視圖都可以更新,一些視圖是理論上可更新的,一些是理論上不可更新的。通常行列子集視圖允許更新。 視圖不允許更新的情況:書P124視圖的作用:簡化用戶操作;使用戶以多種角度看待同一數(shù)據(jù);對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨(dú)立性;對機(jī)密數(shù)據(jù)提供安全保護(hù);更清晰的表達(dá)查詢。SQL中數(shù)據(jù)控制功能包:事務(wù)管理功能和數(shù)據(jù)保護(hù)功能;數(shù)據(jù)庫的安全性和完整性控制。DBMS安全控制功能:把授權(quán)決定告知系統(tǒng);授權(quán)結(jié)果存入數(shù)據(jù)字典;用戶提出操作請求時(shí),根據(jù)授權(quán)情況進(jìn)行檢查,以決定是否執(zhí)行操作請求。授權(quán):GRANT<權(quán)限>[,<權(quán)限>]…[ON<對象類型><對象名>]TO<用戶>[,<用戶>例1把查詢Student表的權(quán)限授給用戶U1。GRANTSELECT ONTABLEStudent TOU1; 例3把查詢Student表和修改學(xué)生學(xué)號的權(quán)限授予所有用戶。 GRANTUPDATE(Sno),SELECT ONTABLEStudent TOPUBLIC;DBA把在數(shù)據(jù)庫S_C中建立表權(quán)限授予用戶U8,并允許此權(quán)限再授予其他用戶。 GRANTCREATETAB ONDATABASES_C TOU8 WITHGRANTOPTION;收回權(quán)限:REVOKE<權(quán)限>[,<權(quán)限>]…[ON<對象類型><對象名>]FROM<用戶> 例7把用戶U4修改學(xué)生學(xué)號的權(quán)限收回。REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;第五章數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。完整性:防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯(cuò)誤的信息的輸入和輸出造成的無效操作和錯(cuò)誤結(jié)果。安全性:保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。完整性約束條件是加在數(shù)據(jù)庫數(shù)據(jù)之上的語義約束條件。完整性檢查是檢查數(shù)據(jù)是否滿足完整性條件的機(jī)制。完整性控制機(jī)制具有三個(gè)方面的功能:定義,檢查,保證數(shù)據(jù)的完整性。實(shí)體完整性在CREATETABLE中用PRIMARYKEY定義。完整性檢查包括:主碼值是否唯一,不唯一則拒絕修改;檢查注明的各屬性是否為空,一個(gè)空則拒絕修改。參照完整性:FOREIGNKEY和REFERENCES短語定義外碼和所參照的主碼。自定義完整性約束條件:NOTNULLUNIQUECHECK第六章關(guān)系數(shù)據(jù)理論例:用于描述學(xué)生情況的一組屬性:U={SNO,SDEPT,MN,CNAME,G}。這里,這些屬性分別描述學(xué)號、系、系負(fù)責(zé)人、課程名和成績。由現(xiàn)實(shí)世界已知的事實(shí)可知:一個(gè)系有若干學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系只有一名負(fù)責(zé)人;一個(gè)學(xué)生可以選修多門課程,每門課程有若干學(xué)生選修;每個(gè)學(xué)生學(xué)習(xí)每一門課程有一個(gè)成績。因此可得到屬性集U上的一組函數(shù)依賴:F={SNO→SDEPT,SDEPT→MN,(SNO,CNAME)→G}不好的模式常見的四個(gè)問題:插入異常、刪除異常、冗余太大、更新異常。解決辦法:S(SNO,SDEPT,SNO→SDEPT);SG(SNO,CNAME,G,(SNO,CNAME)→G);DEPT(SDEPT,MN,SDEPT→MN)。關(guān)系數(shù)據(jù)庫的規(guī)范化理論主要包括三個(gè)方面的內(nèi)容:函數(shù)依賴、范式、模式設(shè)計(jì)。其中,函數(shù)依賴起著核心的作用。函數(shù)依賴:設(shè)關(guān)系模式R(U),是屬性集U上的關(guān)系模式,X和Y是U的子集。若對于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記作X→Y。X→Y,但Y?X則稱X→Y是非平凡的函數(shù)依賴;X→Y,但Y包含于X則稱X→Y是平凡的函數(shù)依賴;若X→Y,則X叫做決定因素。在R(U)中,如果X→Y,并且對于X的任何一個(gè)真子集X′,都有X′?Y,則稱Y對X完全函數(shù)依賴。若X→Y,但Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴。在R(U)中,如果X→Y,(Y?X),Y?X,Y→Z,則稱Z對X傳遞函數(shù)依賴。注:如果Y→X,則XY,實(shí)際上是X直接→Z,是直接函數(shù)依賴而不是傳遞函數(shù)依賴。5NF4NFBCNF3NF2NF1NF一個(gè)低一級范式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換為若干個(gè)高一級范式的關(guān)系模式的集合,這種過程叫做規(guī)范化。第一范式:關(guān)系中每個(gè)屬性都是不可再分的簡單項(xiàng)。1NF,記作R1NF。滿足這個(gè)條件的關(guān)系稱為規(guī)范化關(guān)系。注:在非規(guī)范化的關(guān)系中去掉組合項(xiàng)就能化成規(guī)范化的關(guān)系。2NF:若R1NF,且每一個(gè)非主屬性完全函數(shù)依賴于碼,則R2NF??紤]關(guān)系模式S-L-C(SNO,SDEPT,SLOC,CNO,G),其中SLOC為學(xué)生的住處,并且每個(gè)系的學(xué)生住在同一個(gè)地方。這里碼為(SNO,CNO)。滿足的函數(shù)依賴有:F(SNO,CNO)→G,SNO→SDEPT,SDEPT→SLOC,SNO→SLOC,P(SNO,CNO)→SDEPT,P(SNO,CNO)→SLOC。所以S-L-C2NF不滿足2NF和3NF的關(guān)系模式會(huì)產(chǎn)生以下問題:插入異常刪除異常修改復(fù)雜。分析上面的例子,可以用投影分解把S-L-C分解為:SC(SNO,CNO,G) F(SNO,CNO)→GS-L(SNO,DEPT,SLOC)SNO→SDEPTSDEPT→SLOCSNO→SLOC3NF:關(guān)系模式R<U,F(xiàn)>中若不存在這樣的碼X,屬性組Y及非主屬性Z(Z?Y),使得X→Y,Y?X,Y→Z成立,則稱R<U,F(xiàn)>3NF。注:若R3NF,則每一個(gè)非主屬性既不部分依賴于碼也不傳遞依賴于碼??紤]分解得到的關(guān)系模式S-L(SNO,SDEPT,SLOC)。由于:SNO→SDEPT SDEPT→SLOC SDEPT?SNO 所以S-L3NF解決辦法是對S-L分解消除非主屬性對碼的傳遞函數(shù)依賴:S-D(SNO,SDEPT) SNO→SDEPTD-L(SDEPT,SLOC)SDEPT→SLOCBCNF:關(guān)系模式R<U,F(xiàn)>1NF。若X→Y且Y?X時(shí),X必含有碼,則R<U,F(xiàn)>BCNF。也就是說,關(guān)系模式R<U,F(xiàn)>中,若每一個(gè)決定因素都包含碼,則R<U,F(xiàn)>BCNF。一個(gè)滿足BCNF的關(guān)系模式有:所有非主屬性對每一個(gè)碼都是完全函數(shù)依賴;所有的主屬性對每一個(gè)不包含它的碼,也是完全函數(shù)依賴;沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。例子:考察關(guān)系模式Course(CNO,CNAME,PCNO),它只有一個(gè)碼CNO,這里沒有任何屬性對CNO部分依賴或傳遞依賴,所以Course3NF。同時(shí)CNO是唯一的決定因素,所以CourseBCNF。對于關(guān)系模式Student(SNO,SNAME,SDEPT,SAGE),假定SNAME也具有唯一性,那么Student就有兩個(gè)碼,這兩個(gè)碼都由單個(gè)屬性組成,彼此不相交。其他屬性不存在對碼的傳遞依賴與部分依賴,所以Student3NF。同時(shí)Student中除SNO,SNAME外沒有其他決定因素,所以Student也屬于BCNF。關(guān)系模式SJP(S,J,P)中,S是學(xué)生,J表示課程,P表示名次。每一個(gè)學(xué)生選修每門課程的成績有一定的名次,每門課程中每一名次只有一個(gè)學(xué)生(即沒有并列名次)。由語義可得到下面的函數(shù)依賴:(S,J)→P (J,P)→S所以(S,J)與(J,P)都可以作為候選碼。這兩個(gè)碼各由兩個(gè)屬性組成,而且它們是相交的。這個(gè)關(guān)系模式中顯然沒有屬性對碼傳遞依賴或部分依賴。所以SJP3NF,而且除(S,J)與(J,P)以外沒有其他決定因素,所以SJPBCNF。關(guān)系模式STJ(S,T,J)中,S表示學(xué)生,T表示教師,J表示課程。每一教師只教一門課;每門課有若干教師;某一學(xué)生選定某門課,就對應(yīng)一個(gè)固定的教師。由語義可得到下面的函數(shù)依賴:(S,J)→T (S,T)→J T→J這里(S,J),(S,T)都是候選碼。STJ是3NF,因?yàn)闆]有任何非主屬性對碼傳遞依賴或部分依賴。但STJ不滿足BCNF關(guān)系,因?yàn)門是決定因素,而T不包含碼。STJ仍存在插入異常 將其分解為:ST(S,T) TJ(T,J)關(guān)系規(guī)范化的過程如下圖所示:在實(shí)際應(yīng)用中,最有價(jià)值的是3NF和BCNF。合并規(guī)則:由X→Y,X→Z,有X→YZ。偽傳遞規(guī)則:由X→Y,WY→Z,有XW→Z。分解規(guī)則:由X→Y及ZY,有X→Z。X→A1A2…Ak成立的充分必要條件是X→Ai成立在關(guān)系模式R<U,F(xiàn)>中為F所邏輯蘊(yùn)含的函數(shù)依賴的全體叫做F的閉包,記為F+。已知關(guān)系模式R<U,F(xiàn)>,其中U={A,B,C,D,E};F={AB→C,B→D,C→E,EC→B,AC→B}。求(AB)F+。由上述算法,設(shè)X(0)=AB;計(jì)算X(1)。逐一掃描F集合中各個(gè)函數(shù)依賴,找左部為A,B或AB的函數(shù)依賴。得到兩個(gè):AB→C,B→D。于是X(1)=AB∪CD=ABCD;因?yàn)閄(0)X(1),所以再找出左部為ABCD子集的那些函數(shù)依賴,又得到C→E,AC→B,于是X(2)=X(1)∪BE=ABCDE。因?yàn)閄(2)已等于全部屬性集合,所以(AB)F+=ABCDE。模式分解:分解具有無損連接性、分解保持依賴、既具有無損連接性又保持依賴。練習(xí):設(shè)有關(guān)系模式R(A,B,C,D,E),其上的函數(shù)依賴集:F={A→BC,CD→E,B→D,E→A}①計(jì)算A+。②求出R的所有候選關(guān)鍵字。③R滿足的最高范式。設(shè)有一教學(xué)管理數(shù)據(jù)庫,其屬性包括:學(xué)號(S#),課程號(C#),成績(G),任課教師(TN),教師所在的系(D)。這些數(shù)據(jù)有下列語義:學(xué)號和課程號分別與其代表的學(xué)生和課程一一對應(yīng);一個(gè)學(xué)生所修的每門課程都有一個(gè)成績;每門課程只有一位任課教師,但每位教師可以有多門課程;教師中沒有重名,每個(gè)教師只屬于一個(gè)系。①試根據(jù)上述語義確定函數(shù)依賴集。②如果用上面所有屬性組成一個(gè)關(guān)系模式,那么該關(guān)系模式滿足的最高范式級別是什么?③分解為3NF。第七章數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì):對于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造(設(shè)計(jì))優(yōu)化的數(shù)據(jù)庫邏輯模式和物理結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能有效的存儲(chǔ)和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求。數(shù)據(jù)庫設(shè)計(jì)的目標(biāo):為用戶和各種應(yīng)用系統(tǒng)提供一個(gè)信息基礎(chǔ)設(shè)施和高效率的運(yùn)行環(huán)境?,F(xiàn)代數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn):“三分技術(shù),七分管理,十二分的基礎(chǔ)數(shù)據(jù)”;結(jié)構(gòu)(數(shù)據(jù))設(shè)計(jì)和行為(處理)設(shè)計(jì)相結(jié)合。規(guī)范設(shè)計(jì)法:新奧爾良方法、基于E-R模型的數(shù)據(jù)庫設(shè)計(jì)方法、基于3NF的設(shè)計(jì)方法、ODL方法。按規(guī)范設(shè)計(jì)法可將數(shù)據(jù)庫設(shè)計(jì)分為六個(gè)階段:分析設(shè)計(jì)階段:前四個(gè)階段面向用戶的應(yīng)用要求,面向具體的問題:需求分析 概念結(jié)構(gòu)設(shè)計(jì)面向數(shù)據(jù)庫管理系統(tǒng):邏輯結(jié)構(gòu)設(shè)計(jì) 物理結(jié)構(gòu)設(shè)計(jì)實(shí)現(xiàn)和運(yùn)行階段:后兩個(gè)階段面向具體的實(shí)現(xiàn)方法:數(shù)據(jù)庫實(shí)施數(shù)據(jù)庫運(yùn)行與維護(hù)數(shù)據(jù)庫設(shè)計(jì)的生存期:指從數(shù)據(jù)庫研制到不再使用它的整個(gè)時(shí)期。需求分析是整個(gè)數(shù)據(jù)庫設(shè)計(jì)過程的基礎(chǔ),要收集數(shù)據(jù)庫所有用戶的信息內(nèi)容和處理要求,并加以規(guī)格化和分析。概念結(jié)構(gòu)設(shè)計(jì):整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵,通過對用戶需求進(jìn)行綜合、歸納與抽象,形成獨(dú)立于任何DBMS軟件和硬件的概念模型。邏輯結(jié)構(gòu)設(shè)計(jì):將上一步得到的概念結(jié)構(gòu)轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化。數(shù)據(jù)庫物理設(shè)計(jì):為邏輯數(shù)據(jù)模型建立一個(gè)完整的能實(shí)現(xiàn)的物理數(shù)據(jù)庫結(jié)構(gòu),包括存儲(chǔ)結(jié)構(gòu)和存取方法。數(shù)據(jù)庫實(shí)施階段:運(yùn)用DBMS提供的數(shù)據(jù)語言及其宿主語言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫,編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫,并進(jìn)行試運(yùn)行。數(shù)據(jù)庫運(yùn)行、維護(hù)階段:收集和記錄實(shí)際系統(tǒng)運(yùn)行的數(shù)據(jù),數(shù)據(jù)庫運(yùn)行的記錄用來提高用戶要求的有效信息,用來評價(jià)數(shù)據(jù)庫系統(tǒng)的性能,進(jìn)一步調(diào)整和修改數(shù)據(jù)庫。數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的不同階段形成數(shù)據(jù)庫的各級模式:需求分析階段,綜合各個(gè)用戶的需求;概念設(shè)計(jì)階段形成獨(dú)立于及其特點(diǎn),獨(dú)立于各個(gè)DBMS產(chǎn)品的概念模式(E-R圖);邏輯設(shè)計(jì)階段將E-R圖轉(zhuǎn)換成具體的數(shù)據(jù)庫產(chǎn)品支持的數(shù)據(jù)模型,形成數(shù)據(jù)庫邏輯模式;然后根據(jù)用戶處理的要求、安全性的考慮,在基本表的基礎(chǔ)上再建立必要的視圖,形成數(shù)據(jù)的外模式;物理設(shè)計(jì)階段,根據(jù)DBMS的特點(diǎn)和處理需要,進(jìn)行物理存儲(chǔ)安排,建立索引,形成數(shù)據(jù)庫內(nèi)模式。需求分析的任務(wù):通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,收集支持新系統(tǒng)的基礎(chǔ)數(shù)據(jù)并對其進(jìn)行處理,確定新系統(tǒng)的功能。獲得用戶對數(shù)據(jù)庫的如下要求:信息要求、處理要求、安全性與完整性要求。數(shù)據(jù)應(yīng)用系統(tǒng)設(shè)計(jì)的特點(diǎn):用戶參加數(shù)據(jù)庫設(shè)計(jì)。需求分析的方法:自頂向下的分析方法。SA方法從最上層的系統(tǒng)組織機(jī)構(gòu)入手,采用逐層分解的方式分析系統(tǒng),用數(shù)據(jù)流圖和數(shù)據(jù)字典描述系統(tǒng)。數(shù)據(jù)字典包括:數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理過程。數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位。數(shù)據(jù)結(jié)構(gòu):反映數(shù)據(jù)之間的組合關(guān)系??梢杂扇舾蓚€(gè)數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)組成。數(shù)據(jù)流可以是數(shù)據(jù)項(xiàng),也可以是數(shù)據(jù)結(jié)構(gòu),它表示某一處理過程中數(shù)據(jù)在系統(tǒng)內(nèi)傳輸?shù)穆窂健P枨蠓治鲎⒁猓涸O(shè)計(jì)人員要充分考慮到可能的擴(kuò)充和改變;強(qiáng)調(diào)用戶的參與。概念結(jié)構(gòu)設(shè)計(jì):將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過程。做法:選擇局部應(yīng)用;逐一設(shè)計(jì)分E-R圖。概念結(jié)構(gòu)是對現(xiàn)實(shí)世界的一種抽象。三種抽象:分類、聚集(整體與部分)、概括(一般與特殊,子集關(guān)系)。E-R圖中的沖突有三種:屬性沖突、命名沖突和結(jié)構(gòu)沖突。將E-R圖轉(zhuǎn)換為關(guān)系模型實(shí)際上就是將實(shí)體、屬性和聯(lián)系轉(zhuǎn)換成關(guān)系模式。在轉(zhuǎn)換中要遵循以下原則:(1)將每一個(gè)實(shí)體轉(zhuǎn)換為一個(gè)關(guān)系;(2)所有主碼必須定義非空。實(shí)體間的聯(lián)系有以下幾種轉(zhuǎn)換規(guī)則:一個(gè)1:1的聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系,也可以與任意一端對應(yīng)的關(guān)系合并。一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系,也可以與n端對應(yīng)的關(guān)系合并。一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系。三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系。具有相同碼的關(guān)系模式可合并。數(shù)據(jù)庫物理設(shè)計(jì):對于給定的邏輯數(shù)據(jù)模型,選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程。任務(wù)是為了有效地實(shí)現(xiàn)邏輯模式,確定所采取的存儲(chǔ)策略。數(shù)據(jù)庫的物理設(shè)計(jì)可分為兩步:確定數(shù)據(jù)庫的物理結(jié)構(gòu);對物理結(jié)構(gòu)進(jìn)行評價(jià)。關(guān)系模式常用的三類存取方法:索引方法、聚簇(Cluster)方法、HASH方法。聚簇就是為了提高查詢速度,把在一個(gè)(或一組)屬性上具有相同值的元組集中地存放在一個(gè)物理塊中。如果存放不下,可以存放在相鄰的物理塊中。其中,這個(gè)(或這組)屬性稱為聚簇碼。兩個(gè)作用:聚簇值不必在每個(gè)元組中重復(fù)存儲(chǔ);大大提高按聚簇碼進(jìn)行查詢的效率。一個(gè)數(shù)據(jù)庫可以建立多個(gè)聚簇,一個(gè)關(guān)系只能加入一個(gè)聚簇。第十章數(shù)據(jù)庫恢復(fù)技術(shù)事務(wù):用戶定義的一個(gè)數(shù)據(jù)庫操作序列,要么全不做,要么全做,是一個(gè)不可分割的工作單位。事務(wù)的和程序是兩個(gè)概念。一般地講,一個(gè)程序中包含多個(gè)事務(wù)。在SQL語言中,定義事務(wù)的語句有三條:BEGINTRANSACTION開始COMMIT結(jié)束:表示提交,將事務(wù)中所有對數(shù)據(jù)庫的更新協(xié)會(huì)到磁盤,正常結(jié)束事務(wù)。ROLLBACK結(jié)束:回滾,事務(wù)運(yùn)行過程中發(fā)生故障,將事務(wù)中隊(duì)數(shù)據(jù)庫的已完成的更新操作全部車型,回滾到事務(wù)開始的狀態(tài)。事務(wù)的四個(gè)特性:簡稱ACID原子性:要么都做,要么都不做。是數(shù)據(jù)庫的邏輯工作單位。一致性;隔離性;持續(xù)性。數(shù)據(jù)庫的恢復(fù):把數(shù)據(jù)庫從錯(cuò)誤狀態(tài)恢復(fù)某一致的正確狀態(tài)的功能。數(shù)據(jù)庫恢復(fù)機(jī)構(gòu)的目的:保證事務(wù)的原子性;當(dāng)系統(tǒng)發(fā)生故障以后,數(shù)據(jù)庫能夠恢復(fù)到正確狀態(tài)。事務(wù)內(nèi)部的故障:在不影響其他事務(wù)運(yùn)行的情況下,強(qiáng)行回滾事務(wù),既撤消該事務(wù)已經(jīng)作出的任何對數(shù)據(jù)庫的修改,使得該事務(wù)好像根本沒有啟動(dòng)一樣。這類恢復(fù)操作成為事務(wù)撤銷(UNDO)。系統(tǒng)故障:恢復(fù)子系統(tǒng)除需要撤銷所有未完成事務(wù)外,還需要重做(REDO)所有已提交的事務(wù),以將數(shù)據(jù)庫真正恢復(fù)到一致狀態(tài)。介質(zhì)故障(又稱為硬故障)。計(jì)算機(jī)病毒?;謴?fù)的原理概括為:冗余。數(shù)據(jù)庫中任何一部分被破壞的或不正確的數(shù)據(jù)可以根據(jù)存儲(chǔ)在系統(tǒng)別處的冗余數(shù)據(jù)來建立。建立冗余數(shù)據(jù)最常用的技術(shù)是:數(shù)據(jù)轉(zhuǎn)儲(chǔ)和登錄日志文件?;謴?fù)機(jī)制涉及的兩個(gè)關(guān)鍵問題:如何建立冗余數(shù)據(jù);如何利用這些冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫恢復(fù)。數(shù)據(jù)轉(zhuǎn)儲(chǔ)即由DBA定期地將整個(gè)數(shù)據(jù)庫復(fù)制到磁帶或另一個(gè)磁盤上保存起來的過程。這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。日志文件是用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。日志文件需要登記的內(nèi)容:各個(gè)事務(wù)的開始標(biāo)記、結(jié)束(標(biāo)記、所有更新操作。日志文件可以用來進(jìn)行事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù),并協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。具體作用:事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)必須用日志文件;在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)方式中,必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復(fù)數(shù)據(jù)庫。在靜態(tài)轉(zhuǎn)儲(chǔ)方式中,也可以建立日志文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)貸款合同模板旅游行業(yè)
- 臨時(shí)用電安全指導(dǎo)協(xié)議
- 二手廢牙科設(shè)備回收轉(zhuǎn)讓合同
- 電子商務(wù)平臺技術(shù)服務(wù)合同范本1
- 二手房屋買賣協(xié)議
- 電子商務(wù)平臺客戶關(guān)系管理服務(wù)合同
- 排水工程課程設(shè)計(jì)
- 代理銷售協(xié)議
- 傷殘鑒定流程詳解及時(shí)間建議
- 乳品添加劑使用指南
- xx學(xué)校國家義務(wù)教育質(zhì)量監(jiān)測實(shí)施方案
- 證券投資學(xué)-課件-人大吳曉求
- 檔案管理基礎(chǔ)知識培訓(xùn)課件
- 科普百科知識課件
- 沖擊鉆施工工藝及步驟
- 重污染天氣應(yīng)急減排“一廠一策”方案模板(家具制造)
- 《網(wǎng)絡(luò)滲透技術(shù)》課程標(biāo)準(zhǔn)
- 福建省福州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 測量監(jiān)理標(biāo)準(zhǔn)細(xì)則
- 【詳細(xì)版】小學(xué)英語外研新標(biāo)準(zhǔn)二年級上冊Module8李蘭Shegoesswimming教案
- 月租車輛費(fèi)用繳納確認(rèn)單
評論
0/150
提交評論