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

下載本文檔

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

文檔簡介

------------------------------------------------------------------------ 數(shù)據(jù)庫原理期末總結(jié)緒論:信息:信息是關于現(xiàn)實世界事物的存在方式或運動狀態(tài)的反映的綜合,是一種被加工為特定形式的數(shù)據(jù),有意義和價值。數(shù)據(jù):是描述事物的符號記錄,是信息的具體表現(xiàn)形式。數(shù)據(jù)庫:是長期存儲在計算機內(nèi)的、有組織的、可共享的大量的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù):按一定的數(shù)據(jù)模型組織、描述和存儲,具有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴展性,可共享。數(shù)據(jù)庫管理系統(tǒng)位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。主要功能:數(shù)據(jù)定義、組織、存儲、操縱,數(shù)據(jù)庫的事務管理和運行管理、建立和維護。數(shù)據(jù)庫系統(tǒng)是在計算機系統(tǒng)中引入數(shù)據(jù)庫的系統(tǒng)。包括:數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應用系統(tǒng)、數(shù)據(jù)庫管理員(DBA)、用戶。數(shù)據(jù)處理:對各種數(shù)據(jù)進行收集、儲存、加工和傳播等。數(shù)據(jù)管理:數(shù)據(jù)處理的中心問題,對數(shù)據(jù)進行分類、組織、編碼、存儲、檢索和維護。數(shù)據(jù)管理的三個階段:人工管理、文件系統(tǒng)、數(shù)據(jù)庫系統(tǒng)階段。數(shù)據(jù)庫與文件系統(tǒng)的根本區(qū)別:數(shù)據(jù)結(jié)構(gòu)化。在數(shù)據(jù)庫中,不僅文件內(nèi)部數(shù)據(jù)彼此相關,而且文件之間在結(jié)構(gòu)上也有機地聯(lián)系在一起。數(shù)據(jù)的獨立性包括:a.物理獨立性:用戶的應用程序與存儲在磁盤上的數(shù)據(jù)庫中的數(shù)據(jù)是相互獨立的。b.邏輯獨立性:應用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)相互獨立。數(shù)據(jù)的獨立性是由DBMS的二級映象功能來保證的。DBMS必須提供的控制功能:安全性保護、完整性檢查、并發(fā)控制、數(shù)據(jù)庫恢復。模型現(xiàn)實世界特征的模擬和抽象;數(shù)據(jù)模型是現(xiàn)實世界數(shù)據(jù)特征的抽象。兩個不同層次的模型:a.概念模型(數(shù)據(jù)庫設計)b.邏輯模型(DBMS的實現(xiàn))和物理模型(系統(tǒng)內(nèi)部的表示和存取方法)抽象過程:現(xiàn)實世界——信息世界——機器世界。數(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):唯一標識實體的屬性集。E-R圖表示實體型、屬性和聯(lián)系的方法:實體型——矩形;聯(lián)系——菱形;屬性——橢圓。關系模型是建立在嚴格的數(shù)學概念之上的,它的數(shù)據(jù)結(jié)構(gòu)是一張二維表。關系:一個關系對應一張二維表。元組:一行。屬性:一列。主碼:可唯一標識元組的屬性或?qū)傩越M,也稱為關系的鍵。關系模式:對關系的描述,一般表示為:關系名(屬性1,屬性2,…,屬性n),如:學生(學號,姓名,年齡,性別,專業(yè),年級)。數(shù)據(jù)操縱主要包括查詢、插入、刪除和修改數(shù)據(jù)。數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu):外模式、模式、內(nèi)模式。兩層映象:外模式/模式映像、模式/內(nèi)模式映像。外模式/模式映像:當模式改變時,外模式/模式的映像要作相應的改變,以保證外模式保持不變。保證了數(shù)據(jù)的邏輯獨立性。模式/內(nèi)模式映像:定義數(shù)據(jù)邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)之間的對應關系,當數(shù)據(jù)庫的存儲結(jié)構(gòu)改變時,模式/內(nèi)模式的映像也必須作相應的修改,使得模式保持不變。保證了數(shù)據(jù)的物理獨立性。模式:數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述。只是對記錄型的描述,而與具體的值無關;不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),還要定義數(shù)據(jù)間的聯(lián)系,安全性、完整性要求。外模式:數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。注:一個應用程序只能使用一個外模式。內(nèi)模式:也稱存儲模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。注:一個數(shù)據(jù)庫只能有一個內(nèi)模式。第二章 關系數(shù)據(jù)庫:關系的三種完整性約束:實體完整性、參照完整性、用戶自定義的完整性。域:具有相同數(shù)據(jù)類型的值的集合。域中值的個數(shù)成為基數(shù)。域表示屬性的取值范圍。笛卡爾積:給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n},其中每一個元素(d1,d2,…,dn)叫做一個n元組(n-tuple)或簡稱元組(Tuple)。元素中的每一個值di叫做一個分量(Component)。例如:給出三個域:D1=導師集合SUPERVISOR={張,劉易}D2=專業(yè)集合SPECIALITY={計算機,信息}D3=研究生集合POSTGRADUATE={李勇,劉晨,王敏}則D1×D2×D3={(張,計算機,李勇),(張,計算機,劉晨),(張,計算機,王敏),(張,信息,李勇),(張,信息,劉晨),(張,信息,王敏),(劉易,計算機,李勇),(劉易,計算機,劉晨),(劉易,計算機,王敏),(劉易,信息,李勇),(劉易,信息,劉晨),(劉易,信息,王敏)}關系:D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的關系。n是關系的目或度。由于域可以相同,為了加以區(qū)分,必須對每列起一個名字,稱為屬性(Attribute)。候選碼:若關系中的某一屬性組的值能唯一地標識一個元組,則該屬性組就是候選碼。若一個關系有多個候選碼,則選定其中一個為主碼。主碼的屬性稱為主屬性關系的三種類型:基本關系、查詢表、視圖。注:基本表是實際存在的表;查詢表式查詢結(jié)果對應的表;視圖表是虛表,不對應實際存儲的數(shù)據(jù)。實體完整性規(guī)則:若屬性A是基本關系R的主屬性,則屬性A不能取空值。用戶定義的完整性:針對某一具體關系數(shù)據(jù)庫的約束條件。并:R∪S={t|t∈R∨t∈S} 差:R-S={t|t∈R∧t?S} 交:R∩S={t|t∈R∧t∈S}廣義笛卡爾積:R×S={tr⌒ts|tr∈R∧ts∈S}例如:給定兩個關系R和S 則有: 選擇:在關系R中選擇滿足給定條件的諸元組。sF(R)={t|t∈R∧F(t)=‘真’}例:查詢信息系(IS)全體學生:sSdept=‘IS’(Student) 查詢年齡小于20歲的學生:sSage<20(Student)投影:關系R上的投影,是從R中選擇出若干屬性列構(gòu)成新的關系。pA(R)={t[A]|t∈R}例:查詢學生的姓名和所在的系:pSname,Sdept(Student) 查詢學生關系中有哪些系:pSdept(Student)連接:從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組。R?S={tr⌒ts|tr∈R∧ts∈S∧tr[A]qts[B]}AqB等值連接:q為“=”的連接為等值連接自然連接:兩個關系中進行比較的分量必須是相同的屬性組,并且去掉結(jié)果中重復的屬性列。例5對于下面的兩個關系R和S,考慮三個連接 除運算:給定關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影的集合。R÷S={tr[X]|tr∈R∧pY(S)íYx}例6對于下面的關系R和S,計算R÷S。 對于關系R,A可以取四個值:{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é)果為:幾個例子關系:

例7查詢選修2號課程的學生的學號 pSno(sCno=‘2’(SC))例9查詢至少選修了一門其直接先行課為5號課程的學生姓名。 pSname(sCpno=‘5’(Course)?SC?pSno,Sname(Student))例10查詢選修了全部課程的學生的學號和姓名。 pSno,Cno(SC)÷pCno(Course)?pSno,Sname(Student)元組關系演算以元組變量作為為此變元的基本對象。典型的關系演算語言:ALPHA。第三章 關系數(shù)據(jù)庫標準語言SQL:SQL的三級模式結(jié)構(gòu):外模式——視圖和部分基本表、模式——基本表、內(nèi)模式——存儲文件。定義模式:CREATESCHEMA<模式名>AUTHORIZATION<用戶名>CREATESCHEMA“S-T”AUTHORIZATIONWANG;為用戶wang定義了一個模式S-T。刪除模式:DROPSCHEMA<模式名><CASCADE|RESTRICT>注:CASCADE和RESTRICT兩者必選其一。 CASCADE—級聯(lián)刪除:把該模式中所有的數(shù)據(jù)庫對象全部一起刪除。 RESTRICT—限制刪除:如果該模式中已經(jīng)定義了下屬的數(shù)據(jù)庫對象,則拒絕該刪除語句的執(zhí)行。沒有下屬對象時才能執(zhí)行。 例:DROPSCHEMAZHANGCASCADE;刪除模式zhang,同時已經(jīng)定義的表也被刪除。模式實際上定義了一個命名空間,在這個空間可以進一步定義該模式包含的數(shù)據(jù)庫對象:基本表、視圖、索引等。創(chuàng)建了一個模式,就建立了一個數(shù)據(jù)庫的命名空間,一個框架,這個空間中首先應定義的是該模式包含的基本表。非空值約束:不知道、不確定或無法填入的值。 唯一性約束:指明基本表上的某個列或某些列的組合在不同的元組中的取值不能相同。主鍵約束:用于定義基本表的主鍵。 外鍵約束:是指一個表(稱從表)的一個列或列組合,它的值需要引用另一個表(稱引用表)的主鍵或唯一性鍵的值。ONDELETE選項是設置當引用表中具有外鍵約束的行被刪除時,系統(tǒng)所做的處理。有三種可能的處理辦法:RESTRICT:缺省選項,引用表中凡是被從表所引用的行都不準刪除;CASCADE:從表中所有引用了引用表中被刪除行的行也隨之被刪除;SETNULL:外鍵的值被設置為NULL。定義基本表:CREATETABLE<表名>;注:“<>”中的內(nèi)容是必選項“[]”中的內(nèi)容是可選項;DEFAULT選項是列指定缺省值。建立一個學生表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表增加“入學時間(Scome)”列。ALTERTABLEStudentADDScomeDATE;將Student表Sage的數(shù)據(jù)類型改為INT ALTERTABLEStudentMODIFYSageINT;例4刪除Student表學生姓名(Sname)的唯一性約束。ALTERTABLEStudentDROPUNIQUE(Sname);刪除基本表:DROPTABLE<表名>;連同數(shù)據(jù)及視圖一同被刪除。 例5刪除Student表。 DROPTABLEStudent;建立索引:CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);索引提供多種存取路徑,加快查詢速度。建在表的一列或多列上,各列名之間用逗號分隔。列名后面還可以用次序選項指定索引值的排列次序,可選ASC(升序)或DESC(降序),缺省值為ASC;UNIQUE表明要建立唯一索引;CLUSTER表示要建立聚簇索引。聚簇索引是指索引項的順序與表中記錄的物理順序一致的索引組織,并且表中的數(shù)據(jù)與索引一同存儲。可以在最常查詢的列上建立簇聚索引以提高查詢效率。唯一索引是指每一個索引值只對應唯一的數(shù)據(jù)記錄。 CREATECLUSTERINDEXStusnameONStudent(Sname);例為學生-課程數(shù)據(jù)庫中的Student,Course,SC三個表建立索引。其中Student表按學號升序建唯一索引,Course表按課程號升序建唯一索引,SC表按學號升序和課程號降序建唯一索引。 CREATEUNIQUEINDEXStusnoONStudent(Sno); CREATEUNIQUEINDEXCoucnoONCourse(Cno); CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);刪除索引:DROPINDEX<索引名>; 例7刪除Student表的Stusname索引。 DROPINDEXStusname;查詢:SELECT[ALL|DISTINCT]<列名或表達式>[別名1][,<列名或表達式>[別名2]]…FROM<表名或視圖名>[表別名][,<表名或視圖名>[表別名]]…[WHERE<條件表達式>][GROUPBY<列名1>][HAVING<條件表達式>][ORDERBY<列名2>][ASC|DESC];單表查詢:例1查詢?nèi)w學生的學號和姓名。 SELECTSno,Sname FROMStudent;例2查詢?nèi)w學生的詳細記錄。 SELECT*FROMStudent; 例3查詢?nèi)w學生的姓名、出生年份和所在系,要求用小寫字母表示所有系名。 SELECTSname,‘YearofBirth:’,1996-Sage,ISLOWER(Sdept) FROMStudent; SLEECTSnameName,‘YearofBirth:’BIRTH,1996-SageBIRTHDAY,ISLOWER(Sdept)DEPARTMENT(查詢并將列重命名) FROMStudent;消除取值重復行:SLEECTDISTINCTSno FROMSC;查詢滿足條件的元組:=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較符 BETWEENAND,NOTBETWEENAND確定范圍 IN,NOTIN確定集合(查找屬性值屬于指定集合的元組) LIKE,NOTLIKE進行字符串的匹配 ISNULL,ISNOTNULL空值 AND,OR多重條件注:當LIKE后面的匹配串中不含通配符時,可以用=取代LIKE謂詞。確定范圍:例10查詢年齡在20~23之間的學生的姓名、系別和年齡。 SELECTSname,Sdept,Sage FROMStudent WHERESageBETWEEN20AND23;確定集合:例13查詢不是信息系、數(shù)學系和計算機科學系學生的姓名和性別。 SELECTSname,Ssex FROMStudent WHERESdeptNOTIN(‘IS’,‘MA’,‘CS’);字符匹配:例21查詢?nèi)鄙俪煽兊膶W生的學號和相應的課程號。 SELECTCno,Ccredit FROMCourse WHERECnameLIKE‘DB\_Design’ESCAPE’\’;(ESCAPE’\’后面的字符”_”不再有通配符的含義,轉(zhuǎn)移為普通的“_”字符)涉及空值的查詢:例22查詢有成績的學生的學號和相應的課程號 SELECTSno,Cno FROMSC WHEREGradeISNOTNULL;多重條件查詢:例23查詢計算機系年齡在20歲以下的學生姓名。 SELECTSname FROMStudent WHERESdept=‘CS’ANDSage<20;對查詢結(jié)果排序:用ORDERBY字句,升序(ASC)或降序排序(DESC)。例25查詢?nèi)w學生情況,結(jié)果按所在系的系號升序排列,同一系中的學生按年齡將序排列。 SELECT* FROMStudent ORDERBYSdept,SageDESC;集函數(shù):count,sum,avg,max,min 例27查詢選修了課程的學生人數(shù)。 SELECTCOUNT(DISTINCTSno) FROMSC;GROUPBY子句:將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。 例31查詢選修了3門以上課程的學生學號。 SELECTSno FROMSC GROUPBYSno HAVINGCOUNT(*)>3;連接條件:連接查詢中用來連接兩個表的條件。 例32查詢每個學生及其選修課程的情況。 SELECTStudent.*,SC.* FROMStudent,SCWHEREStudent.Sno=SC.Sno;等值連接:連接運算符為=。自然連接:在等值連接中,把目標列中重復的屬性列去掉,就成為自然連接。自身連接:一個表與其自己進行連接。 例34查詢每一門課的間接先修課(即先修課的先修課)SELECTFIRST.Cno,SECOND.Cpno FROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno; 運行結(jié)果:嵌套查詢:將一個查詢快嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢。注:子查詢不能用ORDERBY子句。 例37查詢與劉晨在同一個系學習的學生。 SELECTSno,Sname,Sdept FROMStudent WHERESdeptIN( SELECTSdept FROMStudent WHERESname=‘劉晨’);不相關子查詢:子查詢的查詢條件不依賴于父查詢。SELECTSno,Sname,Sdept FROMStudentWHERESdept=(SELECTSdept FROMStudentWHERESname=‘劉晨’);注意子查詢要在比較符之后。相關子查詢:子查詢的查詢條件依賴于外層父查詢的某個屬性值。例:找出每個學生超過他選修課程平均成績的課程號 SELECTSno,Cno FROMSCSCXWHEREGrade>=(SELECTAVG(Grade) FROMSCSCYWHERESCY.Sno=SCX.Sno);ANY:與子查詢結(jié)果的某個值比較 ALL:與子查詢結(jié)果的所有值比較例39查詢其他系中比信息系某一學生年齡小的學生姓名和年齡。SELECTSname,Sage FROMStudentWHERESage<ANY(SELECTSage FROMStudentWHERESdept=‘IS’) ANDSdept<>’IS’;帶有EXISTS謂詞的子查詢: 例41查詢所有選修了1號課程的學生姓名。SELECTSname FROMStudentWHEREEXISTS(SELECT* FROMSCWHERESC.Sno=Student.SnoANDCno=‘1’);用連接可寫成:SELECTSname FROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno=‘1; 例42查詢選修了全部課程的學生姓名。 SELECTSname FROMStudent WHERENOTEXISTS(SELECT* FROMCourseWHERENOTEXISTS(SELECT* FROMSCWHERESC.Sno=Student.SnoANDSC.Cno=Course.Cno));例46查詢選修了課程1或者選修了課程2的學生學號。SELECTSno FROMSCWHERECno=‘1’UNIONSELECTSno FROMSCWHERECno=‘2’;例48查詢同時選修了課程1和課程2的學生學號。SELECTSno FROMSCWHERECno=‘1’ANDSnoIN(SELECTSno FROMSCWHERECno=‘2’);SQL中更新包括:插入、刪除、修改將一個新學生記錄(學號:200215128;姓名:陳東;性別:男;所在系:IS;年齡:18)插入到Student表中。INSERT INTOStudent VALUES(‘200215128’,‘陳東’,‘男’,‘IS’,18);對每一個系,求學生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫。 CREATETABLEDeptage(SdeptCHAR(15),AvgageSMALLINT); INSERTINTODeptage(Sdept,Avgage) SELECTSdept,Avg(Sage) FROMStudent GROUPBYSdept;將學生200215121的年齡改為22歲。UPDATEStudentSETSage=22WHERESno=‘200215121’;刪除學號為200215128的學生記錄。DELETE FROMStudentWHERESno=‘200215128’;視圖:從一個或幾個基本表(或視圖)導出的表,是一個虛表。數(shù)據(jù)庫中只存放視圖的定義。而不存放視圖對應的數(shù)據(jù),這些數(shù)據(jù)仍存放在原來的基本表中。 例2建立信息系學生的視圖,并要求更新視圖時仍保證視圖只有信息系的學生。 CREATEVIEWIS_StudentASSELECTSno,Sname,Sage FROMStudentWHERESdept=‘IS’WITHCHECKOPTION(當對視圖進行插入或更新時,要保證新行滿足視圖的定義中的謂詞條件。)注:AS下面的子查詢通常不允許含有ORDERBY子句和DISTINCT短語。行列子集視圖:若一個視圖是從單個基本表導出的,并且只是去掉了基本表的某些行和某些列,但保留了碼,稱這類視圖為行列子集視圖。建立信息系選修了1號課程的學生視圖。 CREATEVIEWIS_S1(Sno,Sname,Grade) AS SELECTStudent.Sno,Student.Sname,Grade FROMStudent,SC WHERESdept=‘IS’ANDStudent.Sno=SC.SnoANDSC.Cno=‘1’;虛擬列:視圖定義中的一些基本表中并不存在派生屬性。表達式視圖:帶虛擬列的視圖。 例5定義一個反映學生出生年份的視圖。 CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2006-Sage FROMStudent;刪除視圖:例8刪除視圖IS_S1: DROPVIEWIS_S1;視圖查詢: 例3在S_G視圖中查詢平均成績在90分以上的學生學號和平均成績。SELECT* FROMS_GWHEREGavg>=90;視圖消解后得到:SELECTSno,AVG(Grade) FROMSCWHEREAVG(Grade)>=90 GROUPBYSno;正確的查詢語句應該是:SELECTSno,AVG(Grade) FROMSCGROUPBYSno; HAVINGAVG(Grade)>=90并不是所有視圖都可以更新,一些視圖是理論上可更新的,一些是理論上不可更新的。通常行列子集視圖允許更新。 視圖不允許更新的情況:書P124視圖的作用:簡化用戶操作;使用戶以多種角度看待同一數(shù)據(jù);對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性;對機密數(shù)據(jù)提供安全保護;更清晰的表達查詢。SQL中數(shù)據(jù)控制功能包:事務管理功能和數(shù)據(jù)保護功能;數(shù)據(jù)庫的安全性和完整性控制。DBMS安全控制功能:把授權(quán)決定告知系統(tǒng);授權(quán)結(jié)果存入數(shù)據(jù)字典;用戶提出操作請求時,根據(jù)授權(quán)情況進行檢查,以決定是否執(zhí)行操作請求。授權(quán):GRANT<權(quán)限>[,<權(quán)限>]…[ON<對象類型><對象名>]TO<用戶>[,<用戶>例1把查詢Student表的權(quán)限授給用戶U1。GRANTSELECT ONTABLEStudent TOU1; 例3把查詢Student表和修改學生學號的權(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修改學生學號的權(quán)限收回。REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;第五章數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。完整性:防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤的信息的輸入和輸出造成的無效操作和錯誤結(jié)果。安全性:保護數(shù)據(jù)庫防止惡意的破壞和非法的存取。完整性約束條件是加在數(shù)據(jù)庫數(shù)據(jù)之上的語義約束條件。完整性檢查是檢查數(shù)據(jù)是否滿足完整性條件的機制。完整性控制機制具有三個方面的功能:定義,檢查,保證數(shù)據(jù)的完整性。實體完整性在CREATETABLE中用PRIMARYKEY定義。完整性檢查包括:主碼值是否唯一,不唯一則拒絕修改;檢查注明的各屬性是否為空,一個空則拒絕修改。參照完整性:FOREIGNKEY和REFERENCES短語定義外碼和所參照的主碼。自定義完整性約束條件:NOTNULLUNIQUECHECK第六章關系數(shù)據(jù)理論例:用于描述學生情況的一組屬性:U={SNO,SDEPT,MN,CNAME,G}。這里,這些屬性分別描述學號、系、系負責人、課程名和成績。由現(xiàn)實世界已知的事實可知:一個系有若干學生,但一個學生只屬于一個系;一個系只有一名負責人;一個學生可以選修多門課程,每門課程有若干學生選修;每個學生學習每一門課程有一個成績。因此可得到屬性集U上的一組函數(shù)依賴:F={SNO→SDEPT,SDEPT→MN,(SNO,CNAME)→G}不好的模式常見的四個問題:插入異常、刪除異常、冗余太大、更新異常。解決辦法:S(SNO,SDEPT,SNO→SDEPT);SG(SNO,CNAME,G,(SNO,CNAME)→G);DEPT(SDEPT,MN,SDEPT→MN)。關系數(shù)據(jù)庫的規(guī)范化理論主要包括三個方面的內(nèi)容:函數(shù)依賴、范式、模式設計。其中,函數(shù)依賴起著核心的作用。函數(shù)依賴:設關系模式R(U),是屬性集U上的關系模式,X和Y是U的子集。若對于R(U)的任意一個可能的關系r,r中不可能存在兩個元組在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的任何一個真子集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,則X?Y,實際上是X直接→Z,是直接函數(shù)依賴而不是傳遞函數(shù)依賴。5NFì4NFìBCNFì3NFì2NFì1NF一個低一級范式的關系模式,通過模式分解可以轉(zhuǎn)換為若干個高一級范式的關系模式的集合,這種過程叫做規(guī)范化。第一范式:關系中每個屬性都是不可再分的簡單項。1NF,記作R?1NF。滿足這個條件的關系稱為規(guī)范化關系。注:在非規(guī)范化的關系中去掉組合項就能化成規(guī)范化的關系。2NF:若R?1NF,且每一個非主屬性完全函數(shù)依賴于碼,則R?2NF??紤]關系模式S-L-C(SNO,SDEPT,SLOC,CNO,G),其中SLOC為學生的住處,并且每個系的學生住在同一個地方。這里碼為(SNO,CNO)。滿足的函數(shù)依賴有:F(SNO,CNO)→G,SNO→SDEPT,SDEPT→SLOC,SNO→SLOC,P(SNO,CNO)→SDEPT,P(SNO,CNO)→SLOC。所以S-L-C?2NF不滿足2NF和3NF的關系模式會產(chǎn)生以下問題:插入異常刪除異常修改復雜。分析上面的例子,可以用投影分解把S-L-C分解為:SC(SNO,CNO,G) F(SNO,CNO)→GS-L(SNO,DEPT,SLOC)SNO→SDEPTSDEPT→SLOCSNO→SLOC3NF:關系模式R<U,F(xiàn)>中若不存在這樣的碼X,屬性組Y及非主屬性Z(Z?Y),使得X→Y,Y?X,Y→Z成立,則稱R<U,F(xiàn)>?3NF。注:若R?3NF,則每一個非主屬性既不部分依賴于碼也不傳遞依賴于碼??紤]分解得到的關系模式S-L(SNO,SDEPT,SLOC)。由于:SNO→SDEPT SDEPT→SLOC SDEPT?SNO 所以S-L?3NF解決辦法是對S-L分解消除非主屬性對碼的傳遞函數(shù)依賴:S-D(SNO,SDEPT) SNO→SDEPTD-L(SDEPT,SLOC)SDEPT→SLOCBCNF:關系模式R<U,F(xiàn)>?1NF。若X→Y且Y?X時,X必含有碼,則R<U,F(xiàn)>?BCNF。也就是說,關系模式R<U,F(xiàn)>中,若每一個決定因素都包含碼,則R<U,F(xiàn)>?BCNF。一個滿足BCNF的關系模式有:所有非主屬性對每一個碼都是完全函數(shù)依賴;所有的主屬性對每一個不包含它的碼,也是完全函數(shù)依賴;沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。例子:考察關系模式Course(CNO,CNAME,PCNO),它只有一個碼CNO,這里沒有任何屬性對CNO部分依賴或傳遞依賴,所以Course?3NF。同時CNO是唯一的決定因素,所以Course?BCNF。對于關系模式Student(SNO,SNAME,SDEPT,SAGE),假定SNAME也具有唯一性,那么Student就有兩個碼,這兩個碼都由單個屬性組成,彼此不相交。其他屬性不存在對碼的傳遞依賴與部分依賴,所以Student3NF。同時Student中除SNO,SNAME外沒有其他決定因素,所以Student也屬于BCNF。關系模式SJP(S,J,P)中,S是學生,J表示課程,P表示名次。每一個學生選修每門課程的成績有一定的名次,每門課程中每一名次只有一個學生(即沒有并列名次)。由語義可得到下面的函數(shù)依賴:(S,J)→P (J,P)→S所以(S,J)與(J,P)都可以作為候選碼。這兩個碼各由兩個屬性組成,而且它們是相交的。這個關系模式中顯然沒有屬性對碼傳遞依賴或部分依賴。所以SJP?3NF,而且除(S,J)與(J,P)以外沒有其他決定因素,所以SJP?BCNF。關系模式STJ(S,T,J)中,S表示學生,T表示教師,J表示課程。每一教師只教一門課;每門課有若干教師;某一學生選定某門課,就對應一個固定的教師。由語義可得到下面的函數(shù)依賴:(S,J)→T (S,T)→J T→J這里(S,J),(S,T)都是候選碼。STJ是3NF,因為沒有任何非主屬性對碼傳遞依賴或部分依賴。但STJ不滿足BCNF關系,因為T是決定因素,而T不包含碼。STJ仍存在插入異常 將其分解為:ST(S,T) TJ(T,J)關系規(guī)范化的過程如下圖所示:在實際應用中,最有價值的是3NF和BCNF。合并規(guī)則:由X→Y,X→Z,有X→YZ。偽傳遞規(guī)則:由X→Y,WY→Z,有XW→Z。分解規(guī)則:由X→Y及ZíY,有X→Z。X→A1A2…Ak成立的充分必要條件是X→Ai成立在關系模式R<U,F(xiàn)>中為F所邏輯蘊含的函數(shù)依賴的全體叫做F的閉包,記為F+。已知關系模式R<U,F(xiàn)>,其中U={A,B,C,D,E};F={AB→C,B→D,C→E,EC→B,AC→B}。求(AB)F+。由上述算法,設X(0)=AB;計算X(1)。逐一掃描F集合中各個函數(shù)依賴,找左部為A,B或AB的函數(shù)依賴。得到兩個:AB→C,B→D。于是X(1)=AB∪CD=ABCD;因為X(0)X(1),所以再找出左部為ABCD子集的那些函數(shù)依賴,又得到C→E,AC→B,于是X(2)=X(1)∪BE=ABCDE。因為X(2)已等于全部屬性集合,所以(AB)F+=ABCDE。模式分解:分解具有無損連接性、分解保持依賴、既具有無損連接性又保持依賴。練習:設有關系模式R(A,B,C,D,E),其上的函數(shù)依賴集:F={A→BC,CD→E,B→D,E→A}①計算A+。②求出R的所有候選關鍵字。③R滿足的最高范式。設有一教學管理數(shù)據(jù)庫,其屬性包括:學號(S#),課程號(C#),成績(G),任課教師(TN),教師所在的系(D)。這些數(shù)據(jù)有下列語義:學號和課程號分別與其代表的學生和課程一一對應;一個學生所修的每門課程都有一個成績;每門課程只有一位任課教師,但每位教師可以有多門課程;教師中沒有重名,每個教師只屬于一個系。①試根據(jù)上述語義確定函數(shù)依賴集。②如果用上面所有屬性組成一個關系模式,那么該關系模式滿足的最高范式級別是什么?③分解為3NF。第七章數(shù)據(jù)庫設計數(shù)據(jù)庫設計:對于一個給定的應用環(huán)境,構(gòu)造(設計)優(yōu)化的數(shù)據(jù)庫邏輯模式和物理結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫及其應用系統(tǒng),使之能有效的存儲和管理數(shù)據(jù),滿足各種用戶的應用需求,包括信息管理要求和數(shù)據(jù)操作要求。數(shù)據(jù)庫設計的目標:為用戶和各種應用系統(tǒng)提供一個信息基礎設施和高效率的運行環(huán)境?,F(xiàn)代數(shù)據(jù)庫設計的特點:“三分技術,七分管理,十二分的基礎數(shù)據(jù)”;結(jié)構(gòu)(數(shù)據(jù))設計和行為(處理)設計相結(jié)合。規(guī)范設計法:新奧爾良方法、基于E-R模型的數(shù)據(jù)庫設計方法、基于3NF的設計方法、ODL方法。按規(guī)范設計法可將數(shù)據(jù)庫設計分為六個階段:分析設計階段:前四個階段面向用戶的應用要求,面向具體的問題:需求分析 概念結(jié)構(gòu)設計面向數(shù)據(jù)庫管理系統(tǒng):邏輯結(jié)構(gòu)設計 物理結(jié)構(gòu)設計實現(xiàn)和運行階段:后兩個階段面向具體的實現(xiàn)方法:數(shù)據(jù)庫實施數(shù)據(jù)庫運行與維護數(shù)據(jù)庫設計的生存期:指從數(shù)據(jù)庫研制到不再使用它的整個時期。需求分析是整個數(shù)據(jù)庫設計過程的基礎,要收集數(shù)據(jù)庫所有用戶的信息內(nèi)容和處理要求,并加以規(guī)格化和分析。概念結(jié)構(gòu)設計:整個數(shù)據(jù)庫設計的關鍵,通過對用戶需求進行綜合、歸納與抽象,形成獨立于任何DBMS軟件和硬件的概念模型。邏輯結(jié)構(gòu)設計:將上一步得到的概念結(jié)構(gòu)轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型,并對其進行優(yōu)化。數(shù)據(jù)庫物理設計:為邏輯數(shù)據(jù)模型建立一個完整的能實現(xiàn)的物理數(shù)據(jù)庫結(jié)構(gòu),包括存儲結(jié)構(gòu)和存取方法。數(shù)據(jù)庫實施階段:運用DBMS提供的數(shù)據(jù)語言及其宿主語言,根據(jù)邏輯設計和物理設計的結(jié)果建立數(shù)據(jù)庫,編制與調(diào)試應用程序,組織數(shù)據(jù)入庫,并進行試運行。數(shù)據(jù)庫運行、維護階段:收集和記錄實際系統(tǒng)運行的數(shù)據(jù),數(shù)據(jù)庫運行的記錄用來提高用戶要求的有效信息,用來評價數(shù)據(jù)庫系統(tǒng)的性能,進一步調(diào)整和修改數(shù)據(jù)庫。數(shù)據(jù)庫結(jié)構(gòu)設計的不同階段形成數(shù)據(jù)庫的各級模式:需求分析階段,綜合各個用戶的需求;概念設計階段形成獨立于及其特點,獨立于各個DBMS產(chǎn)品的概念模式(E-R圖);邏輯設計階段將E-R圖轉(zhuǎn)換成具體的數(shù)據(jù)庫產(chǎn)品支持的數(shù)據(jù)模型,形成數(shù)據(jù)庫邏輯模式;然后根據(jù)用戶處理的要求、安全性的考慮,在基本表的基礎上再建立必要的視圖,形成數(shù)據(jù)的外模式;物理設計階段,根據(jù)DBMS的特點和處理需要,進行物理存儲安排,建立索引,形成數(shù)據(jù)庫內(nèi)模式。需求分析的任務:通過詳細調(diào)查現(xiàn)實世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,收集支持新系統(tǒng)的基礎數(shù)據(jù)并對其進行處理,確定新系統(tǒng)的功能。獲得用戶對數(shù)據(jù)庫的如下要求:信息要求、處理要求、安全性與完整性要求。數(shù)據(jù)應用系統(tǒng)設計的特點:用戶參加數(shù)據(jù)庫設計。需求分析的方法:自頂向下的分析方法。SA方法從最上層的系統(tǒng)組織機構(gòu)入手,采用逐層分解的方式分析系統(tǒng),用數(shù)據(jù)流圖和數(shù)據(jù)字典描述系統(tǒng)。數(shù)據(jù)字典包括:數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理過程。數(shù)據(jù)項是不可再分的數(shù)據(jù)單位。數(shù)據(jù)結(jié)構(gòu):反映數(shù)據(jù)之間的組合關系??梢杂扇舾蓚€數(shù)據(jù)項或數(shù)據(jù)結(jié)構(gòu)組成。數(shù)據(jù)流可以是數(shù)據(jù)項,也可以是數(shù)據(jù)結(jié)構(gòu),它表示某一處理過程中數(shù)據(jù)在系統(tǒng)內(nèi)傳輸?shù)穆窂?。需求分析注意:設計人員要充分考慮到可能的擴充和改變;強調(diào)用戶的參與。概念結(jié)構(gòu)設計:將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過程。做法:選擇局部應用;逐一設計分E-R圖。概念結(jié)構(gòu)是對現(xiàn)實世界的一種抽象。三種抽象:分類、聚集(整體與部分)、概括(一般與特殊,子集關系)。E-R圖中的沖突有三種:屬性沖突、命名沖突和結(jié)構(gòu)沖突。將E-R圖轉(zhuǎn)換為關系模型實際上就是將實體、屬性和聯(lián)系轉(zhuǎn)換成關系模式。在轉(zhuǎn)換中要遵循以下原則:(1)將每一個實體轉(zhuǎn)換為一個關系;(2)所有主碼必須定義非空。實體間的聯(lián)系有以下幾種轉(zhuǎn)換規(guī)則:一個1:1的聯(lián)系可以轉(zhuǎn)換為一個獨立的關系,也可以與任意一端對應的關系合并。一個1:n聯(lián)系可以轉(zhuǎn)換為一個獨立的關系,也可以與n端對應的關系合并。一個m:n聯(lián)系轉(zhuǎn)換為一個關系。三個或三個以上實體間的一個多元聯(lián)系可以轉(zhuǎn)換為一個關系。具有相同碼的關系模式可合并。數(shù)據(jù)庫物理設計:對于給定的邏輯數(shù)據(jù)模型,選取一個最適合應用環(huán)境的物理結(jié)構(gòu)的過程。任務是為了有效地實現(xiàn)邏輯模式,確定所采取的存儲策略。數(shù)據(jù)庫的物理設計可分為兩步:確定數(shù)據(jù)庫的物理結(jié)構(gòu);對物理結(jié)構(gòu)進行評價。關系模式常用的三類存取方法:索引方法、聚簇(Cluster)方法、HASH方法。聚簇就是為了提高查詢速度,把在一個(或一組)屬性上具有相同值的元組集中地存放在一個物理塊中。如果存放不下,可以存放在相鄰的物理塊中。其中,這個(或這組)屬性稱為聚簇碼。兩個作用:聚簇值不必在每個元組中重復存儲;大大提高按聚簇碼進行查詢的效率。一個數(shù)據(jù)庫可以建立多個聚簇,一個關系只能加入一個聚簇。第十章數(shù)據(jù)庫恢復技術事務:用戶定義的一個數(shù)據(jù)庫操作序列,要么全不做,要么全做,是一個不可分割的工作單位。事務的和程序是兩個概念。一般地講,一個程序中包含多個事務。在SQL語言中,定義事務的語句有三條:BEGINTRANSACTION開始COMMIT結(jié)束:表示提交,將事務中所有對數(shù)據(jù)庫的更新協(xié)會到磁盤,正常結(jié)束事務。ROLLBACK結(jié)束:回滾,事務運行過程中發(fā)生故障,將事務中隊數(shù)據(jù)庫的已完成的更新操作全部車型,回滾到事務開始的狀態(tài)。事務的四個特性:簡稱ACID原子性:要么都做,要么都不做。是數(shù)據(jù)庫的邏輯工作單位。一致性;隔離性;持續(xù)性。數(shù)據(jù)庫的恢復:把數(shù)據(jù)庫從錯誤狀態(tài)恢復某一致的正確狀態(tài)的功能。數(shù)據(jù)庫恢復機構(gòu)的目的:保證事務的原子性;當系統(tǒng)發(fā)生故障以后,數(shù)據(jù)庫能夠恢復到正確狀態(tài)。事務內(nèi)部的故障:在不影響其他事務運行的情況下,強行回滾事務,既撤消該事務已經(jīng)作出的任何對數(shù)據(jù)庫的修改,使得該事務好像根本沒有啟動一樣。這類恢復操作成為事務撤銷(UNDO)。系統(tǒng)故障:恢復子系統(tǒng)除需要撤銷所有未完成事務外,還需要重做(REDO)所有已提交的事務,以將數(shù)據(jù)庫真正恢復到一致狀態(tài)。介質(zhì)故障(又稱為硬故障)。計算機病毒?;謴偷脑砀爬椋喝哂?。數(shù)據(jù)庫中任何一部分被破壞的或不正確的數(shù)據(jù)可以根據(jù)存儲在系統(tǒng)別處的冗余數(shù)據(jù)來建立。建立冗余數(shù)據(jù)最常用的技術是:數(shù)據(jù)轉(zhuǎn)儲和登錄日志文件?;謴蜋C制涉及的兩個關鍵問題:如何建立冗余數(shù)據(jù);如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復。數(shù)據(jù)轉(zhuǎn)儲即由DBA定期地將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。日志文件是用來記錄事務對數(shù)據(jù)庫的更新操作的文件。日志文件需要登記的內(nèi)容:各個事務的開始標記、結(jié)束(標記、所有更新操作。日志文件可以用來進行事務故障恢復和系統(tǒng)故障恢復,并協(xié)助后備副本進行介質(zhì)故障恢復。具體作用:事務故障恢復和系統(tǒng)故障恢復必須用日志文件;在動態(tài)轉(zhuǎn)儲方式中,必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復數(shù)據(jù)庫。在靜態(tài)轉(zhuǎn)儲方式中,也可以建立日志文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論