關系模型課件_第1頁
關系模型課件_第2頁
關系模型課件_第3頁
關系模型課件_第4頁
關系模型課件_第5頁
已閱讀5頁,還剩100頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1

關係模型

22.1關係模型

關係模型就是用二維表格結構來表示實體及實體之間聯繫的模型。關係模型是各個關係的框架的集合,即關係模型是一些表格的格式,其中包括關係名、屬性名、關鍵字等。例如,教學資料庫中教師與課程的關係模型如圖2.1所示。教師關係T課程關係C

授課關係SC圖2.1教師—課程資料庫的關係模型TNO教師號TN姓名SEX性別AGE年齡PROF職稱SAL工資COMM崗位津貼DEPT系別CNO課程號CN課程名CT課時

TNO教師號CNO課程號3從各個關係的框架中,我們可以很容易看出哪兩個關係之間有聯繫。例如:教師關係和授課關係有公共的屬性“教師號”,則表明這兩個關係有聯繫。而課程關係和授課關係有公共的屬性“課程號”,則表明這兩個關係也有聯繫。至於元組之間的聯繫,則與具體的數據有關。只有在公共屬性上具有相同屬性值的元組之間才有聯繫。4由上例可以看出,在一個關係中可以存放兩類資訊:一類是描述實體本身的資訊一類是描述實體(關係)之間的聯繫的資訊在層次模型和網狀模型中,把有聯繫的實體(元組)用指針鏈接起來,實體之間的聯繫是通過指針來實現的。而關係模型則採用不同的思想,即用二維表來表示實體與實體之間的聯繫,這就是關係模型的本質所在。所以,在建立關係模型時,只要把的所有的實體及其屬性用關係框架來表示,同時把實體之間的關係也用關係框架來表示,就可以得到一個關係模型。如上例中的教師—課程資料庫的關係模型就是這樣建立的。52.2關係的定義在關係模型中,數據是以二維表的形式存在的,這個二維表就叫做關係。關係理論是以集合代數理論為基礎的,因此,我們可以用集合代數給出二維表的“關係”定義。為了從集合論的角度給出關係的定義,我們先引入域和笛卡爾積的概念。62.2.1域(Domain)域是一組具有相同數據類型的值的集合,又稱為值域。(用D表示)例如整數、實數、字串的集合。域中所包含的值的個數稱為域的基數(用m表示)。關係中用域表示屬性的取值範圍。例如:D1={李力,王平,劉偉} m1=3 D2={男,女} m2=2 D3={47,28,30} m3=3 其中,D1,D2,D3為功能變數名稱,分別表示教師關係中姓名、性別、年齡的集合。功能變數名稱無排列次序,如D2={男,女}={女,男}72.2.2笛卡爾積(CartesianProduct)給定一組域D1,D2,…,Dn(它們可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡爾積為D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}。由定義可以看出,笛卡爾積也是一個集合。其中:1.元素中的每一個di叫做一個分量(Component),來自相應的域(di∈Di)2.每一個元素(d1,d2,d3,…,dn)叫做一個n元組(n-tuple),簡稱元組(Tuple)。但元組不是di的集合,元組的每個分量(di)是按序排列的。如:(1,2,3)≠(2,3,1)≠(1,3,2);而集合中的元素是沒有排序次序的,如(1,2,3)=(2,3,1)=(1,3,2)。83.若Di(i=1,2,……n)為有限集,Di中的集合元素個數稱為Di的基數,用mi(i=1,2,……n)表示,則笛卡爾積D1×D2×……×Dn的基數M(即元素(d1,d2,……dn)的個數)為所有域的基數的累乘之積,即

M=例如:上述表示教師關係中姓名、性別兩個域的笛卡爾積為:D1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(劉偉,男),(劉偉,女)}其中:李力、王平、劉偉、男、女都是分量(李力,男),(李力,女)等是元組其基數M=m1×m2=3*2=6元組的個數為694.笛卡爾積可用二維表的形式表示。例如,上述的6個元組可表示成表2.1。表2.1D1和D2的笛卡爾積由上例可以看出,笛卡爾積實際是一個二維表,表的框架由域構成,表的任意一行就是一個元組,表中的每一列來自同一域,如第一個分量來自D1,第二個分量來自D2。姓名性別李力男李力女王平男王平女劉偉男劉偉女102.2.3關係(Relation)笛卡爾積D1×D2×…×Dn的任一子集稱為定義在域D1,D2,…Dn上的n元關係(Relation),可用R(D1,D2……Dn)表示如上例D1×D2笛卡爾積的子集可以構成教師關係T1,如下表:姓名性別李力男王平女劉偉男11幾點說明:1.

R為關係名,n稱為關係的目或度(Degree)。當n=1時,稱為單元關係。當n=2時,稱為二元關係?!攏=n時,稱為n元關係。如上例為二元關係,關係名為T。122.該子集中的元素是關係中的元組,用r表示,關係中元組個數是關係的基數。如(李力,男),(王平,女),(劉偉,男)為三個元組,關係T的基數為3。如果一個關係的元組個數是無限的,則稱為無限關係;如果一個關係的元組個數是有限的,則稱為有限關係。由於電腦存儲系統的限制,我們一般不去處理無限關係,而只考慮有限關係。3.

同樣可以把關系看成一個二維表。其中,(1)表的框架由域Di(i=1,2,……n)構成;(2)表的任意一行對應一個元組;(3)表的每一列來自同一域;(4)域可以相同,為了加以區別,每列起一個名字,稱為屬性,n目關係有n個屬性,屬性的名字唯一,屬性的取值範圍Di(i=1,2,…,n)稱為值域(5)具有相同關係框架的關係成為同類關係, 例如,有另一個關係T2,如表2.3所示:

T1和T2是同類關係。姓名性別張雪女張蘭女134.數學上關係是笛卡爾積的任意子集,但在實際應用中關係是笛卡爾積中所取的有意義的子集。例如在表2.1中選取一個子集構成如下關係,顯然不符合實際情況在關係模型中,關係可進一步定義為:定義在域D1,D2,……Dn(不要求完全相異)上的關係由關係頭(Heading)和關係體(Body)組成。關係頭:由屬性名A1,A2,…,An的集合組成,每個屬性Ai正好對應一個域Di(i=1,2,…,n),關係頭,也稱關係框架,相對固定,是關係的數據結構的描述。關係體:是指關係結構中的內容或者數據,並非固定不變,它隨元組的建立、刪除或修改而變化。姓名性別李力男李力女14儘管關係與二維表格、傳統的數據檔是非常類似的,但它們之間又有重要的區別。

嚴格地說,關係是種規範化了的二維表中行的集合,為了使相應的數據操作簡化,在關係模型中,對關係作了種種限制,關係具有如下特性:1.關係中不允許出現相同的元組。因為數學上集合中沒有相同的元素,而關係是元組的集合,所以作為集合元素的元組應該是唯一的。2.關係中元組的順序(即行序)是無關緊要的,在一個關係中可以任意交換兩行的次序。因為集合中的元素是無序的,所以作為集合元素的元組也是無序的。根據關係的這個性質,可以改變元組的順序使其具有某種排序,然後按照順序查詢數據,可以提高查詢速度。2.3關係的性質153.關係中屬性的順序是無關緊要的,即列的順序可以任意交換。交換時,應連同屬性名一起交換,否則將得到不同的關係。例如:關係T1作如下交換時,無任何影響,如下表所示:性別姓名男李力女王平男劉偉16而作如下交換時,不交換屬性名,只交換屬性列中的值,則得到不同的關係,如下表:

姓名性別男李力女王平男劉偉174.同一屬性名下的各個屬性值必須來自同一個域,是同一類型的數據。5.關係中各個屬性必須有不同的名字,不同的屬性可來自同一個域,即它們的分量可以取自同一個域。例如,有如下表中關係,職業與兼職是兩個不同的屬性,但它們取自同一個域職業={教師,工人,輔導員}。

姓名職業兼職張強教師輔導員王麗工人教師劉寧教師輔導員186.關係中每一分量必須是不可分的資料項目,或者說所有屬性值都是原子的,即是一個確定的值,而不是值的集合。屬性值可以為空值,表示“未知”或“不可使用”,即不可“表中有表”。滿足此條件的關係稱為規範化關係,否則稱為非規範化關係。例如,在表2.8中,籍貫含有省、市/縣兩項,出現了“表中有表”的現象,則為非規範化關係,而把籍貫分成省、市/縣兩列,將其規範化,如表2.9所示。 表2.8表2.9姓名籍貫

姓名省市/縣省市/縣

張強吉林長春

張強吉林長春王麗山西大同

王麗山西大同192.4.1候選鍵與關係鍵能唯一標識關係中元組的屬性或屬性集,則稱該屬性或屬性集為候選鍵(CandidateKey),也稱候選關鍵字或候選碼。如:“學生關係”中的學號能唯一標識每一個學生,則屬性學號是學生關係的候選鍵。在“選課關係”中,只有屬性的組合“學號+課程號”才能唯一地區分每一條選課記錄,則屬性集“學號+課程號”是選課關係的候選鍵。2.4關係的鍵

20下麵給出候選鍵的形式化定義:設關係R有屬性A1,A2,……An,其屬性集K=(Ai,Aj,……Ak),當且僅當滿足下列條件時,K被稱為候選鍵:

1.唯一性(Uniqueness):關係R的任意兩個不同元組,其屬性集K的值是不同的。

2.最小性(Minimally):組成關係鍵的屬性集(Ai,Aj,……Ak)中,任一屬性都不能從屬性集K中刪掉,否則將破壞唯一性的性質例如:“學生關係”中的每個學生的學號是唯一的,“選課關係”中“學號+課程號”的組合也是唯一的。對於屬性集“學號+課程號”去掉任一屬性,都無法唯一標識選課記錄。

21如果一個關係中有多個候選鍵,可以從中選擇一個作為查詢、插入或刪除元組的操作變數,被選用的候選鍵稱為主關係鍵(PrimaryKey),或簡稱為主鍵、主碼、關係鍵、關鍵字。例如,假設在學生關係中沒有重名的學生,則“學號”和“姓名”都可作為學生關係的候選鍵。如果選定“學號”作為數據操作的依據,則“學號”為主關係鍵。主關係鍵是關係模型中的一個重要概念。每個關係必需選擇一個主關係鍵,選定以後,不能隨意改變。每個關係必定有且僅有一個主關係鍵,因為關係的元組無重複,至少關係的所有屬性的組合可作為主關係鍵,通常用較小的屬性組合作為主關係鍵。222.4.2主屬性與非碼屬性主屬性(PrimeAttribute):包含在主碼中的的各屬性稱為主屬性。非碼屬性(Non-PrimeAttribute):不包含在任何候選碼中的屬性稱為非碼屬性。在最簡單的情況下,一個候選碼只包含一個屬性,如學生關係中的“學號”,教師關係中的“教師號”。在最極終端的情況下,所有屬性的組合是關係的候選碼,這時稱為全碼(all-key)。23下麵是一個全碼的例子:假設有教師授課關係TCS,分別有三個屬性教師(T)、課程(C)和學生(S)。一個教師可以講授多門課程,一門課程可以為多個教師講授,同樣一個學生可以選聽多門課程,一門課程可以為多個學生選聽。在這種情況下,T,C,S三者之間是多對多關係,(T,C,S)三個屬性的組合是關係TCS的候選碼,稱為全碼,T,C,S都是主屬性。242.4.3外部關係鍵如果關係R2的一個或一組屬性X不是R2的主碼,而是另一關係R1的主碼,則該屬性或屬性組X稱為關係R2的外部關係鍵或外碼(Foreignkey)。並稱關係R2為參照關係(referencingrelation),關係R1為被參照關係(referencedrelation)。例2.1

假設在圖1.12所示的教學資料庫中增加一個系別關係D,包含兩個屬性系別(DEPT)和地址(ADDR),“系別”是此關係的主碼,而“系別”並不是學生關係和教師關係的主碼,所以“系別”是學生關係和教師關係的外部關係鍵。25例2.2

如圖1.12所示的選課關係中的“學號”屬性與學生關係的主碼“學號”相對應,“課程號”屬性與課程關係的主碼“課程號”相對應,因此,“學號”和“課程號”屬性是選課關係的外部關係鍵。學生關係和課程關係為被參照關係,選課關係為參照關係。由外部關係鍵的定義可知,被參照關係的主碼和參照關係的外碼必須定義在同一個域上。如選課關係中的“學號”與學生關係的主碼“學號”定義在同一個域上,“課程號”屬性與課程關係的主碼“課程號”定義在同一個域上。262.4.4關係模型的完整性為了維護資料庫中數據與現實世界的一致性,對關係資料庫的插入、刪除和修改操作必須有一定的約束條件,這就是關係模型的三類完整性:實體完整性參照完整性用戶定義的完整性1.實體完整性(EntityIntegrity)實體完整性是指主關係鍵的值不能為空或部分為空。關係模型中的一個元組對應一個實體,一個關係則對應一個實體集。例如,一條學生記錄對應著一個學生,學生關係對應著學生的集合。27現實世界中的實體是可區分的,即它們具有某種唯一性標識。與此相對應,關係模型中以主關係鍵來唯一標識元組。例如,學生關係中的屬性“學號”可以唯一標識一個元組,也可以唯一標識學生實體。如果主關係鍵中的值為空或部分為空,即主屬性為空,則不符合關係鍵的定義條件,不能唯一標識元組及與其相對應的實體。這就說明存在不可區分的實體,從而與現實世界中的實體是可以區分的事實相矛盾。因此主關係鍵的值不能為空或部分為空。例如,學生關係中的主關係鍵“學號”不能為空;選課關係中的主關係鍵“學號+課程號”不能部分為空,即“學號”和“課程號”兩個屬性都不能為空。282.

參照完整性(Referentialintegrity)如果關係R2的外部關係鍵X與關係R1的主關係鍵相符,則X的每個值或者等於R1中主關係鍵的某一個值,或者取空值。在例2.1系別關係中的屬性“系別”是學生關係外部關係鍵。如圖2.2所示,學生關係中某個學生(如s1或s2)“系別”的取值,必須在參照的系別關係中主關係鍵“系別”的值中能夠找到,否則表示把該學生分配到一個不存在的部門中,顯然不符合語義。如果某個學生(如s11)“系別”取空值,則表示該學生尚未分配到任何一個系。否則,它只能取專業關係中某個元組的專業號值。29S(學生關係)D(系別關係)圖2.2學生表和系別表

SNO學號SN姓名SEX性別AGE年齡DEPT所在系

DEPT所在系ADDR地址S1趙亦女17電腦

電腦1號樓S2錢爾男18資訊

資訊1號樓…

自動化2號樓S11王威男19

30在例2.2中,如果按照參照完整性規則,選課關係中的外部關係鍵“學號”和“課程號”可以取空值或者取被參照關係中已經存在的值。但由於“學號”和“課程號”是選課關係中主屬性,根據實體完整性規則,兩個屬性都不能為空。所以選課關係中的外部關係鍵“學號”和“課程號”中能取被參照關係中已經存在的值。實體完整性和參照完整性是關係模型必須滿足的完整性約束條件,被稱作關係的兩個不變性。任何關係資料庫系統都應該支持這兩類完整性。除此之外,不同的關係資料庫系統由於應用環境的不同,往往還需要一些特殊的約束條件,這就是用戶定義完整性。313.用戶定義完整性(User-definedIntegrity)用戶定義完整性是針對某一具體關係資料庫的約束條件。它反映某一具體應用所涉及的數據必須滿足的語義要求。例如,屬性值根據實際需要,要具備一些約束條件,如選課關係中成績不能為負數;某些數據的輸入格式要有一些限制等關係模型應該提供定義和檢驗這類完整性的機制,以便用統一的、系統的方法處理它們,而不要由應用程式承擔這一功能。322.5.1關係模式和關係資料庫模式一個關係的屬性名的集合R(A1,A2,……An)叫做關係模式。其中:R為關係名,A1,A2,…,An為屬性名(i=1,2,……n)。由定義可以看出,關係模式是關係的框架,或者稱為表框架,指出了關係由哪些屬性構成,是對關係結構的描述。一組關係模式的集合叫做關係資料庫模式。2.5關係資料庫模式與關係資料庫

33關係資料庫模式是對關係資料庫結構的描述,或者說是對關係資料庫框架的描述,也就是前面所講過的關係頭,可以看作是關係的型。與關係資料庫模式對應的資料庫中的當前值就是關係資料庫的內容,稱為關係資料庫的實例,即前面所講過的關係體,可以看作是關係的值。例如,在圖1.12所示的教學資料庫中,共有五個關係,其關係模式分別為:學生(學號,姓名,性別,年齡,系別)教師(教師號,姓名,性別,年齡,系別)課程(課程號,課程名,課時)選課(學號,課程號,成績)授課(教師號,課程號)34在每個關係中,又有其相應的資料庫的實例例如:與學生關係模式對應的資料庫中的實例有如下6個元組:

S1趙亦女17電腦S2錢爾男18資訊S3孫珊女20資訊S4李思男21自動化S5周武男19電腦S6吳麗女20自動化352.5.2關係資料庫關係資料庫是“一組隨時間變化,具有各種度的規範化關係的集合”。因為關係是由關係頭和關係體組成的,所以關係資料庫也可以看作是一組關係頭和關係體的集合。由此可見,關係資料庫也有型和值的概念,其型就是關係資料庫模式,相對固定;其值就是關係資料庫內容,代表現實世界中的實體,而實體是隨著時間不斷變化的,所以其值在不同的時刻會有所變化。36例如:圖1.12所示的教學資料庫是五個關係的集合,或者說是五個關係頭和五個關係體的集合。其中,各個關係頭相對固定,而關係體的內容,會隨時間而變化。比如,學生和教師的年齡隨時間而增長,教師的工資和崗位津貼也會發生變化。37關係模型與其他模型相比,最有特色的是它的資料庫語言。這種語言靈活方便、表達能力和功能都很強。目前關係資料庫所使用的語言一般都具有定義、查詢、更新和控制一體化的特點,而查詢是最主要的部分。所以說,關係資料庫的核心部分是查詢,故又稱為查詢語言,而查詢的條件要使用關係運算運算式來表示。因此,關係運算是設計關係數據語言的基礎。按表達查詢的方法不同,關係運算可分為關係代數和關係演算兩大類。

2.6關係代數382.6.1關係代數的分類及其運算符關係代數是對關係進行集合代數運算,是基於關係代數的操作語言,稱為關係代數語言,簡稱關係代數。它是由IBM在一個實驗性的系統上實現的,稱為ISBL(InformationSystemBaseLanguage)語言。ISBL的每個語句都類似於一個關係代數運算式。關係代數的運算對象是關係,運算結果也是關係,關係代數用到的運算符主要包括四類:集合運算符:∪(並),-(差),∩(交),X(廣義笛卡爾積);專門的關係運算符:σ(選擇),∏(投影),∞(連接),*(自然連接),÷(除);算術比較運算符:>(大於),≥(大於等於),<(小於),≤(小於等於),=(等於),≠(不等於);邏輯運算符:∧(與),∨(或),┐(非)39關係代數的運算按運算符的不同主要分為兩類:傳統的集合運算:把關系看成元組的集合,以元組作為集合中元素來進行運算,其運算是從關係的“水準”方向即行的角度進行的。包括並、差、交和笛卡爾積等運算。專門的關係運算:不僅涉及行運算,也涉及列運算,這種運算是為數據庫的應用而引進的特殊運算。包括選取、投影、連接和除法等運算。402.6.2傳統的集合運算對兩個關係的集合運算傳統的集合運算是二目運算,是在兩個關係中進行的。但是並不是任意的兩個關係都能進行這種集合運算,而是要在兩個滿足一定條件的關係中進行運算。那麼,對關係有什麼要求呢?下麵先看一個定義。定義2.9設給定兩個關係R、S,若滿足:(1)

具有相同的度n;(2)

R中第i個屬性和S中第i個屬性必須來自同一個域。則說關係R、S是相容的。除笛卡爾積外,要求參加運算的關係必須滿足上述的相容性定義。411.並(Union)關係R和關係S的並由屬於R或屬於S的元組組成,即R和S的所有元組合並,刪去重複元組,組成一個新關係,其結果仍為n目關係。記作:

R∪S={t|t∈R∨t∈S}對於關係資料庫,記錄的插入和添加可通過並運算實現。2.差(Difference)關係R與關係S的差由屬於R而不屬於S的所有元組組成,即R中刪去與S中相同的元組,組成一個新關係,其結果仍為n目關係。記作:

R-S={t|t∈R∧┐t∈S}通過差運算,可實現關係資料庫記錄的刪除。423.交(Intersection)關係R與關係S的交由既屬於R又屬於S的元組組成,即R與S中相同的元組,組成一個新關係,其結果仍為n目關係。記作:

R∩S={t|t∈Rt∈S}如果兩個關係沒有相同的元組,那麼它們的交為空。兩個關係的並和差運算為基本運算(即不能用其他運算表達的運算),而交運算為非基本運算,交運算可以用差運算來表示:

R∩S=R-(R-S)434.廣義笛卡爾積(ExtendedCartesianProduct)兩個分別為n目和m目關係R和S的廣義笛卡爾積是一個(n+m)列的元組的集合,元組的前n列是關係R的一個元組,後m列是關係S的一個元組。若R有k1個元組,S有k2個元組,則關係R和關係S的廣義笛卡爾積有k1*k2個元組,記作

R×S={tr⌒ts|tr∈R,∧ts∈S}關係的廣義笛卡爾積可用於兩關係的連接操作(連接操作將在一節仲介紹)。44【例4】如圖2.4(a)、(b)所示的兩個關係R與S為相容關係,(c)為R與S

的並,(d)為R與S的交,(e)為R與S的差,(f)為R與S的廣義笛卡爾積。

R

S

(a)

(b)

ABC

ABCa1b1c1

a1b1c1a1b1c2

a2b2c1a2b2c1

a2b3c245

R∪S

R-S

(c)

(d)R∩S

(e)ABC

ABCa1B1c1

a1b1c2a1B1c2

a2B2c1

a2B3c2

ABCa1B1c1a2B2c146R×S

ABCABCa1b1c1a1b1c1a1b1c1a2b2c1a1b1c1a2b3c2a1b1c2a1b1c1a1b1c2a2b2c1a1b1c2a2b3c2a2b2c1a1b1c1a2b2c1a2b2c1a2b2c1a2b3c2

(f)圖2.4傳統的集合運算

472.6.3專門的關係運算由於傳統的集合運算,只是從行的角度進行,而要靈活地實現關係資料庫多樣的查詢操作,必須引入專門的關係運算。在講專門的關係運算之前,為敘述上的方便先引入幾個概念。

(1)設關係模式為R(A1,A2,……An),它的一個關係為R,t∈R表示t是R的一個元組,t[Ai]則表示元組t中相應於屬性Ai的一個分量。48(2)若A={Ai1,Ai2,……,Aik},其中Ai1,Ai2,……,Aik是A1,A2,……,An中的一部分,則A稱為屬性列或域列,?則表示{A1,A2,……,An}中去掉{Ai1,Ai2,……,Aik}後剩餘的屬性組。t[A]={t[Ai1],t[Ai2],……,t[Aik]}表示元組t在屬性列A上諸分量的集合。(3)R為n目關係,S為m目關係,tr∈R,ts∈S,trts稱為元組的連接(concatenation),它是一個n+m列的元組,前n個分量為R的一個n元組,後m個分量為S中的一個m元組。(4)給定一個關係R(X,Z),X和Z為屬性組,定義當t[X]=x時,x在R中的象集(imageset),為Zx={t[Z]|t∈R,t[X]=x},它表示R中的屬性組X上值為x的諸元組在Z上分量的集合。

491.選?。⊿election)選取運算是單目運算,是根據一定的條件在給定的關係R中選取若干個元組,組成一個新關係,記作:σF(R)={t|t∈R∧F(t)為真}其中,σ為選取運算符,F為選取的條件,它由運算對象(屬性名、常數、簡單函數)、算術比較運算符(>,≥,<,≤,=,≠)和邏輯運算符(∨∧┐)連接起來的邏輯運算式,結果為邏輯值“真”或“假”。選取運算實際上是從關係R中選取使邏輯運算式為真的元組,是從行的角度進行的運算。50以下例題均是以圖1.12所示的五個關係為例進行運算。例2.4查詢電腦系的全體學生。σDEPT=’電腦’(S)或σ5=’電腦’(S)(其中5為DEPT的屬性序號)結果右圖所示。SNOSNSEXAGEDEPTS1趙亦女17電腦S5周武男19電腦51例2.5查詢工資高於1000元的男教師。σ(SAL>1000)∧(SEX=’男’)(T)結果如圖所示。

注意:字元型數據的值應該使用單引號括起來,例如,‘電腦’,‘男’。

TNOTNSEXAGEPROFSALCOMMDEPTT1李力男47教授15003000電腦522.投影(Projection)投影運算也是單目運算,關係R上的投影是從R中選擇出若干屬性列,組成新的關係,即對關係在垂直方向進行的運算,從左到右按照指定的若干屬性及順序取出相應列,刪去重複元組。記作:ΠA(R)={t[A]|t∈R}其中A為R中的屬性列,Π為投影運算符。從其定義可看出,投影運算是從列的角度進行的運算,這正是選取運算和投影運算的區別所在。選取運算是從關係的水準方向上進行運算的,而投影運算則是從關係的垂直方向上進行的。

53例2.6查詢教師的姓名及其職稱。ΠTN,TNO,PROF(T)或Π2,1,5(T)(其中2,1,5分別為TN、TNO和PROF的屬性序號)結果右圖所示

上例表明,投影運算可以改變關係的屬性次序

TNTNOPROF李力T1教授王平T2講師劉偉T3講師張雪T4教授張蘭T5副教授54例2.7查詢教師關係中有哪些系。ΠDEPT(T)結果如右圖所示

由例2.7可以看出,投影後取消了某些屬性列後,就可能出現重複行,應該取消這些完全相同的行。所以投影之後,不但減少了屬性,元組也可能減少,新關係與原關係不相容。

DEPT電腦資訊自動化55例2.8查詢講授C5課程的教師號。ΠTNO(σCNO=’C5’(TC))結果如右圖所示。

本例中選取運算和投影運算相結合,先在授課表中選取滿足條件的元組,再於TNO屬性上進行投影。

TNOT2T3T5563.連接(Join)連接運算是二目運算,是從兩個關係的笛卡爾積中選取滿足連接條件的元組,組成新的關係。設關係R(A1,A2,……An)及S(B1,B2,……Bm),連接屬性集X包含於{A1,A2,……An},及Y包含於{B1,B2,……Bm},X與Y中屬性列數目相等,且相對應屬性有共同的域。[若Z={A1,A2……An}/X(/X:去掉X之外的屬性)及W={B1,B2……Bm}/Y,則R及S可表示為R(Z,X),S(W,Y)]關係R和S在連接屬性X和Y上的連接,就是以R×S笛卡爾積中,選取X屬性列上的分量與Y屬性列上的分量滿足給定θ比較條件的那些元組,也就是在R×S上選取在連接屬性X,Y上滿足θ條件的子集,組成新的關係。新關係的度為n+m。

57記作:R∞S={tr⌒ts

|tr∈R∧ts∈S∧tr[X]θts[Y]為真}

XθY其中,∞是連接運算符,θ為算術比較運算符,也稱θ連接;XθY為連接條件;θ為“=”時,稱為等值連接;θ為“<”時,稱為小於連接;θ為“>”時,稱為大於連接。連接運算為非基本運算,可以用選取運算和廣義笛卡爾積運算來表示:R∞S=σxθy(R×S)58在連接運算中,一種最常用的連接是自然連接。所謂自然連接就是在等值連接的情況下,當連接屬性X與Y具有相同屬性組時,把在連接結果中重複的屬性列去掉。即如果R與S具有相同的屬性組Y,則自然連接可記作:R*S={tr⌒ts

|tr∈R∧ts∈S∧tr[Y]=ts[Y]}自然連接是在廣義笛卡爾積R×S中選出同名屬性上符合相等條件元組,再進行投影,去掉重複的同名屬性,組成新的關係。

59例2.9如圖2.9(a)、(b)所示的兩個關係R與S,(c)為R和S的大於連接(C>D),(d)為R和S的等值連接(C=D),(e)為R和S的等值連接(R.B=S.B),(f)為R和S的自然連接。

RS

(a)

(b)ABC

BDa1b12

b15a1b24

b26a2b36

b37a2b48

b3860大於連接(C>D)等值連接(C=D)

(c)

(d)

AR.BCS.BD

AR.BCS.BDa2b36b15

a2b36b26a2b48b15

a2b48b38a2b48b26

a2b48b37

61等值連接(R.B=S.B)自然連接

(e)

(f)

圖2.9連接運算舉例

AR.BCS.BD

ABCDa1b12b15

a1b125a1b24b26

a1b246a2b36b37

a2b367a2b36b38

a2b36862結合上例,我們可以看出等值連接與自然連接的區別:1.

等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關係只有在同名屬性才能進行自然連接。如上例R中的C列和S中的D列可進行等值連接,但因為屬性名不同,不能進行自然連接。2.等值連接不將重複屬性去掉,而自然連接去掉重複屬性,也可以說,自然連接是去掉重複列的等值連接。如上例R中的B列和S中的B列進行等值連接時,結果有兩個重複的屬性列B,而進行自然連接時,結果只有一個屬性列B。

63例2.10查詢講授資料庫課程的教師姓名。ΠTN(σCN=’資料庫’(C)*ΠTNO,CNO(TC)*ΠTNO,TN(T))或ΠTN(ΠTNO(σCN=’資料庫’(C)*TC)*ΠTNO,TN(T))結果如右圖所示。

TN王平劉偉張蘭644.除法(Division)除法運算是二目運算,設有關係R(X,Y)與關係S(Y,Z),其中X,Y,Z為屬性集合,R中的Y與S中的Y可以有不同的屬性名,但對應屬性必須出自相同的域。關係R除以關係S所得的商是一個新關係P(X),P是R中滿足下列條件的元組在X上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作:R÷S={tr[X]|tr∈R∧Πy(S)

Yx}其中,Yx為x在R中的象集,x=tr[X]。除法運算為非基本運算,可以表示為:R÷S=Πx(R)-Πx(Πx(R)×S-R)

65例2.11已知關係R和S,如圖2.11(a),(b)所示,則R÷S如圖(c)所示。與除法的定義相對應,本題中X={A,B}={(a1,b2),(a2,b4),(a3,b5)},Y={C,D}={(c3,d5),(c4,d6)},Z={F}={f3,f4}。其中,元組在X上各個分量值的象集分別為:(a1,b2)的象集為{(c3,d5),(c4,d6)}(a2,b4)的象集為{(c1,d3)}(a3,b5)的象集為{(c2,d8)}S在Y上的投影為{(c3,d5),(c4,d6)}顯然只有(a1,b2)的象集包含S在Y上的投影,所以R÷S={(a1,b2)}

66

RS

R÷S

(a)

(b)

(c)

圖2.11ABCDE

CDF

ABa1b2c3d5e1

c3d5f3

a1b2a1b2c4d6e1

c4d6f4

a2b4c1d3e3

a3b5c2d8e4

67除法運算同時從行和列的角度進行運算,適合於包含“全部”之類的短語的查詢。例2.12查詢選修了全部課程的學生學號和姓名。ΠSNO,CNO(SC)÷ΠCNO(C)*ΠSNO,SN(S)68關係演算是以數理邏輯中的謂詞演算為基礎的,通過謂詞形式來表示查詢運算式。根據謂詞變元的不同,可將關係演算分為元組關係演算和域關係演算。2.7.1元組關係演算語言元組關係演算是以元組變數作為謂詞變元的基本對象。元組關係演算語言的典型代表是E.F.Codd提出的ALPHA語言,這種語言雖然沒有實際實現,但較有名氣,INGRES關係資料庫上使用的QUEL語言,就是在ALPHA語言的基礎上研製的。這裏主要介紹ALPHA語言和QUEL語言

2.7關係演算

69

ALPHA語言ALPHA語言是以謂詞公式來定義查詢要求的。在謂詞公式中存在客體變元,這裏稱為元組變數。元組變數是一個變數,其變化範圍為某一個命名的關係。ALPHA語言的基本格式是:<操作符><工作空間名>(<目標表>)[:<操作條件>]操作符有GET,PUT,HOLD,UPDATE,DELETE,DROP等到種。工作空間是指記憶體空間,可以用一個字母表示,通常用W表示,也可以用別的字母表示。工作空間是用戶與系統的通信區。目標表用於指定操作(如查詢、更新等)出來的結果,它可以是關係名或屬性名,一答操作語句可以同時對多個關係或多個屬性進行操作。70操作條件是用謂詞公式表示的邏輯運算式,只有滿足此條件的元組才能進行操作,這是一個可選項,缺省時表示無條件執行操作符規定的操作。除此之外,還可以在基本格式上加上排序要求,定額要求等。下麵以教學資料庫(圖1.12)為例,說明ALPHA語言的使用。

1.數據查詢(1)簡單查詢例查詢所有學生的數據。GETW(S)GET語句的作用是把資料庫中的數據讀入記憶體空間W,目標表為學生關係S,代表查詢出來的結果,即所有的學生。冒號後面的操作條件缺省,表示無條件查詢。71例2.13

查詢所有被選修的課程號碼。GETW(SC.CNO)目標表為選課關係SC中的屬性CNO,代表所有被選修的課程號碼,查詢結果自動消去重複行。(2)條件查詢由冒號後面的邏輯運算式給出查詢條件,在運算式中可以使用如下三類運算符:①

比較運算符:>,≥,<,≤,=等於,≠;②邏輯運算符:∧(與),∨(或),┐(非)③表示執行次序的括?。海ǎ┢渲校容^運算符的優先順序高於邏輯運算符,可以使用()改變它們的優先順序。72例2.14

查詢電腦系工資高於1000元的教師的姓名和工資。GETW(T.TN,T.SAL):T.DEPT=’電腦’∧T.SAL>1000目標表為教師關係T中的兩個屬性SN和SAL組成的屬性列表。

(3)排序查詢例2.15

查詢S3同學所選課程號及成績,並按成績降序排列。GETW(SC.CNO,SC.SCORE):SC.SNO=’S3’DOWNSC.SCOREDOWN表示降序,後面緊跟排序的屬性名。昇冪排列時使用UP。

73(4)定額查詢例2.15

查詢一名男教師的教師號和姓名。GETW(1)(T.TNO,T.TN):T.SEX=’男’所謂的定額查詢就是通過在W後面的括弧中加上定額數量,限定查詢出元組的個數。這裏(1)表示查詢結果中男教師的個數,取出教師表中第一個男教師的教師號和姓名。排序和定額查詢可以一起使用。例2.16

查詢一名男教師的教師號和姓名,並使他的年齡最小。GETW(1)(T.TNO,T.TN):T.SEX=’男’UPT.AGE此語句的執行過程為:先查詢所有男教師的教師號和姓名,再按照年齡由小到大排序,然後找出第一位,也就是年齡最小的男教師。

74(5)帶元組變數的查詢所謂的元組關係演算就是以元組變數作為謂詞變元的基本對象,在關係演算的查詢操作時,可以在相應的關係上定義元組變數。元組變數代表關係中的元組,其取值是在所定義的關係範圍內變化,所以也稱作範圍變數RangeVariable,一個關係可以設多個元組變數。例2.17

查詢S3同學所選課程號。RANGESCXGETW(X.CNO):X.SNO=’S3’使用RANGE來說明元組變數,X為關係SC上的元組變數。如果關係的名字很長,使用起來不方便,這時可以設一個名字較短的元組變數來代替關係名,簡化關係名,使操作更加方便。75(6)帶存在量詞的查詢例2.18

查詢S3同學所選課程名。RANGESCXGETW(C.CN):

X(C.CNO=X.CNO∧X.SNO=’S3’)注意:操作條件中使用量詞時必須用元組變數。例2.19

查詢至少選修一門其課時數為80的課程的學生的姓名。RANGECCXSCSCXGET W(S.SN):

SCX(SCX.SNO=S.SNO∧

CX(CX.CNO=SCX.CNO∧CX.CT=80))76此查詢涉及三個關係,需要對兩個關係(C和SC)作用存在量詞,所以用了兩個元組變數。此語句的執行過程為:先查詢課時數為80的課程號,再根據找到的課程號在關係SC中查詢其對應的學號,然後根據為些學號在關係S中找到對應的學生姓名。例2.20

查詢選修全部課程的學生姓名。RANGECCXSCSCXGET W(S.SN):

CX

SCX(XSC.SNO=S.SNO∧CX.CNO=SCX.CNO)77(7)庫函數查詢庫函數也稱集函數。用戶在使用查詢語言時,經常要作一些簡單的運算。例如要統計某個關係中符合某一條件的元組數,或某些元組在某個屬性上分量的和、平均值等等。在關係資料庫語言中提供了有關這類運算的標準函數,增強了基本檢索能力。常用的庫函數下表所示函數名稱功能AVG按列計算平均值TOTAL按列計算值的總和MAX求一列中的最大值MIN求一列中的最小值COUNT按列值計算元組個數78例2.21

求學號為S1學生的平均分。GETW(AVG(SC.SCORE):S.SNO=’S1’例2.22

求學校共有多少個系GETW(COUNT(S.DEPT))COUNT函數自動消去重複行,可計算字段“DEPT“不同值的數目。2.數據更新更新操作包括修改、插入和刪除。(1)修改修改操作使用UPDATE語句實現,具體操作分為以下三步:79①讀數據:使用HOLD語句將要修改的元組從資料庫中讀到工作空間中;②修改:利用宿主語言修改工作空間中元組的屬性;③送回:使用UPDATE語句將修改後的元組送回資料庫中。這裏HOLD語句是帶上併發控制的GET語句。例2.23

把劉偉教師轉到資訊系。HOLDW(T.DEPT):T.TN=‘劉偉’MOVE’資訊’TOW.DEPTUPDATEW在ALPHA語言中,不允許修改關係的主碼,例如不能使用UPDATE語句修改教師表T中的教師號。如果要修改主碼,應該先使用刪除操作刪除該元組,再插入一條具有新主碼值的元組。80(2)插入插入操作使用PUT語句實現,具體操作分為以下兩步:①建立新元組:利用宿主語言在工作空間中建立新元組;②寫數據:使用PUT語句將元組寫入到指定的關係中。例2.24

在SC表中插入一條選課記錄(S6,C1,85)。MOVES6TOW.SNOMOVEC1TOW.CNOMOVE85TOW.SCOREPUTW(SC)81PUT語句的作用是把工作空間W中的數據寫到資料庫中,此例即把已經在工作空間建立的一條選課記錄寫入到選課關係SC中。注意:PUT語句只能對一個關係進行操作,在插入操作時,拒絕接受主碼相同的元組。(3)刪除ALPHA語言中的刪除操作不但可以刪除關係中的一些元組,還可以刪除一個關係。刪除操作使用DELETE語句實現,具體操作分為以下兩步:①讀數據:使用HOLD語句將要刪除的元組從資料庫中讀到工作空間中;②刪除:使用DELETE語句刪除該元組。82例2.25

刪除學號為S6的學生的資訊。HOLDW(S):S.SNO=‘S6’DELETEW例2.26

刪除全部學生的資訊。HOLDW(S)DELETEWQUEL語言INGRES是加利福尼亞大學研製的關係資料庫管理系統,QUEL語言是INGRES系統的查詢語言,它以ALHPA語言為基礎,具有較為完善的數據定義、數據查詢、數據更新、數據控制等功能。QUEL語言既可以作為獨立的語言進行互動式操作,也可以作為子語言嵌入到主語言中去。831.數據定義QUEL語言可以使用CREATE語句定義一個新關係,CREATE語句的一般格式為:CREATE<關係名>(<屬性名=數據類型及長度>[,<屬性名=數據類型及長度>…])例2.27

定義學生關係SCREATES (SNO=C8,SN=C20,AGE=I3,SEX=C2,DEPT=C20)關係定義後可以由定義者撤銷,撤銷關係使用語句DESTROY例如,撤銷學生關係S可以寫成:DESTROYS。842.數據查詢查詢語句的一般格式為:RANGEOFt1ISR1RANGEOFt2ISR2……RANGEOFtkISRkRETRIEVE(目標表)WHERE<條件>85其中t1、t2、…tk分別是定義在關係R1、R2、Rk上的元組變數。目標表為查詢的目標屬性。查詢條件是一個邏輯運算式,在運算式中可以使用如下三類運算符:①

比較運算符:>(大於),≥(大於等於),<(小於),≤(小於等於),=(等於),≠(不等於);②邏輯運算符:AND(與),OR(或),NOT(非)③表示執行次序的括?。海ǎ┢渲?,比較運算符的優先順序高於邏輯運算符,可以使用()改變它們的優先順序。

86例2.28

查詢電腦系工資高於1000元的教師的姓名和工資。RANGEOFTXISTRETRIEVE(TX.TN,TX.SAL)WHERETX.DEPT=’電腦’∧TX.SAL>1000例2.29

查詢講授C5課程的教師的姓名。RANGEOFTXISTRANGEOFTCXISTCRETRIEVE(TX.TN)WHERETX.TNO=TCX.TNOANDTCX.CNO=’C5’873.數據更新(1)修改修改操作使用REPLACE語句實現。例2.30

把劉偉教師轉到資訊系。RANGEOFTXISTREPLACE(TX.DEPT=’資訊’)WHERETX.TN=‘劉偉’(2)插入插入操作使用APPEND語句實現。例2.31

在SC表中插入一條選課記錄(S6,C2,80)。APPENDTOSC(SNO=‘S6’,CNO=‘C2’,SCORE=80)88(3)刪除刪除操作使用DELETE語句實現。例2.32

刪除學號為S6的學生的資訊。RANGEOFSXISSDELETESXWHERESX.SNO=‘S6’2.7.2域關係演算語言QBE域關係演算是關係演算的另一種形式。域關係演算是以元組變數的分量即域變數作為謂詞變元的基本對象。域關係演算語言的典型代表是1975年由IBM公司約克城高級研究試驗室的M.M.Zloof提出的QBE語言,該語言於1978年在IBM370上實現。89QBE是QueryByExample的縮寫,也稱為示例查詢,它是一種很有特色的螢幕編輯語言,其特點如下:(1)以表格形式進行操作每一個操作都由一個或幾個表格組成,每一個表格都顯示在終端的螢幕上,用戶通過終端螢幕編輯程式以填寫表格的方式構造查詢要求,查詢結果也以表格的形式顯示出來,所以它具有直觀和可對話的特點。(2)通過例子進行查詢通過使用一些實例,使該語言更易於為用戶接受和掌握。(3)查詢順序自由當有多個查詢條件時,不要求使用者按照固定的思路和方式進行查詢,使用更加方便。

90使用QBE語言的步驟:(1)用戶根據要求向系統申請一張或幾張表格,顯示在終端上;(2)用戶在空白表格的左上角的一欄內輸入關係名;(3)系統根據用戶輸入的關係名,將在第一行從左至右自動填寫各個屬性名;(4)用戶在關係名或屬性名下方的一格內填寫相應的操作命令,操作命令包括:P.(列印或顯示)、U.(修改)、I.(插入)、D.(刪除)。如果要列印或顯示整個元組時,應將“P”填在關係名的下方,如果只需列印或顯示某一屬性,應將“P”填在相應屬性名的下方。

91表格形式如表2.2所示

表2.2QBE操作框架表關係名屬性1屬性2…屬性n操作命令屬性值或查詢條件屬性值或查詢條件…屬性值或查詢條件92

數據查詢1.

溫馨提示

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

評論

0/150

提交評論