數(shù)據(jù)庫原理與應(yīng)用課件第2章關(guān)系模型_第1頁
數(shù)據(jù)庫原理與應(yīng)用課件第2章關(guān)系模型_第2頁
數(shù)據(jù)庫原理與應(yīng)用課件第2章關(guān)系模型_第3頁
數(shù)據(jù)庫原理與應(yīng)用課件第2章關(guān)系模型_第4頁
數(shù)據(jù)庫原理與應(yīng)用課件第2章關(guān)系模型_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

*2.1關(guān)系2.2關(guān)系操作2.3關(guān)系代數(shù)2.4關(guān)系運(yùn)算2.5關(guān)系完整性2.6小結(jié)*提出關(guān)系模型的是美國IBM公司的E.F.Codd埃德加·弗蘭克·科德(EdgarFrankCodd,1923-2003)是密執(zhí)安大學(xué)哲學(xué)博士,IBM公司研究員,被譽(yù)為“關(guān)系數(shù)據(jù)庫之父”,并因?yàn)樵跀?shù)據(jù)庫管理系統(tǒng)的理論和實(shí)踐方面的杰出貢獻(xiàn)于1981年獲圖靈獎(jiǎng)。1970年提出關(guān)系數(shù)據(jù)模型、關(guān)系代數(shù)和關(guān)系演算的概念E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》1972年提出了關(guān)系的第一、第二、第三范式1974年提出了關(guān)系的BC范式*2.1關(guān)系2.1.1關(guān)系的形式化定義2.1.2關(guān)系的基本性質(zhì)2.1.3碼2.1.4關(guān)系模型的三級(jí)體系結(jié)構(gòu)2.1.5關(guān)系模型的形式定義及優(yōu)點(diǎn)2.1.6關(guān)系與關(guān)系數(shù)據(jù)庫*2.1.1

關(guān)系的形式化定義

用二維表格的形式表示實(shí)體以及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型,這個(gè)二維表被稱為關(guān)系,這是一種非形式化的定義。關(guān)系模型是建立在集合代數(shù)理論的基礎(chǔ)上的,因此,這里從集合論角度給出關(guān)系的形式化定義。首先引入域和笛卡爾積的概念。*重要概念

⒈域(Domain)

2.笛卡爾積(CartesianProduct)

*⒈域(Domain)域是一組具有相同數(shù)據(jù)類型的值的集合,又稱為值域,用D表示。域中所包含的值的個(gè)數(shù)稱為域的基數(shù),用m表示。例如:

D1=姓名集合={于文軒,王美},m1=2;

D2=性別集合={男,女},m2=2;

D3=系名集合={計(jì)算機(jī)科學(xué)系,軟件工程系,網(wǎng)絡(luò)工程系},m3=3。

在關(guān)系模型中用域來表示屬性的取值范圍,在上面例子中,D1,D2,D3為域名,分別表示學(xué)生關(guān)系中姓名、性別和系名的集合。*2.笛卡爾積(CartesianProduct)笛卡爾積給定一組域D1,D2,…,Dn,這些域中可以有相同的。

D1,D2,…,Dn的笛卡爾積為:

D1×D2×…×Dn={(d1,d2,…,dn)|di

Di,i=1,2,…,n}

注意:(1)所有域的所有取值的一個(gè)組合(2)不能重復(fù)*

元組(Tuple)笛卡爾積中每一個(gè)元素(d1,d2,…,dn)叫作一個(gè)n元組(n-tuple)或簡(jiǎn)稱元組(Tuple)

分量(Component)笛卡爾積元素(d1,d2,…,dn)中的每一個(gè)值di叫作一個(gè)分量

*基數(shù)(Cardinalnumber)若Di(i=1,2,…,n)為有限集,其基數(shù)為mi(i=1,2,…,n),則D1×D2×…×Dn的基數(shù)M為:笛卡爾積的表示方法笛卡爾積可表示為一個(gè)二維表表中的每行對(duì)應(yīng)一個(gè)元組,表中的每列對(duì)應(yīng)一個(gè)域一個(gè)簡(jiǎn)單的例子:D1={a,b,c};(集合元素個(gè)數(shù):3)D2={e,f};(集合元素個(gè)數(shù):2)D1xD2={(a,e),(a,f),(b,e),(b,f),(c,e),(c,f)}(其中(a,e)是一個(gè)元組,a和e分別該元組的兩個(gè)分量)

10笛卡爾積(D1xD2)的基數(shù):3x2=6(各個(gè)域元素個(gè)數(shù)的連乘)用二維表表示該笛卡爾積:

笛卡爾積的每一個(gè)元組都來自一個(gè)不同的域*3.關(guān)系(Relation)關(guān)系笛卡爾積D1×D2×…×Dn的子集稱為定義在域D1,D2,…,Dn上的關(guān)系,表示為R(D1,D2,…,Dn),R表示關(guān)系的名字,n稱為關(guān)系的目或度(Degree)。當(dāng)n=1時(shí),稱該關(guān)系為單元關(guān)系。當(dāng)n=2時(shí),稱該關(guān)系為二元關(guān)系。*◎如果一個(gè)關(guān)系的元組個(gè)數(shù)是無限的,則稱該關(guān)系是無限關(guān)系;如果一個(gè)關(guān)系的元組個(gè)數(shù)是有限的,則稱該關(guān)系是有限關(guān)系。一般僅處理有限關(guān)系。◎關(guān)系是笛卡爾積的有限子集,所以關(guān)系也是一個(gè)二維表,表中的每行對(duì)應(yīng)一個(gè)元組,表中的每列對(duì)應(yīng)一個(gè)域?!蛴捎诒碇械牧锌梢允窍嗤挠?,為了加以區(qū)別,每列必須起一個(gè)名字,稱為屬性,n目關(guān)系必須有n個(gè)屬性,屬性的名字惟一,屬性的取值范圍Di(i=1,2,…,n)稱為值域。17

三類關(guān)系基本關(guān)系(基本表或基表)實(shí)際存在的表,是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示查詢表查詢結(jié)果對(duì)應(yīng)的表視圖表由基本表或其他視圖表導(dǎo)出的表,是虛表,不對(duì)應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù)*2.1.2

關(guān)系的基本性質(zhì)

在關(guān)系模型中,對(duì)關(guān)系作了種種限制,關(guān)系具有如下性質(zhì):(1)每一個(gè)分量都必須是不可再分的數(shù)據(jù)項(xiàng)。(2)每一列中的分量必須是同一類型的數(shù)據(jù),來自同一個(gè)域。(3)每列必須有不同的屬性名,不同的列可以來自同一個(gè)域。(4)列的順序可以是任意。(5)任意兩個(gè)元組不能完全相同。(6)行的順序可以是任意。*1.候選碼(Candidatekey)若關(guān)系中的某一屬性組的值能唯一地標(biāo)識(shí)一個(gè)元組,則稱該屬性組為候選碼簡(jiǎn)單的情況:候選碼只包含一個(gè)屬性2.全碼(All-key)最極端的情況:關(guān)系模式的所有屬性組是這個(gè)關(guān)系模式的候選碼,稱為全碼(All-key)2.1.3碼*3.主碼若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼(Primarykey)4.主屬性候選碼的諸屬性稱為主屬性(Primeattribute)不包含在任何侯選碼中的屬性稱為非主屬性(Non-Primeattribute)或非碼屬性(Non-keyattribute)*1.關(guān)系模式關(guān)系模式是對(duì)關(guān)系的描述,關(guān)系模式是型,關(guān)系是值。關(guān)系模式的形式化定義為:R(U,D,dom,F(xiàn))其中:U為組成該關(guān)系的屬性名的集合,D為屬性組U中屬性所來自的域的集合,dom為屬性向域的映象集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合2.1.4關(guān)系模型的三級(jí)體系結(jié)構(gòu)*關(guān)系模式可以形式化地表示為:

R(U,D,DOM,F(xiàn))

R:關(guān)系名

U

:組成該關(guān)系的屬性名集合

D

:屬性組U中屬性所來自的域

DOM:屬性向域的映象集合

F

:屬性間的數(shù)據(jù)依賴關(guān)系集合*關(guān)系模式通??梢院?jiǎn)記為

R(U)或R(A1,A2,…,An)R:關(guān)系名A1,A2,…,An:屬性名注意:域名及屬性向域的映象常常直接說明為屬性的類型、長(zhǎng)度*2.關(guān)系子模式關(guān)系子模式是用戶所需或感興趣數(shù)據(jù)的結(jié)構(gòu)的描述,其中包括這些數(shù)據(jù)來自哪些模式和應(yīng)滿足哪些條件。例如,在學(xué)生選課數(shù)據(jù)庫中,學(xué)生最關(guān)心自己所選課程的成績(jī)、學(xué)分等信息。這時(shí)就需要用到成績(jī)子模式(學(xué)號(hào),姓名,課程名,成績(jī),學(xué)分)。子模式對(duì)應(yīng)的數(shù)據(jù)來源于學(xué)生關(guān)系、選課關(guān)系和課程關(guān)系,在構(gòu)造時(shí)應(yīng)滿足學(xué)生關(guān)系和選課關(guān)系的元組在學(xué)號(hào)上的值相等,選課關(guān)系和課程關(guān)系的元組在課程號(hào)上的值相等。*3.存儲(chǔ)模式存儲(chǔ)模式描述了關(guān)系是如何在物理存儲(chǔ)設(shè)備上存儲(chǔ)的。關(guān)系存儲(chǔ)時(shí)的基本組織方式是記錄??梢杂蒙⒘蟹椒ɑ蛩饕椒▽?shí)現(xiàn)。如果關(guān)系中元組數(shù)目少(100以內(nèi)),則可以用堆文件方式實(shí)現(xiàn)。此外,還可以對(duì)任意的屬性集建立輔助索引*1.關(guān)系模型的形式定義◎關(guān)系模型是由數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操縱以及三類完整性規(guī)則三部分組成?!蛟陉P(guān)系模型中,現(xiàn)實(shí)世界中的實(shí)體及實(shí)體間的聯(lián)系都用關(guān)系表示?!蜿P(guān)系模型基本的數(shù)據(jù)結(jié)構(gòu)是關(guān)系。在用戶看來,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表?!蜿P(guān)系模型提供一組完備的高級(jí)關(guān)系運(yùn)算,以支持對(duì)數(shù)據(jù)庫的各種操作。關(guān)系運(yùn)算分為關(guān)系代數(shù)和關(guān)系演算等三類?!蜿P(guān)系模型的三類完整性規(guī)則(實(shí)體完整性、參照完整性、用戶定義的完整性)。2.1.5關(guān)系模型的形式定義及優(yōu)點(diǎn)*2.關(guān)系模型的優(yōu)點(diǎn)◎關(guān)系模型建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的?!蜿P(guān)系模型的數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰,用戶易懂易用?!蜿P(guān)系模型中的數(shù)據(jù)操作是集合操作,操作對(duì)象和操作結(jié)果都是關(guān)系,即若干元組的集合?!蜿P(guān)系模型的存取路徑對(duì)用戶透明的?!蚩梢灾苯犹幚矶鄬?duì)多的聯(lián)系。*

◎在關(guān)系模型中,實(shí)體以及實(shí)體之間的聯(lián)系都是用關(guān)系來表示的。例如學(xué)生實(shí)體、課程實(shí)體、學(xué)生與課程之間的多對(duì)多聯(lián)系都可以分別用一個(gè)關(guān)系表示。這樣,在學(xué)校教務(wù)管理中,三個(gè)關(guān)系的集合構(gòu)成了一個(gè)學(xué)生—課程關(guān)系數(shù)據(jù)庫。

◎關(guān)系數(shù)據(jù)庫采用的是關(guān)系模型,所有關(guān)系模式的集合構(gòu)成了關(guān)系數(shù)據(jù)庫的模式,即關(guān)系數(shù)據(jù)庫型的描述。關(guān)系數(shù)據(jù)庫的值是這些關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合,通常稱之為關(guān)系數(shù)據(jù)庫。2.1.6關(guān)系與關(guān)系數(shù)據(jù)庫*

關(guān)系數(shù)據(jù)庫的型與值關(guān)系數(shù)據(jù)庫的型:

關(guān)系數(shù)據(jù)庫模式

對(duì)關(guān)系數(shù)據(jù)庫的描述。包括:若干域的定義在這些域上定義的若干關(guān)系模式關(guān)系數(shù)據(jù)庫的值:

關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合,簡(jiǎn)稱為關(guān)系數(shù)據(jù)庫*2.2關(guān)系操作2.2.1關(guān)系操作的特點(diǎn)2.1.2關(guān)系運(yùn)算分類*2.2.1關(guān)系操作的特點(diǎn)

關(guān)系模型與其它數(shù)據(jù)模型相比最大的特點(diǎn)是數(shù)據(jù)操縱語言。例如它每次提供給用戶的不是一個(gè)元組,而是一個(gè)元組集;它是非過程化的,用戶只要指出做什么,不要指出怎么做;它既可以獨(dú)立使用,也可以與高級(jí)語言結(jié)合起來使用。

*2.2.2關(guān)系運(yùn)算分類

關(guān)系數(shù)據(jù)庫操縱語言的基礎(chǔ)是關(guān)系運(yùn)算。關(guān)系運(yùn)算分為兩類:一類是關(guān)系代數(shù),用對(duì)關(guān)系的運(yùn)算來表達(dá)查詢要求的方式。另一類是關(guān)系演算,用謂詞來表達(dá)查詢要求的方式。關(guān)系演算按謂詞變?cè)幕緦?duì)象是元組變量還是域變量又分為元組關(guān)系演算和域關(guān)系演算。

*

關(guān)系代數(shù)語言

①用對(duì)關(guān)系的運(yùn)算來表達(dá)查詢要求

②代表:ISBL關(guān)系演算語言:

用謂詞來表達(dá)查詢要求元組關(guān)系演算語言謂詞變?cè)幕緦?duì)象是元組變量代表:APLHA,QUEL②謂詞變?cè)幕緦?duì)象是域變量域關(guān)系演算語言

代表:QBE具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語言代表:

SQL(StructuredQueryLanguage)

*2.3關(guān)系代數(shù)2.3.1傳統(tǒng)的集合運(yùn)算2.3.2專門的關(guān)系運(yùn)算2.3.3關(guān)系代數(shù)表達(dá)式的優(yōu)化2.3.4關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例集合運(yùn)算符∪-∩×并差交笛卡爾積比較運(yùn)算符>≥<≤=<>大于大于等于小于小于等于等于不等于運(yùn)算符含義運(yùn)算符含義

關(guān)系代數(shù)運(yùn)算符概述41.并(Union)R和S具有相同的目n(即兩個(gè)關(guān)系都有n個(gè)屬性)相應(yīng)的屬性取自同一個(gè)域R∪S

仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成

R∪S={t|t

R∨t

S}72.3.1傳統(tǒng)的集合運(yùn)算2.差(Difference)R和S具有相同的目n相應(yīng)的屬性取自同一個(gè)域R-S

仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成

R-S={t|t

R∧t

S}93.交(Intersection)R和S具有相同的目n相應(yīng)的屬性取自同一個(gè)域R∩S仍為n目關(guān)系,由既屬于R又屬于S的元組組成

R∩S={t|t

R∧t

S} R∩S=R

–(R-S)114.笛卡爾積(CartesianProduct)嚴(yán)格地講應(yīng)該是廣義的笛卡爾積

R:n目關(guān)系,k1個(gè)元組S:m目關(guān)系,k2個(gè)元組13R×S

列:(n+m)列元組的集合;元組的前n列是關(guān)系R的一個(gè)元組后m列是關(guān)系S的一個(gè)元組行:k1×k2個(gè)元組R×S={tr

ts|tr

R∧ts

S}【例】如圖2-1(a)、(b)所示的兩個(gè)關(guān)系R和S是同類關(guān)系,(c)為R與S的并,(d)為R與S的差,(e)為R與S的交,(f)為R與S的廣義笛卡爾積。1172.3.2專門的關(guān)系運(yùn)算1.投影(Projection)

投影運(yùn)算符的含義從R中選擇出若干屬性列組成新的關(guān)系

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

R} A:R中的屬性列

27【例】查詢學(xué)生的學(xué)號(hào)、姓名和系名。πsno,sname,sept(S)或π1,2,5(S)11【例】查詢選修了課程的學(xué)生學(xué)號(hào),即查詢關(guān)系SC在學(xué)號(hào)上的投影。πsno(SC)2.選擇(Selection)

選擇又稱為限制(Restriction)選擇運(yùn)算符的含義在關(guān)系R中選擇滿足給定條件的諸元組

σF(R)={t|t

R∧F(t)='真'}F:選擇條件,是一個(gè)邏輯表達(dá)式25【例】查詢計(jì)算機(jī)科學(xué)系的全體學(xué)生。σSdept=‘計(jì)算機(jī)科學(xué)系’(S)或σ5=‘計(jì)算機(jī)系’(S)11【例】查詢軟件工程系的女生。σssex=‘女’∧Sdept=‘軟件工程系’(S)或σ3=‘女’∧4=‘軟件工程系’(S)3.連接(Join)1)連接也稱為θ連接2)連接運(yùn)算的含義從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組

RS={|tr

R∧ts

S∧tr[A]θts[B]}A和B:分別為R和S上度數(shù)相等且可比的屬性組θ:比較運(yùn)算符

連接運(yùn)算從R和S的廣義笛卡爾積R×S中選?。≧關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組

AθBtrts293)兩類常用連接運(yùn)算等值連接(equijoin)什么是等值連接θ為“=”的連接運(yùn)算稱為等值連接等值連接的含義從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:

RS={|tr

R∧ts

S∧tr[A]=ts[B]}A=Btrts30

自然連接是一種特殊的等值連接兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組在結(jié)果中把重復(fù)的屬性列去掉自然連接的含義

R和S具有相同的屬性組B

R

S={|tr

R∧ts

S∧tr[B]=ts[B]}

trts314.自然連接(Naturaljoin)【例】設(shè)圖(a)和(b)分別為關(guān)系R和關(guān)系S,(c)為小于連接R∞S(A<D)的結(jié)果,(d)為等值R∞S([3]=[2])的結(jié)果,(e)為自然連接R∞S的結(jié)果。11外連接如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),這種連接就叫做外連接(OUTERJOIN)。左外連接(LEFTOUTERJOIN或LEFTJOIN)如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接右外連接(RIGHTOUTERJOIN或RIGHTJOIN)如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接。375.外連接(Outerjoin)上例中外連接、左外連接和右外連接386.除(Division)

給定關(guān)系R(X,Y)

和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運(yùn)算得到一個(gè)新的關(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]40圖(a)和(b)分別為關(guān)系R和關(guān)系S,圖(c)為R÷S的結(jié)果。38在關(guān)系R中,(A,B)可以取三個(gè)值{(2,b),(9,a),(8,b)}。其中:(2,b)的象集為{(c,d),(e,f),(d,f)}(9,a)的象集為{(c,d),(e,f)}(8,b)的象集為{(e,f)}S在(C,D)上的投影為{(c,d),(e,f)}顯然,(2,b)的象集和(9,a)的象集包含了S在(C,D)上的投影,所以R÷S={(2,b),(9,a)}40*2.3.3關(guān)系代數(shù)表達(dá)式的優(yōu)化

查詢優(yōu)化不僅在于使用戶只需注重查詢的正確表達(dá)上,無需考慮如何最好地表達(dá)查詢以獲得較高效率,而且在于系統(tǒng)比用戶程序的“優(yōu)化”做得更好。查詢的總目標(biāo)是選擇有效的策略,求得給定關(guān)系表達(dá)式的值,使查詢代價(jià)較小。查詢優(yōu)化的方法分為代數(shù)優(yōu)化和物理優(yōu)化。代數(shù)優(yōu)化是改變查詢語句中操作的次序和組合,不涉及底層的存取路徑,對(duì)于一個(gè)查詢語句,可能存在多個(gè)存取方案,它們的執(zhí)行效率不同,僅僅進(jìn)行代數(shù)優(yōu)化是不夠的,物理優(yōu)化就是要選擇高效合理的操作算法或存取路徑,求得更好的查詢計(jì)劃。

*2.3.4關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例【例】查詢沒有選修課程的學(xué)生學(xué)號(hào)。πSno(S)-πSno(SC)={20418006,20418007})【例】查詢軟件工程系學(xué)生的學(xué)號(hào)和姓名。

πSno,Sname(σSdept=‘軟件工程系’(S))={(20418003,王美),(20418004,劉方超)}*【例】查詢選修了數(shù)據(jù)結(jié)構(gòu)課程的學(xué)生學(xué)號(hào)和姓名。πSno,Sname(σcname=‘?dāng)?shù)據(jù)結(jié)構(gòu)’(C)∞SC∞πSno,Sname(S))={(20418001,于文軒),(20418002,吳廣斌)}或πSname(πSno(σcname=‘?dāng)?shù)據(jù)結(jié)構(gòu)’(C∞SC)∞πSno,Sname(S))【例】查詢王美同學(xué)沒有選修的課程號(hào)。πCno(C)-πCno(σSname=‘王美’(S)∞SC)={001,004,006,007}*【例】查詢至少選修兩門課程的學(xué)生學(xué)號(hào)。πSno(σ1=4∧2≠5(SC×SC)={20418001,20418002,20418003}【例】查詢選修課程包含學(xué)號(hào)為20418002的學(xué)生所修課程的學(xué)生學(xué)號(hào)。πSno,Cno(SC)÷πCno(σSno=‘20418002’(SC))={20418001}*【例】查詢選修了全部課程的學(xué)生學(xué)號(hào)和姓名。πSno,Cno(SC)÷πCno(C)∞πSno,Sname(S)={20418001,于文軒}【例】查詢學(xué)生王美選修的課程名及成績(jī)。πCname,Grade(σSname=‘王美’(S∞SC∞C))*2.4關(guān)系演算2.4.1元組關(guān)系運(yùn)算ALPHA語言2.4.2元組關(guān)系運(yùn)算2.4.3域關(guān)系運(yùn)算*2.4.1ALPHA語言ALPHA語言的基本格式是:<操作符><工作空間>(<目標(biāo)表達(dá)>[:<操作條件>])下面以學(xué)生-課程數(shù)據(jù)庫為例,說明ALPHA語言的使用。1.數(shù)據(jù)查詢(1)簡(jiǎn)單查詢【例】查詢所有學(xué)生的數(shù)據(jù)。GETW(S)【例】查詢所有被選修的課程號(hào)碼。GETW(SC.Cno)27(2)條件查詢【例】查詢選修了課程號(hào)為004且成績(jī)?cè)?0分以上的學(xué)生的學(xué)號(hào)。GETW(SC.Sno):SC.Cno='004'∧SC.grade>80

(3)排序查詢【例】查詢學(xué)號(hào)為20418001同學(xué)所選課程號(hào)及成績(jī),并按成績(jī)的降序排列。GETW(SC.Cno,SC.grade):SC.Sno='20418001'DOWNSC.grade27(4)定額查詢【例】查詢一名軟件工程系學(xué)生的學(xué)號(hào)和姓名。GETW(1)(S.Sno,S.Sname):S.Sdept=‘軟件工程系’【例】查詢選修了課程號(hào)為004且成績(jī)最低的學(xué)生的學(xué)號(hào)。GETW(SC.Sno):SC.Cno='004'UPSC.grade

(5)帶元組變量的查詢【例】查詢20418001同學(xué)所選的課程號(hào)。RANGESCXGETW(X.Cno):X.Sno=‘20418001’27(6)帶存在量詞的查詢【例】查詢20418001同學(xué)所選的課程名。RANGESCXGETW(C.Cname):X(C.Cno=X.Cno∧X.Sno=‘20418001’)(7)帶有多個(gè)關(guān)系的表達(dá)式的查詢【例】查詢成績(jī)?yōu)?0分以上的學(xué)生名與課程名。RANGESCSCXGETW(S.Sname,C.Cname):SCX(SCX.Grade≥90∧SCX.Sno=S.Sno∧Course.Cno=SCX.Cno)27(8)帶全稱量詞的查詢【例】查詢選修全部課程的學(xué)生姓名。RANGECCXSCSCXGETW(S.Sname):CXSCX(SCX.Sno=S.Sno∧CX.Cno=SCX.Cno)(9)使用聚集函數(shù)查詢【例】查詢學(xué)號(hào)為20418001學(xué)生的平均成績(jī)。GETW(AVG(SC.grade)):Score.Sno=‘20418001’【例】查詢學(xué)生表中有多少個(gè)系。GETW(COUNT(S.Sdept))COUNT函數(shù)自動(dòng)消去重復(fù)行,計(jì)算屬性“Sdept”不同值的數(shù)目272.數(shù)據(jù)更新(1)插入操作【例】在SC表中插入一條選課元組(‘20418005’,‘004’,80)。MOVE‘20418005’TOW.SNOMOVE‘004’TOW.CNOMOVE85TOW.GRADEPUTW(SC)27(2)刪除操作【例】刪除學(xué)號(hào)為20418005的學(xué)生選課。HOLDW(SC):SC.Sno=‘20418005’DELETEW【例】刪除全部學(xué)生的選課信息。HOLDW(SC)DELETEW27(3)修改操作【例】將田玲同學(xué)轉(zhuǎn)到軟件工程系。HOLDW(S.Sdept):S.Sname=‘田玲’MOVE‘軟件工程系’TOS.SdeptUPDATEW27*2.4.2元組關(guān)系演算

元組關(guān)系演算是以元組變量作為謂詞變?cè)幕緦?duì)象,其形式化定義如下:{t|P(t)}表示所有使謂詞P為真的元組集合,其中t為元組變量,其變化范圍是一個(gè)關(guān)系,如果元組變量前有“全稱”或“存在”量詞,則稱其為約束變量,否則稱為自由變量。下面用元組關(guān)系演算表達(dá)式表示下列查詢?!纠坎樵冘浖こ滔档娜w學(xué)生。{t|S(t)^t[5]='軟件工程系'}27【例】查詢選修了數(shù)據(jù)結(jié)構(gòu)課程的學(xué)生學(xué)號(hào)和姓名。{t|(u)(v)(w)(S(u)^SC(v)^C(w)^u[1]=v[1]^v[2]=w[1]^w[2]='數(shù)據(jù)結(jié)構(gòu)'

^t[1]=u[1]^t[2]=u[2]}$$$*2.4.3域關(guān)系演算

域關(guān)系演算是以域變量作為謂詞變?cè)幕緦?duì)象,其形式化定義如下:{<t1,t2,…,tn>|P(t1,t2,…,tn)}其中t1,t2,…,tn分別是元組變量t的各個(gè)分量的域變量,其變化范圍是某個(gè)值域,P是域域演算公式??梢韵裨M演算一樣定義域演算的原子公式和公式?!纠坎樵兂煽?jī)大于85分的學(xué)生學(xué)號(hào)、課程號(hào)和成績(jī)。{<t1,t2,t3>|SC(t1,t2,t3)^t3>85}27【例】查詢選修了002課程且成績(jī)大于90分的學(xué)生學(xué)號(hào)、課程號(hào)和成績(jī)。{<t1,t2,t3>|SC(t1,t2,t3)^t2='002'^t3>85}$$$*2.5關(guān)系完整性2.5.1實(shí)體完整性2.5.2參照完整性2.5.3用戶定義的完整性*實(shí)體完整性和參照完整性:

關(guān)系模型必須滿足的完整性約束條件稱為關(guān)系的兩個(gè)不變性,應(yīng)該由關(guān)系系統(tǒng)自動(dòng)支持用戶定義的完整性:

應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束*2.5.1實(shí)體完整性

實(shí)體完整性規(guī)則(EntityIntegrity)若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值

*實(shí)體完整性規(guī)則的說明(1)實(shí)體完整性規(guī)則是針對(duì)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論