關(guān)系數(shù)據(jù)庫理論基礎(chǔ)_第1頁
關(guān)系數(shù)據(jù)庫理論基礎(chǔ)_第2頁
關(guān)系數(shù)據(jù)庫理論基礎(chǔ)_第3頁
關(guān)系數(shù)據(jù)庫理論基礎(chǔ)_第4頁
關(guān)系數(shù)據(jù)庫理論基礎(chǔ)_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章

關(guān)系數(shù)據(jù)庫理論基礎(chǔ)關(guān)系數(shù)據(jù)庫應用數(shù)學方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。最早將這類方法用于數(shù)據(jù)處理的是1962年CODASYL發(fā)表的“信息代數(shù)”,之后有1968年DavidChild在7090機上實現(xiàn)的集合論數(shù)據(jù)結(jié)構(gòu),但系統(tǒng)地、嚴格地提出關(guān)系模型的是美國IBM公司的E.F.Codd.30多年來,關(guān)系數(shù)據(jù)庫系統(tǒng)的研究取得了輝煌的成就。關(guān)系方法從實驗室走向了社會,涌現(xiàn)出許多性能良好的商品化關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),如著名的DB2,Oracle,Ingres,Sybase,Informix等。數(shù)據(jù)庫的應用領(lǐng)域迅速擴大。9/24/20241周口師范學院計算機科學系本書第2、3、4、5、6章將集中討論關(guān)系數(shù)據(jù)庫的有關(guān)問題。其中,第2章介紹關(guān)系模型的基本概念,即關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作和關(guān)系的完整性;第3、4章介紹關(guān)系數(shù)據(jù)庫的標準語言SQL;第5章介紹關(guān)系系統(tǒng)查詢優(yōu)化;第6章關(guān)系規(guī)范化。這是關(guān)系數(shù)據(jù)庫的理論基礎(chǔ),也是關(guān)系數(shù)據(jù)庫系統(tǒng)邏輯設(shè)計的工具。9/24/20242周口師范學院計算機科學系2.1關(guān)系模型概述關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系模型有關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。9/24/20243周口師范學院計算機科學系一、單一的數(shù)據(jù)結(jié)構(gòu)——關(guān)系關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常單一。在關(guān)系模型中,現(xiàn)實世界的實體以及實體之間的各種聯(lián)系均用關(guān)系來表示。在用戶看來,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表。9/24/20244周口師范學院計算機科學系二、關(guān)系操作關(guān)系模型給出了關(guān)系操作的能力,但不對RDBMS語言給出具體的語法要求。關(guān)系模型中常用的關(guān)系操作包括:選擇(Select)、投影(Project)、連接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等查詢(Query)操作和增加(Insert)、刪除(Delete)、修改(Update)等更新操作兩大部分。查詢的表達能力是其中最主要的部分。關(guān)系操作的特點是集合操作方式,即操作的對象和操作的結(jié)果都是集合。這種操作方式也稱為一次一集合(set-at-a-time)的方式。相應地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式則為一次一記錄(record-at-a-time)的方式。9/24/20245周口師范學院計算機科學系早期的關(guān)系操作能力通常用代數(shù)方式或邏輯方式來表達,分別稱為關(guān)系代數(shù)和關(guān)系演算。關(guān)系代數(shù)是用對關(guān)系的運算來表達查詢的方式。關(guān)系演算是用謂詞來表達查詢要求的方式。關(guān)系演算又可按謂詞變元的基本對象是元組變量還是域變量分為元組關(guān)系演算和域關(guān)系演算。關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算三種語言在表達能力上是完全等價的。關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算均是抽象的查詢語言,這些抽象的語言與具體的DBMS中實現(xiàn)的實際語言并不完全一樣。單它們能用作評估實際系統(tǒng)中查詢語言能力的標準或基礎(chǔ)。實際的查詢語言除了提供關(guān)系代數(shù)或關(guān)系演算的功能外,還提供了許多附加功能,例如集函數(shù)、關(guān)系賦值、算術(shù)運算等。9/24/20246周口師范學院計算機科學系關(guān)系語言是一種高度非過程化的語言,用戶不必請求DBA為其建立特殊的存取路徑,存取路徑的選擇由DBMS的優(yōu)化機制來完成,此外,用戶不必求助于循環(huán)結(jié)構(gòu)就可以完成數(shù)據(jù)操作。另外還有一種介于關(guān)系代數(shù)和關(guān)系演算之間的語言SQL(StructuredQueryLanguage)。SQL不僅具有豐富的查詢功能,而且具有數(shù)據(jù)定義和數(shù)據(jù)控制功能,是集查詢、DDL、DML和DCL于一體的關(guān)系數(shù)據(jù)語言。它充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點和優(yōu)點,是關(guān)系數(shù)據(jù)庫的標準語言。9/24/20247周口師范學院計算機科學系因此,關(guān)系數(shù)據(jù)語言可以分為三類:關(guān)系數(shù)據(jù)語言關(guān)系代數(shù)語言關(guān)系演算語言域關(guān)系演算語言元組關(guān)系演算語言具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言這些關(guān)系數(shù)據(jù)語言的共同特點是,語言具有完備的表達能力,是非過程化的集合操作語言,功能強,能夠嵌入高級語言中使用。9/24/20248周口師范學院計算機科學系三、關(guān)系的三類完整性約束關(guān)系模型允許定義三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。其中實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,應該由關(guān)系系統(tǒng)自動支持。用戶定義的完整性是應用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束。下面將分別介紹關(guān)系模型的三個方面。9/24/20249周口師范學院計算機科學系2.2關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)2.2.1關(guān)系的數(shù)學定義1.域(Domain)域:是一組具有相同數(shù)據(jù)類型的值集合。例如:{自然數(shù)},{男,女},{0,1}等都可以是域?;鶖?shù):域中數(shù)據(jù)的個數(shù)稱為域的基數(shù)。域被命名后用如下方法表示:D1={白亞春,陳韜,王雪蓮},表示姓名的集合,基數(shù)是3;D2={計算機系,電子系}9/24/202410周口師范學院計算機科學系2.笛卡爾積(CartesianProduct)給定一組域D1,D2,…,Di,…,Dn(可以有相同的域),則笛卡爾積定義為:D1×D2×…×Di×…×Dn={(d1,d2,…,di,…,dn)∣di∈Di,i=1,2,…,n}D1×

D2={(陳韜,計算機系),(陳韜,電子系),(王雪蓮,計算機系),(王雪蓮,電子系),(白亞春,計算機系),(白亞春,電子系)}其中每個(d1,d2,…,di,…,dn)叫做元組,元組中的每一個值di叫做分量,di必須是Di中的一個值。顯然,笛卡爾積的基數(shù)就是構(gòu)成該積所有域的基數(shù)累乘積,若Di(i=1,2,…,n)為有限集合,其基數(shù)為mi(i=1,2,…,n),則D1×

D2×

…×Di

×

…×Dn笛卡爾積的基數(shù)M為:9/24/202411周口師范學院計算機科學系該笛卡爾積的基數(shù)是M=m1m2=3*2=6,即該笛卡爾積共有6個元組,它可組成一張二維表姓名系別陳韜計算機系陳韜電子系王雪蓮計算機系王雪蓮電子系白亞春計算機系白亞春電子系9/24/202412周口師范學院計算機科學系3.關(guān)系(Relation)關(guān)系:笛卡爾積D1×

D2×

…×

Di

×

…×

Dn的子集R稱作在域D1,D2,…,Dn上的關(guān)系,記作:R(D1,D2,…,Di,…,Dn)其中:R為關(guān)系名,n為關(guān)系的度或目(Degree),Di是域組中的第i個域名.當n=1時,稱該關(guān)系為單元關(guān)系;當n=2時,稱該關(guān)系為二元關(guān)系;以此類推,關(guān)系中有n個域,稱該關(guān)系為n元關(guān)系。把列稱為屬性(Attribute)。一般來說,一個取自笛卡爾積的子集才有意義。

9/24/202413周口師范學院計算機科學系關(guān)系可以分為三種類型:基本關(guān)系(又稱基本表):是實際存在的表,它是實際存儲數(shù)據(jù)的邏輯表示;查詢表:是對基本表進行查詢后得到的結(jié)果表;視圖表:是由基本表或其它視圖導出的表,是一個虛表,不對應實際存儲的數(shù)據(jù)。

姓名系別陳韜計算機系王雪蓮電子系白亞春計算機系9/24/202414周口師范學院計算機科學系2.2.2關(guān)系的性質(zhì)1.列是同質(zhì)的。

2.關(guān)系中行的順序、列的順序可以任意互換,不會改變關(guān)系的意義。

學號姓名性別出生日期所在系0022102王雪蓮女1980-9-15電子系計算機系白亞春男1981-1-2500513090052201陳韜男計算機系1981-5-60052217袁更旭男1980-12-8計算機系9/24/202415周口師范學院計算機科學系3.關(guān)系中的任意兩個元組不能相同。

4、關(guān)系中的元組分量具有原子性,即每一個分量都必須是不可分的數(shù)據(jù)項。

學號姓名性別出生日期所在系0022102王雪蓮女1980-9-15電子系0051309白亞春男1981-1-25計算機系0051309白亞春男1981-1-25計算機系0052217袁更旭男1980-12-8計算機系9/24/202416周口師范學院計算機科學系2.3關(guān)系的完整性2.3.1鍵1.候選鍵(Candidatekey)若關(guān)系中的某一屬性組的值能惟一地標識一個元組,則稱該屬性組為候選鍵。2.主鍵(Primarykey)若一個關(guān)系中有多個候選鍵,則選定一個為主鍵。9/24/202417周口師范學院計算機科學系3.主屬性和非主屬性(PrimeAttribute)andNon-primeAttribute)

包含在任何一個候選鍵中的屬性稱為主屬性。而不包含在任何一個候選鍵中的屬性稱為非主屬性4.外鍵(Foreignkey)

設(shè)F是基本關(guān)系R的一個或一組屬性,但不是R的鍵(主鍵或候選鍵),如果F與基本關(guān)系S的主鍵K相對應,則稱F是R的外鍵,并稱R為參照關(guān)系,S為被參照關(guān)系。

9/24/202418周口師范學院計算機科學系學號姓名性別出生日期所在系0022102王雪蓮女1980-9-15電子系0051309白亞春男1981-1-25計算機系0052201陳韜男1981-5-6計算機系0052217袁更旭男1980-12-8計算機系課程號學號成績C201002210275C505005130995C508005220192C5060052217809/24/202419周口師范學院計算機科學系2.3.2實體完整性實體完整性規(guī)則:關(guān)系中的主鍵不能為空值(Null)。空值就是“不知道”或“無意義”2.3.3參照完整性參照完整性規(guī)則:表的外鍵必須是另一個表主鍵的有效值,或者是空值。9/24/202420周口師范學院計算機科學系學號姓名性別出生日期所在系0022102王雪蓮女1980-9-15電子系0051309白亞春男1981-1-25計算機系0052201陳韜男1981-5-6計算機系0052217袁更旭男1980-12-8計算機系課程號學號成績C201002210275C505005130995C508A10286992C5060052217809/24/202421周口師范學院計算機科學系2.3.4用戶定義完整性用戶按照實際的數(shù)據(jù)庫運行環(huán)境要求,對關(guān)系中的數(shù)據(jù)所定義的約束條件,它反映的是某一具體應用所涉及的數(shù)據(jù)必須要滿足的條件。

9/24/202422周口師范學院計算機科學系2.4關(guān)系代數(shù)關(guān)系代數(shù)是一種抽象的查詢語言,是關(guān)系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達方式,它是用對關(guān)系的運算來表達查詢的。關(guān)系代數(shù)的運算對象是關(guān)系,運算結(jié)果亦為關(guān)系。關(guān)系運算用到的運算符包括四類:集合運算符、專門的關(guān)系運算符、算術(shù)比較符和邏輯運算符9/24/202423周口師范學院計算機科學系關(guān)系代數(shù)的運算按運算符的不同可分為傳統(tǒng)的集合運算和專門的關(guān)系運算兩類。其中傳統(tǒng)的集合運算將關(guān)系看作元組的集合,其運算是從關(guān)系的“水平”方向即行的角度來進行。而專門的關(guān)系運算不僅涉及行而且涉及列。比較運算符和邏輯運算符是用來輔助專門的關(guān)系運算符進行操作的9/24/202424周口師范學院計算機科學系2.4.1傳統(tǒng)的集合運算傳統(tǒng)的集合運算是二目運算,包括并、交、差、廣義笛卡兒積四種運算。當集合運算并、交、差用于關(guān)系時,要求參與運算的兩個關(guān)系必須是相容的,即兩個關(guān)系的度數(shù)一致,并且關(guān)系相應屬性的性質(zhì)必須一致。9/24/202425周口師范學院計算機科學系設(shè)關(guān)系R和關(guān)系S具有相同的目n(即兩個關(guān)系都有n個屬性),且相應的屬性取自同一個域,則可以定義并交差運算如下:1.并并:是將兩個關(guān)系中的所有元組構(gòu)成新的關(guān)系,并運算的結(jié)果中必須消除重復值。關(guān)系R與S的并運算記作:R∪S={t|t∈R∨t∈S}。

其結(jié)果仍為n目關(guān)系,有屬于R或?qū)儆赟的元組組成.9/24/202426周口師范學院計算機科學系2.交交:將兩個關(guān)系中的公共元組構(gòu)成新的關(guān)系。關(guān)系R與S的交運算記作:

R∩S={t|t∈R∧t∈S}

其結(jié)果仍為n目關(guān)系,有屬于R且屬于S的元組組成。3.差差:運算結(jié)果是由屬于一個關(guān)系并且不屬于另一個關(guān)系的元組構(gòu)成的新關(guān)系,就是從一個關(guān)系中減去另一個關(guān)系。關(guān)系R與S的差運算記作:

R-S={t|t∈R∧t∈S}

其結(jié)果仍為n目關(guān)系,有屬于R而不屬于S的所有元組組成。9/24/202427周口師范學院計算機科學系4.廣義笛卡兒積(ExtendedCartesianProduct)

設(shè)有兩個n,m目的關(guān)系R,S,則R和S的廣義笛卡兒積R×S是一個(m+n)目的元組的集合,每個元組的前n個分量是R的一個元組,后m個分量是S的一個元組。關(guān)系R和關(guān)系S的廣義笛卡兒積運算記作:R×S={trts|tr∈R∧ts∈S}

傳統(tǒng)集合運算舉例:P40、419/24/202428周口師范學院計算機科學系2.4.2專門的關(guān)系運算專門的關(guān)系運算包括選擇、投影、連接、除等。為了敘述的方便,先引入幾個記號:(1)設(shè)關(guān)系模式為R(A1,A2,…,An)。它的一個關(guān)系設(shè)為R。t∈R表示t是R的一個元組,t[Ai]則表示元組t中相應于屬性Ai的一個分量。(2)若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik

是A1,A2,…,An

中的一部分,則A稱為屬性列或域列。t[Ai]=(t[Ai1],t[Ai2],…,t[Aik])表示元組t在屬性列A上諸分量的集合,A則表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的屬性組。(3)R為n目關(guān)系,S為m目關(guān)系。tr∈R,ts∈S

trts

稱為元組的連接。它是一個n+m列的元組,前n個分量為R中的一個n元組。后m個分量為S中的一個m元組。

9/24/202429周口師范學院計算機科學系(4)給定一個關(guān)系R(X,Z),X和Z為屬性組,定義,當t[X]=x時,x在R中的象集為:

Zx={t[Z]|t∈R,t[X]=x}

它表示R中屬性組X上值為x的諸元素在Z上分量的集合。下面給出這些關(guān)系運算的定義:9/24/202430周口師范學院計算機科學系1.選擇(Selection)選擇:是按照給定條件從指定的關(guān)系中挑選出滿足條件的元組構(gòu)成新的關(guān)系?;蛘哒f,選擇運算的結(jié)果是一個表的行的子集。記作:

σF(R)={t|t∈R∧F(t)=“真”}其中F是表示選擇條件,它是一個邏輯表達式,取邏輯值“真”或“假”。邏輯表達式F由邏輯運算符?,∧,∨連接各算術(shù)表達式組成,算術(shù)表達式的基本形式為:X1

θY1

其中θ表示比較運算符,它可以是<,≤,>,≥,=或≠。X1,Y1等是屬性名,或為常量,或為簡單函數(shù);屬性名也可以用它的序號來代替。選擇運算實際上是從關(guān)系R中選取使邏輯表達式F為真的元組,這是從行的角度進行的運算。

9/24/202431周口師范學院計算機科學系2.投影(Projection)投影:是從指定的關(guān)系中挑選出某些屬性構(gòu)成新的關(guān)系?;蛘哒f,選擇運算的結(jié)果是一個表的列的子集。記作:

πA(R)={t[A]|t∈R}

其中A為R的屬性列。投影操作是從列的角度進行的運算,投影的結(jié)果將取消由于取消了某些列而產(chǎn)生的重復元組。9/24/202432周口師范學院計算機科學系3.連接(Join)連接:連接運算是按照給定條件,把滿足條件的各關(guān)系的所有元組,按照一切可能組合成新的關(guān)系?;蛘哒f,連接運算的結(jié)果是從兩關(guān)系的廣義笛卡爾積中選取屬性間滿足一定條件的元組。記作:RS={trts|tr∈R∧ts∈S∧tr[A]θ

ts[B]}

σAθB(R×S)其中A和B分別為R和S上度數(shù)相等且可比的屬性組。θ

是比較運算符。連接運算從R和S的廣義笛卡爾積R×S中選?。≧關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組AθB9/24/202433周口師范學院計算機科學系連接運算中有兩種最為重要也最為常用的連接,一種是等值連接,另一種是自然連接。等值連接:

θ為“=”的連接運算稱為等值連接。它從R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組,即等值連接為:

RS={trts|

tr∈R∧ts∈S∧tr[A]

=

ts[B]}

π

R∪S(σr.A1=s.B1∧r.A2=s.B2∧…

∧r.An=s.Bn(R×S))自然連接:當連接的兩關(guān)系有相同的屬性名時,稱這種連接為自然連接,并在結(jié)果中去掉重復列。它是等值連接的一個特例。即若R和S具有相同的屬性組,則記作:

RS={trts|

tr∈R∧ts∈S∧tr[B]=

ts[B]}A=B9/24/202434周口師范學院計算機科學系4.除(Division)給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關(guān)系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].

除操作是同時從行和列角度進行運算。9/24/202435周口師范學院計算機科學系例:設(shè)關(guān)系R,S分別為下圖中的(a)和(b)所示,R÷S的結(jié)果為(c)

在關(guān)系R中,A可以取四個值{a1,a2,a3,a4}。其中:

a1的象集為{(b1,c2),(b2,c3),(b2,c1)}a2的象集為{(b3,c7),(b2,c3)}a3的象集為{(b4,c6)}a4的象集為{(b6,c6)}S在(B,C)上的投影為{(b1,c2),(b2,c1),(b2,c3)}顯然只有a1的象集(B,C)a1包含了S在(B,C)屬性組上的投影,所以RS={a1}9/24/202436周口師范學院計算機科學系A(chǔ)BCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2Aa1RSR÷Scba9/24/202437周口師范學院計算機科學系學號Sno姓名Sname性別Ssex年齡Sage系別Sdept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19ISStudent(a)設(shè)有一個學生-課程數(shù)據(jù)庫,包括學生關(guān)系Student課程關(guān)系Course和選修關(guān)系SC。如下圖示9/24/202438周口師范學院計算機科學系課程號Cno課程名Cname先行課Cpno學分Ccredit1數(shù)據(jù)庫542數(shù)學2

溫馨提示

  • 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

提交評論