版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章關(guān)系數(shù)據(jù)庫的基本理論關(guān)系數(shù)據(jù)庫應(yīng)用數(shù)學(xué)方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。最早將這類方法用于數(shù)據(jù)處理的是1962年CODASYL發(fā)表的“信息代數(shù)”之后有1968年DavidChild在IBM7090機上實現(xiàn)的集合論數(shù)據(jù)結(jié)構(gòu),但系統(tǒng)地、嚴格地提出關(guān)系模型的是美國IBM公司的E·F·Codd。7/19/20231InstituteofComputerScience&Technology,HeiLongJiangCollegeofTechnology,KongLei主要內(nèi)容:關(guān)系模型的基本概念
三類完整性條件關(guān)系代數(shù)基本運算重點難點:關(guān)系代數(shù)基本運算7/19/202323.1關(guān)系模型的基本概念3.2關(guān)系模型的三類完整性3.3關(guān)系代數(shù)的基本運算 3.4關(guān)系演算 3.5本章小結(jié)7/19/202333.1關(guān)系模型的基本概念數(shù)據(jù)模型一般包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)完整性約束三個部分,數(shù)據(jù)模型中的數(shù)據(jù)結(jié)構(gòu)主要描述數(shù)據(jù)類型、性質(zhì)以及數(shù)據(jù)間的聯(lián)系,數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)模型的基礎(chǔ);數(shù)據(jù)模型中的數(shù)據(jù)操作主要描述在相應(yīng)數(shù)據(jù)結(jié)構(gòu)上的操作類型與操作方式;數(shù)據(jù)模型中的數(shù)據(jù)完整性約束主要描述數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)間的語法、語義聯(lián)系,它們間的制約和依存關(guān)系,以及數(shù)據(jù)動態(tài)變化的規(guī)則以保證數(shù)據(jù)的正確、有效與相容。7/19/20234關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。它由以下三個基本部分組成:關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系操作關(guān)系中的完整性約束規(guī)則7/19/20235數(shù)據(jù)模型主要描述兩類信息:一是實體;二是實體之間的聯(lián)系。在層次、網(wǎng)狀模型中,實體之間的聯(lián)系是通過指針來實現(xiàn)的,而在關(guān)系模型中,實體之間的聯(lián)系是通過二維表中公共屬性值建立起來的聯(lián)系來實現(xiàn)的。所以,在建立關(guān)系模型時,只要把的所有的實體及其屬性用關(guān)系框架來表示,同時把實體之間的關(guān)系也用關(guān)系框架來表示,就可以得到一個關(guān)系模型。7/19/20236教師關(guān)系TTnoTnameSexAgeProfSalCommDept教師號教師姓名性別年齡職稱工資崗位津貼系別課程關(guān)系C授課關(guān)系SC
CnoCnameCt課程號課程名課時
TnoCno教師號課程號7/19/20237從以上關(guān)系的框架中,可以很容易看出哪兩個關(guān)系之間有聯(lián)系。例如:1.教師關(guān)系和授課關(guān)系有公共的屬性“教師號”,則表明這兩個關(guān)系有聯(lián)系。2.而課程關(guān)系和授課關(guān)系有公共的屬性“課程號”,則表明這兩個關(guān)系也有聯(lián)系。3.至于元組之間的聯(lián)系,則與具體的數(shù)據(jù)有關(guān)。只有在公共屬性上具有相同屬性值的元組之間才有聯(lián)系。7/19/20238由上例可以看出,在一個關(guān)系中可以存放兩類信息:1.描述實體本身的信息2.描述實體(關(guān)系)之間的聯(lián)系的信息關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫系統(tǒng),即以關(guān)系模型為基礎(chǔ)而構(gòu)建起來的數(shù)據(jù)庫系統(tǒng)。7/19/202393.1.1關(guān)系數(shù)據(jù)結(jié)構(gòu) 在關(guān)系模型中,數(shù)據(jù)的邏輯結(jié)構(gòu)為滿足一定條件的二維表,表具有固定的列數(shù)和任意的行數(shù),在數(shù)學(xué)上稱為“關(guān)系”。關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)可以描述現(xiàn)實世界的實體以及實體間的各種聯(lián)系。在關(guān)系模型中,可以把現(xiàn)實世界中的實體以及實體間的各種聯(lián)系均用單一的關(guān)系來表示。由于關(guān)系的概念來源于數(shù)學(xué),關(guān)系模型是在集合代數(shù)的基礎(chǔ)上建立起來的,所以有必要從數(shù)學(xué)的角度對關(guān)系的數(shù)據(jù)結(jié)構(gòu)及其基本概念做一論述。7/19/202310關(guān)系⒈
域(Domain)
2.笛卡爾積(CartesianProduct)
3.關(guān)系(Relation)7/19/202311
定義3.1域是一組具有相同數(shù)據(jù)類型的值的集合。例如,自然數(shù)、整數(shù)、實數(shù)、{0,5}、大于0且小于50的自然數(shù)、長度小于20個字節(jié)的字符串集合等,都可以是域。1.域(Domain)7/19/2023122、笛卡爾積(CartesianProduct)給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:
D1×D2×…×Dn={(d1,d2,…,dn)|
diDi,i=1,2,…,n}其中每一個元素()叫作一個元組(n-tuple)或簡稱元組(Tuple),元素中的每一個值叫作一個分量(Component)。
7/19/202313這些域中可以存在相同的域。例如和可以是相同的域。若為有限集,其基數(shù)(Cardinalnumber)為,則的基數(shù)為:7/19/202314笛卡爾積可以表示為一個二維表。表中的每行對應(yīng)一個元組,表中的每一列的值來自一個域。例如給出如下三個域:
=學(xué)生集合={李琳、王明、林麗}=課程集合={英語、高數(shù)、政治}=成績集合={合格、不合格}7/19/202315則、、的笛卡爾積為:
{(李琳,英語,合格),(李琳,英語,不合格),(李琳,高數(shù),合格),(李琳,高數(shù),不合格),(李琳,政治,合格),(李琳,政治,不合格),(王明,英語,合格),(王明,英語,不合格),(王明,高數(shù),合格),(王明,高數(shù),不合格),(王明,政治,合格),(王明,政治,不合格),(林麗,英語,合格),(林麗,英語,不合格),(林麗,高數(shù),合格),(林麗,高數(shù),不合格),(林麗,政治,合格),(林麗,政治,不合格)}
的基數(shù)為
7/19/202316一共有十八個,每個元素為一個元組,每個元組分別包含學(xué)生姓名、課程名稱、成績?nèi)齻€分量。這些元組構(gòu)成了二維表的形式。如果一個關(guān)系的元組個數(shù)是無限的,則稱為無限關(guān)系;如果一個關(guān)系的元組個數(shù)是有限的,則稱為有限關(guān)系。由于計算機存儲系統(tǒng)的限制,一般不去處理無限關(guān)系,而只考慮有限關(guān)系。注意:笛卡兒積不滿足交換率,即笛卡兒積的元組有序。7/19/2023173.關(guān)系(Relation)定義3.3的子集叫做在域上的關(guān)系,可記做:,R為關(guān)系名,n是關(guān)系的目或度(degree)。關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示。當(dāng)n=1時,稱該關(guān)系為單元關(guān)系(Unaryrelation)。當(dāng)n=2時,稱該關(guān)系為二元關(guān)系(Binaryrelation)。7/19/202318在關(guān)系模型中,關(guān)系可進一步定義為:定義在域D1,D2,……Dn(不要求完全相異)上的關(guān)系由關(guān)系頭(Heading)和關(guān)系體(Body)組成。關(guān)系頭:由屬性名A1,A2,…,An的集合組成,每個屬性Ai正好對應(yīng)一個域Di(i=1,2,…,n),關(guān)系頭,也稱關(guān)系框架,相對固定,是關(guān)系的數(shù)據(jù)結(jié)構(gòu)的描述。關(guān)系體:是指關(guān)系結(jié)構(gòu)中的內(nèi)容或者數(shù)據(jù),并非固定不變,它隨元組的建立、刪除或修改而變化。7/19/202319在關(guān)系模型中,對關(guān)系作了種種限制,關(guān)系有以下性質(zhì):
1.列是同質(zhì)的(Homogeneous)即每一列中的分量是同一數(shù)據(jù)類型,來自同一個域,為元組的一個屬性。
2.不同列的數(shù)據(jù)可以來自同一個域,稱其中的每一列為一個屬性,不同的屬性要給予不同的屬性名。
3.列的順序無所謂,即列的次序可以任意交換。交換時,應(yīng)連同屬性名一起交換,否則將得到不同的關(guān)系。7/19/202320例如,有如下表3-2中關(guān)系,職業(yè)與兼職是兩個不同的屬性,但它們?nèi)∽酝粋€域職業(yè)={教師,工人,輔導(dǎo)員}。表3-2職業(yè)關(guān)系姓名職業(yè)兼職張偉教師輔導(dǎo)員王麗工人教師劉英教師輔導(dǎo)員7/19/202321例如:關(guān)系T1作如下交換時,無任何影響,如下表所示。
關(guān)系T1交換后的關(guān)系T1
姓名性別李偉男王月女劉洋男性別姓名男李偉女王月男劉洋而做不交換屬性名,只交換屬性列中的值時,則得到的關(guān)系:姓名性別男李偉女王月男劉洋7/19/202322
4.任意兩個元組的候選鍵不能相同。也就是表中的任意兩行不能相同,即一個關(guān)系不能有相同的元組。因為數(shù)學(xué)上集合中沒有相同的元素,而關(guān)系是元組的集合,所以作為集合元素的元組應(yīng)該是唯一的。
5.行的順序無所謂,即行的次序可以任意交換。因為集合中的元素是無序的,所以作為集合元素的元組也是無序的。根據(jù)關(guān)系的這個性質(zhì),可以改變元組的順序使其具有某種排序,然后按照順序查詢數(shù)據(jù),可以提高查詢速度。
6.每個分量必須取原子值,即一個分量都必須是不可分的數(shù)據(jù)項。即是一個確定的值,而不是值的集合。即不可“表中有表”。滿足此條件的關(guān)系稱為規(guī)范化關(guān)系,否則稱為非規(guī)范化關(guān)系。7/19/202323例如,在表3-4中,籍貫含有省、市/縣兩項,出現(xiàn)了“表中有表”的現(xiàn)象,則為非規(guī)范化關(guān)系,而把籍貫分成省、市/縣兩列,將其規(guī)范化,如表3-5所示。姓名籍貫省市/縣王洪黑龍江齊齊哈爾李利吉林長春表3-4不規(guī)范的關(guān)系表3-5規(guī)范后的關(guān)系姓名省市/縣王洪黑龍江齊齊哈爾李利吉林長春7/19/202324定義3.4若關(guān)系中的某一屬性組的值能唯一地標(biāo)識一個元組,則稱該屬性組為候選鍵(Candidatekey)。如果一個關(guān)系中有多個候選鍵,可以從中選擇一個作為查詢、插入或刪除元組的操作變量,被選用的候選鍵稱為主關(guān)系鍵(PrimaryKey),或簡稱為主鍵、關(guān)系鍵、關(guān)鍵字。每一個關(guān)系都有并且只有一個主鍵。包含在候選鍵中的各屬性稱為主屬性(Primeattribute)。不包含在任何候選鍵中的屬性稱為非主屬性(Noprimaryattribute)或非鍵屬性(Non-keyattribute)。在最極端的情況下,關(guān)系模式的所有屬性是這個關(guān)系模式的候選鍵,稱為全鍵(All-key)。7/19/202325下面是一個全鍵的例子:
假設(shè)有教師授課關(guān)系TCS,分別有三個屬性教師(T)、課程(C)和學(xué)生(S)。一個教師可以講授多門課程,一門課程可以為多個教師講授,同樣一個學(xué)生可以選聽多門課程,一門課程可以為多個學(xué)生選聽。在這種情況下,T,C,S三者之間是多對多關(guān)系,(T,C,S)三個屬性的組合是關(guān)系TCS的候選鍵,稱為全鍵,T,C,S都是主屬性。
7/19/2023263.1.2關(guān)系模式在數(shù)據(jù)庫中要區(qū)分型和值。關(guān)系數(shù)據(jù)庫中,關(guān)系模式是型,關(guān)系是值。關(guān)系模式是對關(guān)系的描述,一個關(guān)系應(yīng)從以下幾個方面描述。關(guān)系實質(zhì)上是一張二維表,表的每一行為一個元組,每一列為一個屬性。一個元組就是該關(guān)系所涉及的屬性集的笛卡爾積的一個元素。關(guān)系是元組的集合,因此關(guān)系模式必須指出這個元組集合的結(jié)構(gòu),即它有那些屬性構(gòu)成,這些屬性來自哪些域,以及屬性與域之間的映像關(guān)系。其次,一個關(guān)系通常是由賦予它的元組語義來確定的。元組語義實質(zhì)上是一個n目謂詞(n是屬性集中的屬性的個數(shù))。凡是使n目謂詞為真的笛卡爾積中的元素(或者說凡符合元組語義的那部分元素)的全體就構(gòu)成了該關(guān)系模式的關(guān)系。7/19/202327定義3.5關(guān)系的描述稱為關(guān)系模式(RelationSchema)。它可以形式化地表示為
R(U,D,DOM,F)
其中R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性組U中屬性所來自的域,DOM為屬性向域的映像集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合。屬性間的數(shù)據(jù)依賴將在第五章討論,本章中關(guān)系模式僅涉及關(guān)系名、各屬性名,關(guān)系模式通??梢院営洖椋?/p>
R(U)或R(A1,A2,···,An)
其中R為關(guān)系名,A1,A2,···,An為屬性名。7/19/202328在關(guān)系模型中,實體以及實體間的聯(lián)系都是用關(guān)系來表示的。在一個給定的應(yīng)用領(lǐng)域中,所有實體及實體之間聯(lián)系的關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫的型也稱為關(guān)系數(shù)據(jù)庫模式,是對關(guān)系數(shù)據(jù)的描述。關(guān)系數(shù)據(jù)庫模式包括:
1.若干域的定義。
2.在這些域上定義的若干關(guān)系模式。關(guān)系數(shù)據(jù)庫的值這些關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)據(jù)庫。7/19/2023293.1.3關(guān)系操作關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。前面講解了關(guān)系數(shù)據(jù)結(jié)構(gòu),這一節(jié)講解關(guān)系操作的一般概念和分類。關(guān)系模型給出了關(guān)系操作的能力的說明,但不對RDBMS語言給出具體的語法要求,也就是說不同的RDBMS可以定義和開發(fā)不同的語言來實現(xiàn)這些操作。7/19/202330
1.基本的關(guān)系操作關(guān)系數(shù)據(jù)庫中的核心內(nèi)容是關(guān)系即二維表。而對這樣一張表的使用主要包括按照某些條件獲取相應(yīng)行、列的內(nèi)容,或者通過表之間的聯(lián)系獲取兩張表或多張表相應(yīng)的行、列內(nèi)容。概括起來關(guān)系操作包括選擇、投影、連接、除操作。關(guān)系操作的操作對象是關(guān)系,操作結(jié)果亦為關(guān)系。關(guān)系模型中常用的關(guān)系操作包括查詢(Query)操作和更新操作(包括插入(Insert)、刪除(Delete)、修改(Update))兩大部分。
7/19/202331關(guān)系操作分為傳統(tǒng)的集合運算和專門的關(guān)系運算兩部分。傳統(tǒng)的集合運算包括并(Union)、差(Except)、交(Intersection)、笛卡爾積。專門的關(guān)系運算包括選擇(Select)、投影(Project)、連接(Join)、除(Divide)。關(guān)系模式的特點是集合操作方式,即操作的對象和結(jié)果都是集合。這種操作方式也稱為一次一集合(set-at-a-time)的方式。相應(yīng)地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式則為一次一記錄(record-at-a-time)的方式。7/19/202332
2.關(guān)系數(shù)據(jù)語言的分類早期的關(guān)系操作能力通常用代數(shù)方式或邏輯方式來描述,分別稱為關(guān)系代數(shù)和關(guān)系演算。關(guān)系代數(shù)是用集合論中的關(guān)系運算來表達查詢要求的方式。關(guān)系演算是以數(shù)理邏輯中的謂詞演算來表達查詢要求的方式。關(guān)系演算又可按謂詞變元的基本對象是元組變量還是域變量分為元組關(guān)系演算和域關(guān)系演算。若在關(guān)系演算中,謂詞變元的基本對象是元組變量,則稱之為元組關(guān)系演算;若謂詞變元的基本對象是域變量,則稱之為域關(guān)系演算。關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算三種語言在表達能力上是完全等價的。7/19/202333關(guān)系操作有三種不同的描述方式:關(guān)系代數(shù)、關(guān)系演算和結(jié)構(gòu)化查詢語言SQL。關(guān)系數(shù)據(jù)語言關(guān)系代數(shù)關(guān)系演算具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言元組關(guān)系演算域關(guān)系演算例如ISBL例如ALPHA,QUEL例如QBE例如SQL分類圖如下表示。7/19/202334另外還有一種介于關(guān)系代數(shù)和關(guān)系演算之間的語言SQL(StructuredQueryLanguage)。SQL不僅具有豐富的查詢功能,而且具有數(shù)據(jù)定義和數(shù)據(jù)控制功能,是集查詢、DDL、DML和DCL于一體的關(guān)系數(shù)語言。它充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點和優(yōu)點,是關(guān)系數(shù)據(jù)的標(biāo)準(zhǔn)語言。7/19/2023353.2關(guān)系模型的三類完整性為了維護數(shù)據(jù)庫中數(shù)據(jù)與現(xiàn)實世界的一致性,對關(guān)系數(shù)據(jù)庫的插入、刪除和修改操作必須有一定的約束條件。數(shù)據(jù)的完整性約束是指在給定的數(shù)據(jù)模型中,數(shù)據(jù)及其聯(lián)系所遵守的一組通用的完整性規(guī)則,以確保數(shù)據(jù)庫中數(shù)據(jù)的一致性和正確性。7/19/2023363.2.1關(guān)系的三類完整性約束關(guān)系模型中有三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。其中實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件被稱作是關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持。用戶定義的完整性是應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束。7/19/2023373.2.2實體完整性(EntityIntegrity)規(guī)則3.1實體完整性規(guī)則若屬性(指一個或一組屬性)是基本關(guān)系的主屬性(或主鍵中的屬性),則不能取空值。所謂空值就是“不知道”或“不存在”的值。這個規(guī)則很容易理解,因為主屬性能唯一標(biāo)識關(guān)系中的元組,若取空值,便失去唯一元組功能。例如關(guān)系模式中的學(xué)生(學(xué)號,姓名,性別,年齡,籍貫,專業(yè)名稱),其中學(xué)號是主鍵,而主鍵對應(yīng)的屬性只有學(xué)號,所以學(xué)號也是主屬性。根據(jù)實體完整性約束規(guī)則,學(xué)號不能取空值。在學(xué)生選課關(guān)系模式中,選修(學(xué)號,課程編碼,成績)中,屬性組“學(xué)號”和“課程編碼”為主鍵,同時也是主屬性,所以這兩個屬性均不能取空值。7/19/202338對于實體完整性規(guī)則說明如下:(1)實體完整性規(guī)則是針對基本關(guān)系而言的。一個基本表通常對應(yīng)現(xiàn)實世界的一個實體集。例如學(xué)生關(guān)系對應(yīng)于學(xué)生的集合。(2)現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標(biāo)識。例如每一個學(xué)生都是獨立的個體,是不一樣的。(3)相應(yīng)地,關(guān)系模型中以主鍵作為唯一性標(biāo)識。(4)主鍵中的屬性即主屬性不能取空值。如果主屬性取空值,就說明存在某個不可標(biāo)識的實體,即存在不可區(qū)分的實體,這與第(2)點相矛盾,因此這個規(guī)則稱為實體完整性。注意:實體完整性規(guī)則規(guī)定基本關(guān)系的所有主鍵的各屬性都不能取空值,而不僅是主鍵整體不能取空值。7/19/2023393.2.3參照完整性(ReferentialIntegrity)現(xiàn)實世界中的實體之間往往存在某種聯(lián)系,在關(guān)系模型中實體及實體間的聯(lián)系都是用關(guān)系來描述的。這樣就自然存在著關(guān)系與關(guān)系之間的引用。
【例3-1】學(xué)生實體和專業(yè)實體可以用下面的關(guān)系來表示,其中主鍵用下劃線標(biāo)識:學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)專業(yè)(專業(yè)號,專業(yè)名)這兩個關(guān)系之間存在著屬性的引用,即學(xué)生關(guān)系引用了專業(yè)關(guān)系的主鍵“專業(yè)號”。顯然,學(xué)生關(guān)系中的“專業(yè)號”值必須是確實存在的專業(yè)的號,即專業(yè)關(guān)系中有該專業(yè)的紀(jì)錄。也就是說學(xué)生關(guān)系中的某個屬性的取值需要參照專業(yè)關(guān)系的屬性取值。7/19/202340
學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)課程(課程號,課程名,學(xué)分)選修(學(xué)號,課程號,成績)這三個關(guān)系之間也存在著屬性的引用,即選修關(guān)系引用了學(xué)生關(guān)系的主鍵“學(xué)號”和課程關(guān)系的主鍵“課程號”。同樣,選修關(guān)系中的“學(xué)號”值必須是確實存在的學(xué)生的學(xué)號,即學(xué)生關(guān)系中有該學(xué)生的記錄;選修關(guān)系中的“課程號”值也必須是確定存在的課程的號,即課程關(guān)系中有該課程的記錄。換句話說,選修關(guān)系中某些屬性的取值需要參照其他關(guān)系的屬性取值。不僅兩個或兩個以上關(guān)系間可以存在引用關(guān)系,同一關(guān)系內(nèi)部屬性間也可能存在引用關(guān)系?!纠?-2】學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系可以如下3個關(guān)系表示:7/19/202341
【例3-3】在學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長)關(guān)系中,“學(xué)號”屬性是主鍵,“班長”屬性表示該學(xué)生所在班級的班長的學(xué)號,它引用了本關(guān)系“學(xué)號”屬性,即“班長”必須是確定存在的學(xué)生的學(xué)號。
這三個例子說明關(guān)系與關(guān)系之間存在著相互引用,相互約束的情況。下面先引入外鍵的概念,然后給出表達關(guān)系之間相互引用約束的參照完整性的定義。7/19/202342定義3.6設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的鍵,是基本關(guān)系S的主鍵。如果F與基本關(guān)系S的主鍵相對應(yīng),則稱F是基本關(guān)系R的外鍵(Foreignkey),并稱基本關(guān)系R為參照關(guān)系(Referencingrelation),基本關(guān)系S為被參照關(guān)系(Referencedrelation)或目標(biāo)關(guān)系(Targetrelation)。關(guān)系R和S不一定是不同的關(guān)系。7/19/202343學(xué)生關(guān)系專業(yè)關(guān)系 選修關(guān)系
圖c
學(xué)生關(guān)系圖a課程關(guān)系學(xué)生關(guān)系學(xué)號圖3-3關(guān)系的參照圖圖b7/19/202344
【例3-4】在職工關(guān)系中,某一個職工“所屬部門編碼”如果取空值,表示該職工未被分配到指定部門。如果等于部門關(guān)系中某個元組的“部門編碼”,表示該職工隸屬于指定部門。若既不為空值,又不等于被參照關(guān)系——部門中某個元組的“部門編碼”分量,表示該職工被分配到一個不存在的部門,則違背參照完整性規(guī)則。所以,參照完整性規(guī)則就是定義外鍵與主鍵之間的引用規(guī)則,也是關(guān)系模式之間關(guān)聯(lián)的規(guī)則。7/19/202345規(guī)則3.2參照完整性規(guī)則若屬性(或?qū)傩越M)F是基本關(guān)系R的外鍵,它與基本關(guān)系S的主鍵相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為:
1.或者取空值(F的每個屬性值均為空值)
2.或者等于S中某個元組的主鍵值7/19/2023463.2.4用戶定義完整性任何關(guān)系數(shù)據(jù)庫系統(tǒng)都應(yīng)該支持實體完整性和參照完整性。這是關(guān)系模型所要求的。用戶定義的完整性就是針對某一具體關(guān)系數(shù)據(jù)庫的唯一約束條件。它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。關(guān)系模型應(yīng)提供定義和檢驗這一類完整性的機制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不是由應(yīng)用程序來承擔(dān)這一功能。在早期的RDBMS中沒有提供定義和檢驗這些完整性的機制,因此需要應(yīng)用開發(fā)人員在應(yīng)用系統(tǒng)的程序中進行檢查。7/19/2023473.3關(guān)系代數(shù)的基本運算 關(guān)系模型與其他模型相比,最有特色的是它的數(shù)據(jù)庫語言。這種語言靈活方便、表達能力和功能都很強。目前關(guān)系數(shù)據(jù)庫所使用的語言一般都具有定義、查詢、更新和控制一體化的特點,而查詢是最主要的部分。所以說,關(guān)系數(shù)據(jù)庫的核心部分是查詢,故又稱為查詢語言,而查詢的條件要使用關(guān)系運算表達式來表示。因此,關(guān)系運算是設(shè)計關(guān)系數(shù)據(jù)語言的基礎(chǔ)。按表達查詢的方法不同,關(guān)系運算可分為關(guān)系代數(shù)和關(guān)系演算兩大類。7/19/202348關(guān)系代數(shù)是一種抽象的查詢語言,它用對關(guān)系的運算來表達查詢。對有限個關(guān)系作有限運算所得的結(jié)果。任何一種運算都是將一定的運算符作用于一定的運算對象上,得到預(yù)期的運算結(jié)果。所以運算對象、運算符、運算結(jié)果是運算的三大要素。關(guān)系代數(shù)的運算對象是關(guān)系,運算結(jié)果亦為關(guān)系。關(guān)系代數(shù)用到的運算符包括四類:集合運算符、專門的關(guān)系運算符、算術(shù)比較符和邏輯運算符,如表3-6。7/19/202349表3-6關(guān)系代數(shù)運算符運算符含義運算符含義集合運算符∪-∩×并差交笛卡爾積比較運算符>≥<≤=<>大于大于等于小于小于等于等于不等于專門的關(guān)系運算符選擇投影連接除邏輯運算符∧∨非與或÷7/19/2023503.3.1傳統(tǒng)的集合運算傳統(tǒng)集合運算是二目運算,包括并、交、差、笛卡兒積四種運算。設(shè)關(guān)系R和關(guān)系S具有相同的目n(即兩個關(guān)系都有n個屬性),且相應(yīng)的屬性取自同一個域,t是元組變量,表示t是R的一個元組。7/19/202351(1)并(Union)設(shè)R和S都是n目關(guān)系,而且兩者各對應(yīng)屬性的數(shù)據(jù)類型相同,則R和S的并定義為:的結(jié)果仍為目關(guān)系,由屬于R或?qū)儆赟的元組組成。7/19/202352(2)交(Intersection)設(shè)R和S都是n目關(guān)系,而且兩者各對應(yīng)屬性的數(shù)據(jù)類型相同,則R和S的交定義為:的結(jié)果仍為n目關(guān)系,由既屬于R又屬于S的元組組成。7/19/202353(3)差(Except)設(shè)R和S都是n目關(guān)系,而且兩者各對應(yīng)屬性的數(shù)據(jù)類型相同,則R和S的差定義為:的結(jié)果仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成。7/19/202354(4)廣義笛卡兒積(ExtendedCartesianProduct)設(shè)R是n目關(guān)系,S是m目關(guān)系,R和S的笛卡兒積定義為:7/19/202355ABCa1a1a2b1b2b2c1c2c1【例3-9】設(shè)有關(guān)系R和S如圖,求關(guān)系RABCa1a1a2b2b3b2c2c2c1關(guān)系S7/19/202356R∪SABCa1a1a2a1b1b2b2b3c1c2c1c2
R∩SABCa1a2b2b2c2c17/19/202357
R×SR.AR.BR.CS.AS.BS.Ca1a1a1a1a1a1a2a2a2b1b1b1b2b2b2b2b2b2c1c1c1c2c2c2c1c1c1a1a1a2a1a1a2a1a1a2b2b3b2b2b3b2b2b3b2c2c2c1c2c2c1c2c2c17/19/202358R-SABCa1b1c17/19/2023593.3.2專門的關(guān)系運算7/19/2023607/19/2023617/19/2023627/19/202363在連接運算中有兩種最常見的連接,一種是等值連接(equijoin),一種是自然連接(Naturaljoin)。7/19/2023643.自然連接與等值連接的區(qū)別是:⑴自然連接要求兩個關(guān)系中進行比較的屬性或?qū)傩越M必須同名和相同值域,而等值連接只要求比較屬性有相同的值域。⑵自然連接的結(jié)果中,同名的屬性只保留一個。一般的連接操作是從行的角度進行運算。但自然連接還需要取消重復(fù)列,所以是同時從行和列的角度進行運算。7/19/2023657/19/2023667/19/2023677/19/202368如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),那么這種連接就叫做外連接(outerjoin)。如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接(LEFTOUTERJION或LEFTJION),如果只把右邊關(guān)系S中要舍棄的元組保留就叫右外連接(RIGHTOUTERJION或RIGHTJION)。在圖3-7中,圖(a)是圖3-6中的關(guān)系R和關(guān)系S的外連接,圖(b)是左外連接,圖(c)是右外連接。7/19/2023697/19/2023707/19/2023717/19/2023727/19/2023733.1關(guān)系模型的基本概念3.2關(guān)系模型的三類完整性3.3關(guān)系代數(shù)的基本運算 3.4關(guān)系演算
3.5本章小結(jié)7/19/2023743.4關(guān)系演算關(guān)系演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的,通過謂詞形式來表示查詢表達式。根據(jù)謂詞變元的不同,可將關(guān)系演算分為元組關(guān)系演算和域關(guān)系演算。其代表語言分別為Alpha和QBE。元組關(guān)系演算語言的典型代表是E.F.Codd提出的ALPHA語言,這種語言雖然沒有實際實現(xiàn),但較有名氣,INGRES關(guān)系數(shù)據(jù)庫上使用的QUEL語言,就是在ALPHA語言的基礎(chǔ)上研制的。7/19/2023753.4.1元組關(guān)系演算語言——ALPHA在關(guān)系運算中,用謂詞公式來表達查詢要求的方式稱為關(guān)系演算。元組關(guān)系演算是以元組變量作為謂詞變元的基本對象。由于用到謂詞公式,必然涉及到謂詞變量和謂詞合適公式(well-formedformila)的問題。
ALPHA語言是以謂詞公式來定義查詢要求的。在謂詞公式中存在客體變元,這里稱為元組變量。元組變量是一個變量,其變化范圍為某一個命名的關(guān)系。7/19/202376ALPHA語言的基本格式是:操作語句工作空間名(表達式):操作條件
1.操作符有GET,PUT,HOLD,UPDATE,DELETE,DROP等多種。
2.工作空間是指內(nèi)存空間,可以用一個字母表示,通常用W表示,也可以用別的字母表示。工作空間是用戶與系統(tǒng)的通信區(qū)。
3.目標(biāo)表用于指定操作(如查詢、更新等)出來的結(jié)果,它可以是關(guān)系名或?qū)傩悦?,一操作語句可以同時對多個關(guān)系或多個屬性進行操作。
4.操作條件是用謂詞公式表示的邏輯表達式,只有滿足此條件的元組才能進行操作,這是一個可選項,缺省時表示無條件執(zhí)行操作符規(guī)定的操作。除此之外,還可以在基本格式上加上排序要求,定額要求等。7/19/202377下面以教學(xué)數(shù)據(jù)庫為例,說明ALPHA語言的使用。1.數(shù)據(jù)查詢(1)簡單查詢【例3-14】查詢所有學(xué)生的數(shù)據(jù)。GETW(S)【例3-15】查詢所有被選修的課程號碼。GETW(SC.CNO)7/19/202378(2)條件查詢由冒號后面的邏輯表達式給出查詢條件,在表達式中可以使用如下三類運算符:①比較運算符:>,≥,<,≤,=等于,≠;②邏輯運算符:∧(與),∨(或),┐(非)③表示執(zhí)行次序的括號:()其中,比較運算符的優(yōu)先級高于邏輯運算符,可以使用()改變它們的優(yōu)先級。
【例3-16】查詢計算機系工資低于1000元的教師的姓名和工資。
GETW(T.TN,T.SAL):T.DEPT=‘計算機’∧T.SAL<1000
目標(biāo)表為教師關(guān)系T中的兩個屬性SN和SAL組成的屬性列表。7/19/202379(3)排序查詢【例3-17】查詢S3同學(xué)所選課程號及成績,并按成績降序排列。
GETW(SC.CNO,SC.SCORE):SC.SNO=‘S3’DOWNSC.SCOREDOWN表示降序,后面緊跟排序的屬性名。升序排列時使用UP。(4)定額查詢【例3-18】查詢一名男教師的教師號和姓名。
GETW(1)(T.TNO,T.TN):T.SEX=‘男’【例3-19】查詢一名男教師的教師號和姓名,并使他的年齡最小。
GETW(1)(T.TNO,T.TN):T.SEX=‘男’UPT.AGE7/19/202380(5)帶元組變量的查詢所謂的元組關(guān)系演算就是以元組變量作為謂詞變元的基本對象,在關(guān)系演算的查詢操作時,可以在相應(yīng)的關(guān)系上定義元組變量。元組變量代表關(guān)系中的元組,其取值是在所定義的關(guān)系范圍內(nèi)變化,所以也稱作范圍變量RangeVariable,一個關(guān)系可以設(shè)多個元組變量。
【例3-20】查詢S3同學(xué)所選課程號。
RANGESCXGETW(X.CNO):X.SNO=‘S3’7/19/202381(6)帶存在量詞的查詢【例3-21】查詢S5同學(xué)所選課程名。RANGESCXGETW(C.CN):X(C.CNO=X.CNO∧X.SNO=‘S5’)注意:操作條件中使用量詞時必須用元組變量?!纠?-22】查詢至少選修一門其課時數(shù)為85的課程的學(xué)生的姓名。RANGECCXSCSCXGETW(S.SN):SCX(SCX.SNO=S.SNO∧CX(CX.CNO=SCX.CNO∧CX.CT=85))【例3-23】查詢選修全部課程的學(xué)生姓名。RANGECCXSCSCXGET W(S.SN):CXSCX(SCX.SNO=S.SNO∧CX.CNO=SCX.CNO)7/19/202382(7)庫函數(shù)查詢庫函數(shù)也稱集函數(shù)。用戶在使用查詢語言時,經(jīng)常要作一些簡單的運算。如要統(tǒng)計某個關(guān)系中符合某一條件的元組數(shù),或某些元組在某個屬性上分量的和、平均值等等。在關(guān)系數(shù)據(jù)庫語言中提供了有關(guān)這類運算的標(biāo)準(zhǔn)函數(shù),增強了基本檢索能力?!纠?-24】求學(xué)號為S1學(xué)生的平均分。
GETW(AVG(SC.SCORE)):S.SNO=‘S1’【例3-25】求學(xué)校共有多少個系
GETW(COUNT(S.DEPT))COUNT函數(shù)自動消去重復(fù)行,可計算字段“DEPT”不同值的數(shù)目。7/19/202383表3-8常用庫函數(shù)表函數(shù)名稱功能AVG按列計算平均值TOTAL按列計算值的總和MAX求一列中的最大值MIN求一列中的最小值COUNT按列值計算元組個數(shù)7/19/2023842.數(shù)據(jù)更新更新操作包括修改、插入和刪除。(1)修改修改操作使用UPDATE語句實現(xiàn),具體操作分為以下三步:①讀數(shù)據(jù):使用HOLD語句將要修改的元組從數(shù)據(jù)庫中讀到工作空間中;②修改:利用宿主語言修改工作空間中元組的屬性;③送回:使用UPDATE語句將修改后的元組送回數(shù)據(jù)庫中。這里HOLD語句是帶上并發(fā)控制的GET語句?!纠?-26】把劉偉教師轉(zhuǎn)到信息系。
HOLDW(T.DEPT):T.TN=‘劉偉’
MOVE‘信息’TOW.DEPTUPDATEW7/19/202385(2)插入插入操作使用PUT語句實現(xiàn),具體操作分為以下兩步:①建立新元組:利用宿主語言在工作空間中建立新元組;②寫數(shù)據(jù):使用PUT語句將元組寫入到指定的關(guān)系中?!纠?-27】在SC表中插入一條選課記錄(S2,C3,85)。
MOVES2TOW.SNOMOVEC3TOW.CNOMOVE85TOW.SCOREPUTW(SC)PUT語句的作用是把工作空間W中的數(shù)據(jù)寫到數(shù)據(jù)庫中,此例即把已經(jīng)在工作空間建立的一條選課記錄寫入到選課關(guān)系SC中。注意:PUT語句只能對一個關(guān)系進行操作,在插入操作時,拒絕接受主鍵相同的元組。7/19/202386(3)刪除
ALPHA語言中的刪除操作不但可以刪除關(guān)系中的一些元組,還可以刪除一個關(guān)系。刪除操作使用DELETE語句實現(xiàn),具體操作分為以下兩步:①讀數(shù)據(jù):使用HOLD語句將要刪除的元組從數(shù)據(jù)庫中讀到工作空間中;②刪除:使用DELETE語句刪除該元組?!纠?-28】刪除學(xué)號為S6的學(xué)生的信息。HOLDW(S):S.SNO=‘S6’DELETEW【例3-29】刪除全部學(xué)生的信息。HOLDW(S)DELETEW7/19/2023877/19/2023887/19/2023897/19/202390關(guān)系代數(shù)運算都可以用等價的元組關(guān)系演算表達式表示。現(xiàn)以五種基本關(guān)系代數(shù)運算表達式為例,說明關(guān)系代數(shù)表達式與元組關(guān)系演算表達式的等價關(guān)系。(1)并(2)差(3)笛卡兒積7/19/202391關(guān)系運算的安全性是指對有限關(guān)系運算時要求不導(dǎo)致無限關(guān)系和無窮驗證。關(guān)系代數(shù)具有這種性質(zhì),但關(guān)系演算卻有一些反例。7/19/2023927/19/2023933.4.2域關(guān)系演算域關(guān)系演算是關(guān)系演算的另一種形式。域關(guān)系演算是以元組變量的分量即域變量作為謂詞變元的基本對象。域關(guān)系演算語言的典型代表是1975年由IBM公司約克城高級研究試驗室的M.M.Zloof提出的QBE語言,該語言于1978年在IBM370上實現(xiàn)。7/19/202394
QBE是QueryByExample的縮寫,也稱為示例查詢,它是一種很有特色的屏幕編輯語言,其特點如下:(1)以表格形式進行操作每一個操作都由一個或幾個表格組成,每一個表格都顯示在終端的屏幕上,用戶通過終端屏幕編輯程序以填寫表格的方式構(gòu)造查詢要求,查詢結(jié)果也以表格的形式顯示出來,所以它具有直觀和可對話的特點。(2)通過例子進行查詢通過使用一些實例,使該語言更易于為用戶接受和掌握。(3)查詢順序自由當(dāng)有多個查詢條件時,不要求使用者按照固定的思路和方式進行查詢,使用更加方便。7/1
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能門禁系統(tǒng)與訪客管理系統(tǒng)集成合同4篇
- 二零二五年度新材料研發(fā)項目擔(dān)保合同范本
- 2025版模具檢測與認證購銷合同4篇
- 2025年度農(nóng)機租賃服務(wù)與維修保障合同4篇
- 二零二五年度會議中心場地租賃合同示范文本4篇
- 二零二五年度塔吊司機勞動合同(安全責(zé)任書)
- 2025年度農(nóng)業(yè)生態(tài)保護補償機制合同范本2篇
- 2025年度鋼材國際貿(mào)易關(guān)稅減免申請合同
- 2025年度摩托車改裝件銷售及安裝服務(wù)合同7篇
- 二零二五年度幼兒托管班安全管理服務(wù)合同下載2篇
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識課件
- 干部職級晉升積分制管理辦法
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
- 2024年代理記賬工作總結(jié)6篇
- 電氣工程預(yù)算實例:清單與計價樣本
- VOC廢氣治理工程中電化學(xué)氧化技術(shù)的研究與應(yīng)用
- 煤礦機電設(shè)備培訓(xùn)課件
- 高考寫作指導(dǎo)議論文標(biāo)準(zhǔn)語段寫作課件32張
- 2021年普通高等學(xué)校招生全國英語統(tǒng)一考試模擬演練八省聯(lián)考解析
評論
0/150
提交評論