第一章 數據庫系統基本概念前端
要求、目標:程序員
瞭解和掌握數據管理技術的發展階段,數據描述的術語,數據抽象的四個級別,數據庫管理系統的功能,數據庫系統的組成。算法
1、 數據管理技術的發展數據庫
1. 分爲四個階段:人工管理階段、文件系統階段、數據庫階段和高級數據庫階段。編程
2. 數據庫階段數據管理的特色:安全
1) 採用數據模型表示複雜的數據結構。服務器
2) 有較高的數據獨立性。網絡
3) 數據庫系統爲用戶提供了方便的用戶接口。數據結構
4) 提供四方面的數據控制功能:數據庫的恢復、數據庫的併發控制、數據的完整性、數據安全性。閉包
5) 增長了系統的靈活性。
3. 數據庫(DB):是長期存儲在計算機內、有組織的、統一管理的相關數據的集合。
4. 數據庫管理系統(DBMS):是位於用戶與操做系統之間的一層數據管理軟件,它爲用戶或應用程序提供訪問DB的方法,包括DB的創建、查詢、更新及各類數據控制。
5. 數據庫系統(DBS):是實現有組織地、動態地存儲大量關聯數據、方便多用戶訪問的計算機硬件、軟件和數據資源組成的系統,即它是採用數據庫技術的計算機系統。
2、 數據描述
1. 分爲三個階段:概念設計、邏輯設計和物理設計。
2. 概念設計中的術語:
1) 實體:客觀存在,能夠相互區別的事物稱爲實體。
2) 實體集:性質相同的同類實體的集合。
3) 屬性:實體有不少特性,每個特性稱爲屬性。
4) 實體標識符(關鍵碼或鍵):能唯一標識實體的屬性或屬性集。
以上概念均有類型和值之分。
3. 邏輯設計中的術語:
1) 字段(數據項):標記實體屬性的命名單位稱爲字段或數據項。
2) 記錄:字段的有序集合。
3) 文件:同一類記錄的集合。
4) 關鍵碼:能唯一標識文件中每一個記錄的字段或字段集。
以上概念均有類型和值之分。
4. 概念設計和邏輯設計中術語的對應關係:
概念設計 邏輯設計
實體 — 記錄
屬性 — 字段(數據項)
實體集 — 文件
實體標識符— 關鍵碼
5. 實體之間聯繫的元數:與一個聯繫有關的實體集個數。經常使用二元聯繫。二元聯繫的類型有三種:一對一聯繫、一對多聯繫、多對多聯繫。
6. 一對一聯繫:若是實體集E1中每一個實體至多和實體集E2中的一個實體有聯繫,反之亦然,那麼實體集E1和E2的聯繫稱爲「一對一聯繫」,記爲「1:1」。
7. 一對多聯繫:若是實體集E1中每一個實體與實體集E2中任意個(零個或多個)實體間有聯繫,而E2中每一個實體至多和E1中一個實體有聯繫,那麼稱E1對E2的聯繫是「一對多聯繫」,記爲「1:N」。
8. 多對多聯繫:若是實體集E1中每一個實體能夠與實體集E2中任意個(零個或多個)實體間有聯繫,反之亦然,那麼稱E1和E2的聯繫是「多對多聯繫」,記爲「M:N」。
3、 數據抽象的級別
1. 數據模型:描述數據庫的結構和定義,對現實世界的數據進行抽象。
2. 從現實世界的信息到數據庫存儲的數據以及用戶使用的數據是一個逐步抽象過程,根據數據抽象的級別定義了四種模型:概念模型、邏輯模型、外部模型和內部模型。
3. 概念模型:表達用戶需求觀點的數據全局邏輯結構的模型。
4. 邏輯模型:表達計算機實現觀點的DB全局邏輯結構的模型。
5. 外部模型:表達用戶使用觀點的DB局部邏輯結構的模型。
6. 內部模型:表達DB物理結構的模型。
7. 數據抽象的過程、即數據庫設計的過程具體步驟:
1) 根據用戶需求,設計數據庫的概念模型;
2) 根據轉換規則,把概念模型轉換成數據庫的邏輯模型;
3) 根據用戶的業務特色,設計不一樣的外部模型,給程序員使用;
4) 數據庫實現時,要根據邏輯模型設計其內部模型。
一般分爲概念設計、邏輯設計(2和3步)和物理設計三個階段。
8. 經常使用的概念模型是實體聯繫(ER)模型,ER模型主要用ER圖來表示。
9. 邏輯模型的分類:層次模型、網狀模型、關係模型等。
10. 層次模型:用樹型(層次)結構表示實體及實體間聯繫的數據模型。
11. 1969年,美國IBM公司的IMS系統是典型的層次模型系統。
12. 網狀模型:用有向圖結構表示實體及實體間聯繫的數據模型。
13. 1969年,CODASYL組織提出DBTG報告中的數據模型是網狀模型的主要表明。
14. 關係模型:是由若干個關係模式組成的集合。關係模式即記錄類型,它的實例稱爲關係,每一個關係其實是一張二維表格。
15. 1970年,美國IBM公司的E.F.Codd連續發表論文,提出關係模型,奠基了關係數據庫的理論基礎。關係數據庫是目前的主流數據庫。
16. 外部模型中的模式稱爲視圖。
17. 三級模式:
從用戶(或應用程序)到數據庫之間,DB的數據結構描述有三個層次:
1)外模式:用戶與數據庫系統的接口,是用戶用到的那部分數據的描述。外模式由若干個記錄類型組成。
2)邏輯模式:是數據庫中所有數據的總體邏輯結構的描述。
3)內模式:是數據庫在物理存儲方面的描述。
注意:外模式是邏輯模式的子集。
18. 兩級映像:
1)外模式/邏輯模式映像:存在於外模式和邏輯模式之間,用於定義外模式和邏輯模式之間的對應性。
2)邏輯模式/內模式映像:存在於邏輯模式和內模式之間,用於定義邏輯模式和內模式之間的對應性。
19. 數據庫系統的三級模式、兩級映像結構使數據庫系統達到了高度的數據獨立性。
20. 數據獨立性:是指應用程序與數據庫的數據結構之間相互獨立,在修改數據結構時,儘量不修改應用程序。分爲邏輯數據獨立性和物理數據獨立性。
21. 邏輯數據獨立性:若是數據庫的邏輯模式要修改,那麼只要對外模式/邏輯模式映像做相應的修改,可使外模式和應用程序儘量保持不變。這樣就認爲數據庫達到了邏輯數據獨立性。
22. 物理數據獨立性:若是數據庫的內模式要修改,即數據庫的物理結構有所變化,那麼只要對邏輯模式/內模式映像做相應的修改,可使邏輯模式儘量保持不變。也就是對內模式的修改儘可能不影響邏輯模式,固然對外模式和應用程序的影響更小,這樣就認爲數據庫達到了物理數據獨立性。
4、 數據庫管理系統(DBMS)
1.DBMS的主要功能:數據庫的定義功能(DBMS提供DDL定義數據庫的三級模式、兩級映像等)、數據庫的操縱功能(DBMS提供DML實現對數據的操做,基本的數據操做有檢索和更新兩類)、數據庫的保護功能、數據庫的維護功能、數據字典。
5、 數據庫系統(DBS)
1.DBS的組成:是數據庫、硬件、軟件和數據庫管理員的集合體。
2.軟件包括DBMS、OS、各類主語言和應用開發支撐軟件等程序。其中,DBMS是DBS的核心軟件,要在OS支持下才能工做。
3.數據庫管理員(DBA):是控制數據總體結構的一組人員,負責DBS的正常運行,承擔建立、監控和維護數據庫結構的責任。
第二章 數據庫設計和ER模型
要求、目標:
瞭解和掌握數據庫應用系統設計的全過程,掌握ER模型和關係模型的基本概念,掌握概念設計中ER模型的設計方法,掌握邏輯設計中ER模型向關係模型轉換的方法。
1、數據庫系統生存期
1.數據庫系統生存期:數據庫應用系統從開始規劃、設計、實現、維護到最後被新的系統取代而中止使用的整個期間。
2.數據庫系統生存期分七個階段:規劃、需求分析、概念設計、邏輯設計、物理設計、實現、運行維護。
3.規劃階段三個步驟:系統調查、可行性分析、肯定數據庫系統總目標。
4.需求分析階段:主要任務是系統分析員和用戶雙方共同收集數據庫系統所須要的信息內容和用戶對處理的需求,並以需求說明書的形式肯定下來。
5.概念設計階段:產生反映用戶單位信息需求的概念模型。與硬件和DBMS無關。
6.邏輯設計階段:將概念模型轉換成DBMS能處理的邏輯模型。外模型也將在此階段完成。
7.物理設計階段:對於給定的基本數據模型選取一個最適合應用環境的物理結構的過程。數據庫的物理結構主要指數據庫的存儲記錄格式、存儲記錄安排和存取方法。
8.數據庫的實現:包括定義數據庫結構、數據裝載、編制與調試應用程序、數據庫試運行。
2、ER模型的基本概念
1. ER模型的基本元素是:實體、聯繫和屬性。
2. 實體:是一個數據對象,指應用中能夠區別的客觀存在的事物。
實體集:是指同一類實體構成的集合。
實體類型:是對實體集中實體的定義。
通常將實體、實體集、實體類型統稱爲實體。
3. 聯繫:表示一個或多個實體之間的關聯關係。
聯繫集:是指同一類聯繫構成的集合。
聯繫類型:是對聯繫集中聯繫的定義。
通常將聯繫、聯繫集、聯繫類型統稱爲聯繫。
4. 同一個實體集內部實體之間的聯繫,稱爲一元聯繫;兩個不一樣實體集實體之間的聯繫,稱爲二元聯繫,以此類推。
5. 屬性:實體的某一特性稱爲屬性。在一個實體中,可以唯一標識實體的屬性或屬性集稱爲實體標識符。
6. ER模型中,方框表示實體、菱形框表示聯繫、橢圓形框表示屬性、實體與聯繫、實體與其屬性、聯繫與其屬性之間用直線鏈接。實體標識符下畫橫線。聯繫的類型要在直線上標註。注意:聯繫也有可能存在屬性,但聯繫自己沒有標識符。
例:假設一個學生可選多門課程,而一門課程又有多個學生選修,一個教師可講多門課程,一門課程至多隻有一個教師講授。ER圖以下:
7. 概念設計三個步驟:設計局部ER模型、設計全局ER模型和全局ER模型的優化。
3、關係模型的基本概念
1.關係模型的定義:用二維表格表示實體集,用關鍵碼錶示實體之間聯繫的數據模型。
2.在關係模型中,字段稱爲屬性,字段值稱爲屬性值,記錄類型稱爲關係模式。記錄稱爲元組,元組的集合稱爲關係或實例。有時習慣稱關係爲表或表格,元組爲行,屬性爲列。關係中屬性個數稱爲元數,元組個數稱爲基數。
3.關鍵碼(簡稱鍵):由一個或多個屬性組成。
4.超鍵:在關係中能唯一標識元組的屬性集稱爲關係模式的超鍵。
5.候選鍵:不含有多餘屬性的超鍵。
6.主鍵:用戶選做元組標識的候選鍵。通常如不加說明,鍵是指主鍵。
7.外鍵:若是模式R中屬性集K是其餘模式的主鍵,那麼K在模式R中稱爲外鍵。
8.值域:關係中每個屬性都有一個取值範圍,稱爲屬性的值域。每個屬性對應一個值域,不一樣的屬性可對應於同一值域。
9.關係的定義:關係是一個屬性數目相同的元組的集合。
10.關係的性質:關係是一種規範化了的二維表格。
1)關係中每個屬性值都是不可分解的;
2)關係中不容許出現重複元組;
3)關係沒有行序;
4)元組中的屬性在理論上也是無序的,但使用時按習慣考慮列的順序。
11.關係數據庫中的數據與更新操做必須遵循三類完整性規則:實體完整性規則、參照完整性規則、用戶定義的完整性規則。
12.實體完整性規則:要求關係中元組在組成主鍵的屬性上不能有空值。
13.參照完整性規則:若是屬性集K是關係模式R1的主鍵,K也是關係模式R2的外鍵,那麼在R2關係中,K的取值只容許兩種可能,或者爲空值,或者等於R1關係中某個主鍵值。這條規則的實質是「不容許引用不存在的實體」。其中,R1稱爲參照關係;R2稱爲依賴關係。
注意:這條規則在具體使用時,有三點變通:
1)外鍵和相應的主鍵能夠不一樣名,只要定義在相同值域上便可;
2)R1和R2能夠是同一個關係模式,此時表示了同一個關係中不一樣元組之間的聯繫;
3)外鍵值是否容許空,應視具體問題而定。
14.用戶定義的完整性規則:用戶針對具體的數據約束,設置的完整性規則,由系統來檢驗實施。
4、ER模型到關係模型的轉換
1.ER圖轉換成關係模式集的算法:
1)實體類型的轉換:將每一個實體類型轉換成一個關係模式,實體的屬性即爲關係模式的屬性,實體標識符即爲關係模式的鍵。
2)聯繫類型的轉換:主要掌握二元聯繫類型的轉換。
a) 若實體間聯繫是1:1,能夠在兩個實體類型轉換成的關係模式中任意一個關係模式的屬性中加入另外一個關係模式的鍵(做爲外鍵)和聯繫類型的屬性。
b) 若實體間聯繫是1:N,則在N端實體類型轉換成的關係模式中加入1端實體類型的鍵(做爲外鍵)和聯繫類型的屬性。
c) 若實體間聯繫是M:N,則將聯繫類型也轉換成關係模式,其屬性爲兩端實體類型的鍵(做爲外鍵)加上聯繫類型的屬性,而鍵爲兩端實體鍵的組合。
例:下面是教學管理的一個可能的ER圖。圖中,有三個實體類型:系、教師和課程;有四個聯繫類型:主管、聘用、開設和任教。根據轉換算法,把該圖轉換成關係模式集的步驟以下:
第一步:把三個實體類型轉換成三個關係模式(注意關係模式的表示方法):
系(系編號,系名,電話)
教師(教工號,姓名,性別,職稱)
課程(課程號,課程名,學分)
第二步:對於1:1聯繫,能夠在「系」模式中加入教工號(教工號爲外鍵)。
對於1:N聯繫「聘用」,能夠在「教師」模式中加入系編號和聘期兩個屬性(系編號爲外鍵);
對於1:N聯繫「開設」,能夠在「課程」模式中加入系編號(系編號爲外鍵)。這樣第一步獲得的三個模式改變成以下形式(注意:外鍵一般使用波浪線表示):
系(系編號,系名,電話,主管人的教工號)
教師(教工號,姓名,性別,職稱,系編號,聘期)
課程(課程號,課程名,學分,系編號)
第三步:對於M:N聯繫「任教」,則生成一個新的關係模式:
任教(教工號,課程號,教材)
這樣,轉換成的四個關係模式以下:
系(系編號,系名,電話,主管人的教工號)
教師(教工號,姓名,性別,職稱,系編號,聘期)
課程(課程號,課程名,學分,系編號)
任教(教工號,課程號,教材)
2.採用ER模型的邏輯設計步驟
1)導出初始關係模式集:把概念設計的結果(即全局ER模型)轉換成初始關係模式集。
2)規範化處理
3)模式評價
4)模式修正
5)設計外模式
第三章 關係模式設計理論
要求、目標:
瞭解關係數據庫規範化理論及其在數據庫設計中的做用,重點是函數依賴和範式,要求掌握這些概念並能運用它們來進行模式分解。
1、關係模式的設計準則
1.數據冗餘:同一個數據在系統中屢次重複出現。
2.關係模式設計不當引發的異常問題:數據冗餘、操做異常(包括修改異常、插入異常和刪除異常)
3.關係模式的非形式化設計準則
1)關係模式的設計應儘量只包含有直接聯繫的屬性,不要包含有間接聯繫的屬性。也就是,每一個關係模式應只對應於一個實體類型或一個聯繫類型。
2)關係模式的設計應儘量使得相應關係中不出現插入異常、刪除和修改等操做異常現象。
3)關係模式的設計應儘量使得相應關係中避免放置常常爲空值的屬性。
4)關係模式的設計應儘量使得關係的等值鏈接在主鍵和外鍵的屬性上進行,而且保證之後不會生成額外的元組。
4.習慣使用的一些符號:
1)英文字母表首部的大寫字母「A,B,C,…」表示單個的屬性。
2)英文字母表尾部的大寫字母「…,U,V,W,X,Y,Z」表示屬性集。
3)大寫字母R表示關係模式,小寫字母r表示其關係。
4)關係模式的簡化表示方法:R(A,B,C,…)或R(ABC…)
5)屬性集X和Y的並集簡寫爲XY。
2、函數依賴
1.函數依賴(FD)的定義:設有關係模式R(U),X和Y是屬性集U的子集,函數依賴是造成X→Y的一個命題,只要r是R的當前關係,對r中任意兩個元組t和s,都有t[X]=s[X]蘊涵t[Y]=s[Y],那麼稱FD X→Y在關係模式R(U)中成立。
說明: 1)t[X]表示元組t在屬性集X上的值,其他類同。
2)X→Y讀做「X函數決定Y」或「Y函數依賴於X」。
3)FD是對關係模式R的一切可能的關係r定義的。對於當前關係r的任意兩個元組,若是X值相同,則要求Y值也相同,即有一個X值就有一個Y值與之對應,或者說Y值由X值決定。
例:設關係模式R(ABCD),在R的關係中,屬性值間有這樣的聯繫:A值與B值有一對多聯繫;C值與D值之間有一對一聯繫。試根據這些規則寫出相應的函數依賴。
B→A C→D D→C
2.若是X→Y和Y→X同時成立,則可記爲:X↔Y
3.FD的邏輯蘊涵:設F是在關係模式R上成立的函數依賴的集合,X→Y是一個函數依賴。若是對於R的每一個知足F的關係r也知足X→Y,那麼稱F邏輯蘊涵X→Y,記爲F|=X→Y。
4.設F是函數依賴集,被F邏輯蘊涵的函數依賴全體構成的集合,稱爲函數依賴集F的閉包,記爲F+。即F+={X→Y | F|=X→Y }
5.FD的推理規則(Armstrong公理)
設U是關係模式R的屬性集,F是R上成立的只涉及到U中屬性的函數依賴集。
1) 自反性:若YÍXÍU,則X→Y在R上成立。
2) 增廣性:若X→Y在R上成立,且ZÍU,則XZ→YZ在R上成立。
3) 傳遞性:若X→Y和Y→Z在R上成立,則X→Z在R上成立。
6.FD的其餘五條推理規則:
1)合併性:{X→Y,X→Z} |= X→YZ
2)分解性:{X→Y,ZÍY } |= X→Z
3)僞傳遞性:{X→Y,WY→Z } |= WX→Z
4)複合性:{X→Y,W→Z } |= WX→YZ
5){X→Y,W→Z } |= X∪(W-Y)→YZ
7.對於FD X→Y,若是YÍX,那麼稱X→Y是一個「平凡的FD」,不然稱爲「非平凡的FD」。一般研究非平凡FD。
例:X→X,X→φ, φ→φ,XY→X都是平凡函數依賴;X→XY則是非平凡函數依賴。
8.函數依賴是關鍵碼概念的推廣。
設關係模式R的屬性集是U,X是U的一個子集。若是X→U在R上成立,那麼稱X是R的一個超鍵。若是X→U在R上成立,但對於R的任一真子集X1都有X1→U不成立,那麼稱X是R的一個候選鍵。在關係模式設計理論中,鍵一般是指候選鍵。
9.屬性集的閉包
10.設F是屬性集U上的FD集,X上U的子集,那麼(相對於)屬性集X的閉包用X+表示,它是一個從F集使用FD推理規則推出的全部知足X→A的屬性A的集合:X+={屬性A | F|=X→A}
11.X→Y能用FD推理規則推出的充分必要條件是YÍ X+,從而避開求F+,使問題獲得簡化。
12.求屬性集X相對於FD集F的閉包X+的算法:
X+=X;
do {oldX+:=X+;
for F中每一個FD Y→Z do
if YÍ X+ then X+:=X+∪Z;
}while(X+!=oldX+);
例:屬性集U爲ABCD,FD集爲{A→B,B→C,D→B}。求A+、(AD)+和
(BD)+
A+=ABC
(AD)+=ABCD
(BD)+=BCD
13.若是關係模式R(U)上的兩個函數依賴集F和G,有F+=G+,則稱F和G是等價的函數依賴集。
3、關係模式的分解特性
1.關係模式的分解:
設有關係模式R(U),屬性集爲U,而R1,R2,…,Rk都是U的子集,而且有R1∪R2∪…∪Rk=U。關係模式R1,R2,…,Rk的集合用ρ表示,ρ={R1,R2,…,Rk}。用ρ代替R的過程稱爲關係模式的分解。這裏ρ稱爲R的一個分解,也稱爲數據庫模式。
通常把上述的R稱爲泛關係模式,R對應的當前值稱爲泛關係。數據庫模式ρ對應的當前值稱爲數據庫實例,它由數據庫模式中的每個關係模式的當前值組成。咱們用σ=<r1,r2,…,rk>表示。
所以,在計算機中數據並非存儲在泛關係r中,而是存儲在數據庫σ中。
2.σ和r是否等價,便是否表示一樣的數據。這個問題用「無損分解」特性表示。
在模式R上有一個FD集F,在ρ的每個模式Ri上有一個FD集Fi,那麼{F1,F2,…,Fk}與F是否等價。這個問題用「保持依賴」特性表示。
4、範式
1.範式:衡量關係模式好壞的標準。
2.數據庫設計中最經常使用的是3NF和BCNF。
3.第一範式(1NF):若是關係模式R的每一個關係r的屬性值都是不可分的原子值,那麼稱R是第一範式的模式。知足1NF的關係稱爲規範化的關係,不然稱爲非規範化的關係。1NF是關係模式應具有的最起碼的條件。
4.局部依賴和徹底依賴:對於FD W→A,若是存在XÌW有X→A成立,那麼稱W→A是局部依賴(A局部依賴於W);不然稱W→A是徹底依賴。
5.主屬性和非主屬性:若是A是關係模式R的候選鍵中的屬性,那麼稱A是R的主屬性;不然稱A是R的非主屬性。
6.第二範式(2NF):若是關係模式是1NF,且每一個非主屬性徹底函數依賴於候選鍵,那麼稱R是第二範式(2NF)的模式。
7.分解成2NF模式集的算法:
設關係模式R(U),主鍵是W,R上還存在FD X→Z,而且Z是非主屬性和X
ÌW,那麼W→Z就是一個局部依賴。此時應把R分解成兩個模式:
R1(XZ),主鍵是X;
R2(Y),其中Y=U-Z,主鍵還是W,外鍵是X(參照R1)。
若是R1和R2還不是2NF,則重複上述過程,一直到數據庫模式中的每個關係模式都是2NF爲止。
8.若是X→Y,Y→A,且Y→X和AÍY,那麼稱X→A是傳遞依賴(A傳遞依賴於X)。
9.第三範式(3NF):若是關係模式R是2NF,且每一個非主屬性都不傳遞依賴於R的候選鍵,那麼稱R是第三範式(3NF)的模式。
10.分解成3NF模式集的算法:
設關係模式R(U),主鍵是W,R上還存在FD X→Z。而且Z是非主屬性,ZÍX,X不是候選鍵,這樣W→Z就是一個傳遞依賴。此時應把R分解成兩個模式:
R1(XZ),主鍵是X;
R2(Y),其中Y=U-Z,主鍵還是W,外鍵是X(參照R1)。
若是R1和R2還不是3NF,則重複上述過程,一直到數據庫模式中的每個關係模式都是3NF爲止。
11.若是R是3NF模式,那麼R也是2NF模式。若是R是2NF模式,那麼R也是1NF模式。
12.BC範式(BCNF):若是關係模式R是1NF,且每一個屬性都不傳遞依賴於R的候選鍵,那麼稱R是BCNF的模式。
13.若是R是BCNF模式,那麼R也是3NF模式。
14.分解成BCNF模式集的算法能保持無損分解,但不必定能保持FD集。而分解成3NF模式集的算法既能保持無損分解,又能保持FD集。
15.關係模式由1NF分解爲2NF,消除了非主屬性對鍵的局部函數依賴;由2NF分解爲3NF,消除了非主屬性對鍵的傳遞函數依賴;而BCNF則消除了每一屬性對鍵的傳遞函數依賴。
16.關係模式設計理論主要用於數據庫的邏輯設計過程當中。
第四章 關係運算
要求、目標:
理解關係模型的運算理論,瞭解關係演算和查詢優化,熟練掌握關係代數運算,掌握關係代數表達式的構造方法。
1、簡介
1.關係模型的三個組成部分:數據結構、數據操縱和數據完整性規則。
2.數據結構:數據庫中所有數據及其相互聯繫都被組織成「關係」(二維表格)的形式。關係模型基本的數據結構是關係。
3.數據操縱:關係模型提供一組完備的高級關係運算,以支持對數據庫的各類操做。關係運算分紅關係代數和關係演算兩類。
4.數據完整性規則:數據庫中數據必須知足實體完整性、參照完整性和用戶定義的完整性等三類完整性規則。
5.關係數據庫的數據操縱語言(DML)的語句分紅查詢語句和更新語句兩大類。查詢語句用於描述用戶的各類檢索要求;更新語句用於描述插入、刪除、修改等操做。前者是基礎。
6.關係查詢語言分兩類:關係代數語言(查詢操做以集合操做爲基礎)和關係演算語言(查詢操做以謂詞演算爲基礎)
2、關係代數
1.關係代數中的操做能夠分爲兩類:
1)傳統的集合操做:並、差、交、笛卡兒積(乘法)、笛卡兒積的逆運算(除法)
2)擴充的關係操做:投影、選擇、鏈接等。
2.關係代數的五個基本操做:並、差、笛卡兒積、投影和選擇。
3.並:設關係R和S具備相同的關係模式,R和S的並是由屬於R或屬於S的元組構成的集合,記爲R∪S。
4.差:設關係R和S具備相同的關係模式,R和S的差是由屬於R但不屬於S的元組構成的集合,記爲R-S。
5.笛卡兒積:設關係R和S的元數分別爲r和s,R和S的笛卡兒積是一個(r+s)元的元組集合,每一個元組的前r個份量(屬性值)來自R的一個元組,後s個份量來自S的一個元組。若R有m個元組,S有n個元組,則R×S有m×n個元組。
6.投影:對一個關係進行垂直分割,消去某些列,並從新安排列的順序。例:π3,1(R) 下標也能夠用屬性名錶示。
7.選擇:對關係作水平分割,即選取符合條件的元組。表示爲:σF(R)從R中挑選知足公式F爲真的元組所構成的集合。
F中有兩種成分:
1)運算對象:常數(用引號括起來)、元組份量(屬性名或列的序號)
2)運算符:算術比較運算符(<、≤、>、≥、=、≠、也稱爲θ符)、邏輯運算符(∧、∨、¬)
例:兩個關係R和S以下:求R∪S、R-S、R×S、πC,A(R)、σB>’4’(R)。
關係R 關係S
A |
B |
C |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
2 |
4 |
6 |
4 |
5 |
6 |
答案:
A |
B |
C |
1 |
2 |
3 |
7 |
8 |
9 |
R∪S R-S
A |
B |
C |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
2 |
4 |
6 |
R×S πC,A(R)
R.A |
R.B |
R.C |
S.A |
S.B |
S.C |
1 |
2 |
3 |
2 |
4 |
6 |
1 |
2 |
3 |
4 |
5 |
6 |
4 |
5 |
6 |
2 |
4 |
6 |
4 |
5 |
6 |
4 |
5 |
6 |
7 |
8 |
9 |
2 |
4 |
6 |
7 |
8 |
9 |
4 |
5 |
6 |
C |
A |
3 |
1 |
6 |
4 |
9 |
7 |
σB>’4’(R)
A |
B |
C |
4 |
5 |
6 |
7 |
8 |
9 |
8.交:設關係R和S具備相同的關係模式,R和S的交是由屬於R又屬於S的元組構成的集合,記爲R∩S。R∩S=R-(R-S)或R∩S=S-(S-R)
9.鏈接:從關係R和S的笛卡兒積中選取屬性值知足某一θ操做的元組,記爲R∞S i和j分別是關係R和S中的第i個和第j個屬性名或序號。
鏈接是由笛卡兒積和選擇操做組合而成。
若是θ爲「=」,該鏈接操做稱爲「等值鏈接」。
例:已知關係R和S,求R∞S
關係R 關係S
A |
B |
C |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
2 |
9 |
D |
E |
2 |
4 |
5 |
6 |
7 |
8 |
答案:R∞S
A |
B |
C |
D |
E |
1 |
2 |
3 |
2 |
4 |
4 |
5 |
6 |
5 |
6 |
7 |
2 |
9 |
2 |
4 |
10.天然鏈接:公共屬性只出現一次的等值(公共屬性值所有相等)鏈接。
記爲:R∞S
通常天然鏈接使用在R和S有公共屬性的狀況中。若是兩個關係沒有公共屬性,那麼其天然鏈接就轉化爲笛卡兒積操做。
例:已知關係R和S,求R∞S
關係R 關係S
A |
B |
C |
2 |
4 |
6 |
3 |
5 |
7 |
7 |
4 |
6 |
5 |
4 |
7 |
B |
C |
D |
5 |
7 |
3 |
4 |
6 |
2 |
5 |
7 |
9 |
5 |
6 |
3 |
答案:
A |
B |
C |
D |
2 |
4 |
6 |
2 |
3 |
5 |
7 |
3 |
3 |
5 |
7 |
9 |
7 |
4 |
6 |
2 |
11.除法:設關係R(X,Y)和關係S(Y,Z),則R÷S定義爲:
R(X,Y)÷S(Y,Z)=∏X(R)-∏X((∏X(R)×∏Y(S))-R)
例:關係R是學生選修課程的狀況,COURSE表示課程狀況,而操做R÷COURSE表示至少選修COURSE中列出課程的學生名單。
R COURSE
S# |
SNAME |
C# |
S1 |
BAO |
C1 |
S1 |
BAO |
C2 |
S1 |
BAO |
C3 |
S1 |
BAO |
C4 |
S2 |
GU |
C1 |
S2 |
GU |
C2 |
S3 |
AN |
C2 |
S4 |
LI |
C4 |
S4 |
LI |
C2 |
C# |
CNAME |
C2 |
OS |
C4 |
MIS |
R÷COURSE
S# |
SNAME |
S1 |
BAO |
S4 |
LI |
12.關係代數表達式:由五個基本操做通過有限次複合的式子稱爲代數表達式。這種表達式的運算結果還是一個關係。能夠用關係代數表達式表示各類數據查詢操做。
例:教學數據庫中的四個關係以下:
教師關係T(T#,TNAME,TITLE)
課程關係C(C#,CNAME,T#)
學生關係S(S#,SNAME,AGE,SEX)
選課關係SC(S#,C#,SCORE)
使用關係代數表達式表達下列每一個查詢語句。
1) 檢索學習課程號爲C2課程的學生學號與成績。
πS#,SCORE(σC#=‘C2‘ (SC))或π1,3(σ2=‘C2‘ (SC))
2)檢索學習課程號爲C2課程的學生學號和姓名。
πS#,SNAME(σC#=‘C2‘ (S∞SC))
3)檢索至少選修LIU老師所授課程中一門課程的學生學號與姓名。
πS#,SNAME(σTNAME=‘LIU‘ (S∞SC∞C∞T))
4)檢索選修課程號爲C2或C4課程的學生學號。
πS#(σC#=‘C2‘ ∨ C#=‘C4‘ (SC))
5)檢索至少選修課程號爲C2和C4課程的學生學號。
π1(σ1=4 ∧ 2=‘C2‘ ∧ 5=‘C4‘ (SC×SC))
6)檢索不學C2課程的學生姓名與年齡。
πSNAME,AGE(S)-πSNAME,AGE(σC#=‘C2‘ (S×SC))
7)檢索學習所有課程的學生姓名。
πSNAME(S∞(πS#,C#(SC)÷πC#(C)))
8)檢索所學課程包含學號爲S3學生所學課程的學生學號。
πS#,C#(SC)÷πC#(σS#=‘S3‘ (SC))
總結:查詢語句的關係代數表達式的通常形式是:
π…(σ…(R×S))或π…(σ…(R∞S))
即首先把查詢涉及到的關係取來,執行笛卡兒積或天然鏈接操做獲得一張大的表格,而後對大表格執行水平分割(選擇操做)和垂直分割(投影操做)。
但這種形式不適用於否認或所有值的查詢。這時要用差或除法操做。
13.外鏈接:若是R和S作天然鏈接時,把原該捨棄的元組也保留在新關係中,同時在這些元組新增長的屬性上填上空值(Null),這種操做稱爲「外鏈接」操做。
14.左外鏈接:若是R和S作天然鏈接時,只把R中原該捨棄的元組放到新關係中,那麼這種操做稱爲「左外鏈接」操做。
15.右外鏈接:若是R和S作天然鏈接時,只把S中原該捨棄的元組放到新關係中,那麼這種操做稱爲「右外鏈接」操做。
16.外部並:兩個關係R和S作並操做時,若是它們的關係模式不一樣,構成的新關係的屬性由R和S的全部屬性組成(公共屬性只取一次),新關係的元組由屬於R或屬於S的元組構成,同時元組在新增長的屬性上填上空值,那麼這種操做稱爲「外部並」操做。
3、關係演算
關係演算又可分爲元組關係演算和域關係演算,前者以元組爲變量,後者以屬性(域)爲變量。
4、關係代數表達式的優化
1.目的:提升系統效率。
2.三條啓發式規則:
1)儘量早地執行選擇操做;
2) 儘量早地執行投影操做;
3) 避免直接作笛卡兒積,把笛卡兒積操做以前和以後的一連串選擇和投影合併起來一塊兒作。
第五章 SQL語言
要求、目標:
SQL語言是關係數據庫的標準語言,是本課程的一個重點。本章總的要求是:全面掌握、深入理解、熟練應用。
要求瞭解嵌入式SQL和存儲過程,掌握SQL定義語句的應用,熟練掌握SQL查詢語句、視圖、SQL更新語句的應用。
1、SQL簡介
1.SQL:結構化查詢語言,關係數據庫的標準語言。
2.SQL數據庫的體系結構
SQL數據庫的體系結構基本上也是三級結構,但術語與傳統的關係模型術語不一樣。在SQL中,關係模式稱爲「基本表」,存儲模式稱爲「存儲文件」,子模式稱爲「視圖」,元組稱爲「行」,屬性稱爲「列」。
SQL數據庫的體系結構要點:
1)一個SQL模式是表和約束的集合。
2)一個表由行集構成,一行是列的序列,每列對應一個數據項。
3)表有三種類型:基本表、視圖和導出表。
基本表:實際存儲在數據庫中的表。
視圖:由若干基本表或其餘視圖構成的表的定義。
導出表:執行了查詢時產生的表。
4)一個基本表能夠跨一個或多個存儲文件,一個存儲文件也能夠存放一個或多個基本表。每一個存儲文件與外部存儲器上一個物理文件對應。
5)用戶能夠用SQL語句對基本表和視圖進行查詢等操做。在用戶看來,二者同樣,都是表。
6) SQL語句可嵌在C、FORTRAN等主語言的程序中使用,也可在交互環境下供終端用戶使用。
3.SQL的組成
核心SQL主要有四個部分:
1)數據定義語言,即DDL,用於定義SQL模式、基本表、視圖、索引等結構。
2)數據操縱語言,即SQL DML。數據操縱分紅數據查詢和數據更新兩類。而數據更新又分紅插入、刪除和修改三種操做。
3)嵌入式SQL語言的使用規定
4)數據控制語言,即SQL DCL,這一部分包括對基本表和視圖的受權、完整性規則的描述、事務控制等內容。
4.SQL的特色
1)SQL具備十分靈活和強大的查詢功能。
2)SQL不是一個應用開發語言,它只提供對數據庫的操做功能。但SQL既可做爲交互式語言獨立使用,也可做爲子語言嵌入在主語言中使用,成爲應用開發語言的一部分。
3)SQL是國際標準語言,有利於各類數據庫之間交換數據,有利於程序的移植,有利於實現高度的數據獨立性,有利於實現標準化。
4)SQL完成核心功能只用9個英語動詞,語法結構接近英語,容易學習和使用。
第六章 數據庫管理
要求、目標:
瞭解數據庫的恢復、數據庫的安全性,熟悉事務、數據庫的併發控制、數據庫的完整性。
1、事務
1.DBMS對DB的監控,稱爲數據庫的管理,也稱爲數據庫的保護。它分爲四個方面:數據庫的恢復、併發控制、完整性控制和安全性控制。
2.事務:是構成單一邏輯工做單元的操做集合,要麼完整地執行,要麼徹底不執行。DBS運行的最小邏輯工做單位是「事務」,全部對數據庫的操做,都要以事務做爲一個總體單位來執行或撤銷。
3.一個事務由應用程序中的一組操做序列組成,在程序中,事務以BEGIN TRANSACTION開始,以COMMIT語句或ROLLBACK語句結束。COMMIT語句表示事務執行成功地結束(提交);ROLLBACK語句表示事務執行不成功地結束(應該「回退)。
4.事務的ACID性質:
1)原子性(Atomicity):一個事務對數據庫的全部操做,是一個不可分割的工做單元。這些操做要麼所有執行,要麼什麼也不作。
2)一致性(Consistency):一個事務獨立執行的結果,應保持數據庫的一致性,即數據不會因事務的執行而遭受破壞。
3)隔離性(Isolation):在多個事務併發執行時,系統應保證與這些事務前後單獨執行時的結果同樣。
4)持久性(Durability):一個事務一旦完成所有操做後,它對數據庫的全部更新應永久地反映在數據庫中,不會丟失。
2、數據庫的恢復
1.數據庫的可恢復性:系統能把數據庫從被破壞、不正確的狀態,恢復到最近一個正確的狀態,DBMS的這種能力稱爲可恢復性。
2.爲保證可恢復性,平時應作好轉儲和創建日誌。日誌庫記錄事務的開始、結束標誌,記錄事務對數據庫的每一次插入、刪除和修改先後的值。
3.常見故障分三類:事務故障、系統故障(硬件故障、軟件(DBMS、OS或應用程序)錯誤、掉電等,不破壞數據庫)、介質故障。
事務故障和系統故障的恢復由系統自動進行,而介質故障的恢復須要DBA配合執行。系統故障一般稱爲軟故障,介質故障一般稱爲硬故障。
3、數據庫的併發控制
1.併發操做帶來的三個問題:丟失更新、讀髒數據(把未提交的隨後被撤銷的數據稱爲「髒數據」)、不可重複讀。採用「封鎖」技術解決這些問題。
2.鎖:是一個與數據項相關的變量,對可能應用於該數據項上的操做而言,鎖描述了該數據項的狀態。一般在數據庫中每一個數據項都有一個鎖。
3.鎖的主要類型:
1)排他鎖(X鎖、寫鎖):若是事務T對某個數據R(能夠是數據項、記錄、數據集乃至整個數據庫)實現了X鎖,那麼在T對數據R解除封鎖以前,不容許其餘事務再對該數據加任何類型的鎖,這種鎖稱爲「X鎖」。
2)共享鎖(S鎖、讀鎖):若是事務T對某數據加上S鎖後,仍容許其餘事務再對該數據加S鎖,但在對該數據的全部S鎖都解除以前決不容許任何事務對該數據加X鎖。
4.封鎖的粒度:封鎖對象的大小。封鎖粒度與系統的併發度成反比。
5.調度:事務的執行次序。若是多個事務依次執行,稱爲事務的串行調度;若是利用分時的方法,同時處理多個事務,則稱爲事務的併發調度。
6.可串行化調度:每一個事務中,語句的前後順序在各類調度中始終保持一致。在這個前提下,若是一個併發調度的執行結果與某一串行調度的執行結果等價,那麼,這個併發調度稱爲「可串行化的調度」,不然是「不可串行化的調度。」
4、數據庫的完整性
1.數據庫的完整性:是指數據的正確性、有效性和相容性,防止錯誤的數據進入數據庫。
1)正確性:是指數據的合法性。
2)有效性:是指數據是否屬於所定義的有效範圍。
3)相容性:是指表示同一事實的兩個數據應相同,不一致就是不相容。
2、SQL中的完整性約束
1)域約束
例:CREATE DOMAIN COLOR CHAR(6) DEFAULT ‘???’
CONSTRAINT VALID_COLORS
CHECK (VALUE IN(‘Red’,‘Yellow’,‘Blue’,‘Green’,‘???’))
定義完後,該域即可做爲一種數據類型使用,如用在CREATE TABLE中。
2)基本表約束
主要有三種形式:候選鍵定義、外鍵定義和檢查約束定義。這些定義均可在前面加CONSTRAINT <約束名>,也能夠省略。
候選鍵的定義:UNIQUE(<列名序列>)或PRIMARY KEY(<列名序列>)
UNIQUE方式:表示值唯一;
PRIMARY KEY:值唯一,而且自動設爲非空。一個基本表只能指定一個主鍵。
檢查約束的定義:
例:CHECK(AGE>=18 AND AGE<=20)
3)斷言:若是完整性約束牽涉面較廣,與多個關係有關,或者與聚合操做有關,應使用斷言。
3.觸發器:是一個能由系統自動執行對數據庫修改的語句。有時也稱爲主動規則(相對於前面的各類被動約束機制)。
5、數據庫的安全性
1.數據庫的安全性:是指保護數據庫,防止不合法的使用,以避免數據的泄密、更改或破壞。
2.SQL中的安全性機制:
提供四個:視圖、權限、角色和審計
1)視圖:使系統具備三個優勢:數據安全性(用來對無權用戶屏蔽數據)、邏輯數據獨立性和操做簡便性。視圖不佔存儲空間。
2)權限:受權語句GRANT、回收語句REVOKE
3)角色:
在SQL中,用戶是實際的人或是訪問數據庫的應用程序。而角色是一組具備相同權限的用戶,實際上角色是屬於目錄一級的概念。
用戶和角色之間存在多對多聯繫,即一個用戶能夠參與多個角色,一個角色也可授予多個用戶。
4)審計:
用於安全性目的的數據庫日誌,稱爲審計追蹤。
第七章 SQL Server 2000簡介及應用
要求、目標:
瞭解SQL Server 2000,瞭解企業管理器的功能與操做,瞭解T-SQL的使用。
1、概述
1.SQL Server 2000是Microsoft公司推出的適用於大型網絡環境的關係型數據庫管理系統。它支持客戶機/服務器體系結構。
2.客戶機/服務器體系結構:將數據庫防在服務器上,該服務器數據庫中的數據可被多個用戶同時存取,而用戶存取服務器中的數據是經過客戶機或服務器端的應用程序得到的。
3.SQL Server 2000的系統數據庫:
1)Master數據庫:記錄了全部系統信息、登陸帳號、系統配置設置、系統中全部數據庫及其系統信息以及存儲介質信息。
2)Model數據庫:爲用戶建立數據庫提供的模板數據庫。
3)Msdb數據庫:主要用於存儲任務計劃信息、事件處理信息、備份恢復信息以及異常SQL Server 2000的報告等。
4)Tempdb數據庫:存放全部臨時表和臨時的存儲程序,而且存放目前使用中的表,它是一個全局的資源,臨時表和存儲程序可供全部用戶使用。
4.SQL Server 2000的主要工具
1)查詢分析器:使用這個工具,用戶能夠交互地設計和測試T-SQL語句、批處理和腳本。
2)服務管理器:能夠用來啓動、暫停和中止SQL Server的主要服務和指示其當前狀態。
3)企業管理器:用戶管理SQL Server 2000的主要管理工具和圖形界面。在企業管理器中能夠完成幾乎全部的管理工做,如管理登陸帳號、數據庫用戶和權限、建立和管理數據庫、建立和管理表、視圖、存儲過程以及用戶自定義數據類型等。
2、企業管理器
1.觸發器與存儲過程的聯繫和區別
聯繫:觸發器是一種特殊的存儲過程。
區別:1)存儲過程利用EXEC語句調用執行,觸發器爲表上的INSERT、UPDATE、DELETE事件所觸發而自動執行。
2)觸發器不能傳遞或接受參數。
2.兩個臨時表
觸發器被執行時,系統會建立一個或兩個臨時表INSERTED和DELETED,這些表在結構上相似於定義觸發器的表,用於保存用戶操做更改的行的新值和舊值。
3.一個用戶要訪問SQL Server數據庫中的數據,必須通過三個認證過程:
1)身份驗證:使用登陸帳號來標識用戶,身份驗證只驗證用戶鏈接到SQL Server數據庫服務器的資格,即驗證該用戶是否具備鏈接到數據庫服務器的「鏈接權」。
2)當用戶訪問數據庫時,他必須具備對具體數據庫的訪問權,即驗證用戶是不是該數據庫的合法用戶。
3)當用戶操做數據庫中的數據或對象時,他必須具備所要進行操做的操做權。
4.SQL Server的兩種身份驗證模式:Windows身份驗證模式和混合驗證模式。
3、T-SQL語言
1.T-SQL:Transact-SQL的簡稱,爲擴展SQL。
2.批處理:由一條或多條T-SQL語句構成,前端應用程序會將全部這些語句做爲單個代碼單元發送給SQL Server。SQL Server將整個批處理做爲一個總體加以解析。批處理分隔符爲go。
3.SQL腳本文件可包含多個批處理。
第八章 PowerBuilder9.0簡介及應用
要求、目標:
瞭解PB9.0的集成開發環境,瞭解應用程序的開發步驟,瞭解PB9.0鏈接數據庫的方法。
1、PowerBuilder9.0集成開發環境
1.PowerBuilder9.0是當前最爲流行的數據庫前端應用開發和多層應用開發工具之一。
2.PB的主要特色
1)採用面向對象的編程方法和事件驅動的工做原理。
2)支持跨平臺開發,具備開放的數據庫鏈接系統。
3.PB9.0的開發空間
有三個層次:1)工做空間2)目標3)庫文件
2、PB9.0與數據庫的鏈接
1.鏈接步驟:
1)創建ODBC數據源;
2)創建數據庫描述文件;
3)用Connect命令鏈接數據庫。
第九章 數據庫技術的發展
要求、目標:
瞭解數據庫技術發展的前景,瞭解面向對象的概念建模和開放數據庫互連技術。
1、面向對象的概念建模
1.概念建模經歷了「ER圖—對象聯繫圖—類圖」的發展歷程。
2.面向對象的數據類型系統:由基本類型、複合類型和引用類型三部分組成。
3.對象聯繫圖:是面向對象數據模型中數據結構的一種重要圖例表示方法,因爲使用了對象標識的概念,使結構的嵌套和遞歸成爲可能。是描述面向對象數據模型的基本工具。它不只完整地揭示了數據之間的聯繫,也把查詢的層次觀點表現的一清二楚。
4.統一建模語言(UML):面向對象開發的行業標準語言。
2、開放數據庫互連(ODBC)
1.API:即應用程序設計接口,是爲開發者提供單一的編程接口,這樣同一個應用程序就能夠訪問不一樣的數據庫服務器。
2.ODBC:Microsoft公司的產品,以C/S結構爲設計基礎。該技術使得應用程序與DBMS之間在邏輯上能夠分離,使應用程序具備數據庫武官性。ODBC定義了一個API,每一個應用程序利用相同的源代碼就可訪問不一樣的數據庫系統,存取多個數據庫中的數據。
ODBC一個最顯著的優勢是:用它生成的應用程序與數據庫或數據庫引擎無關。