第2章 關(guān)系數(shù)據(jù)庫理論《數(shù)據(jù)庫原理及應(yīng)用》教學(xué)課件_第1頁
第2章 關(guān)系數(shù)據(jù)庫理論《數(shù)據(jù)庫原理及應(yīng)用》教學(xué)課件_第2頁
第2章 關(guān)系數(shù)據(jù)庫理論《數(shù)據(jù)庫原理及應(yīng)用》教學(xué)課件_第3頁
第2章 關(guān)系數(shù)據(jù)庫理論《數(shù)據(jù)庫原理及應(yīng)用》教學(xué)課件_第4頁
第2章 關(guān)系數(shù)據(jù)庫理論《數(shù)據(jù)庫原理及應(yīng)用》教學(xué)課件_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《數(shù)據(jù)庫原理及應(yīng)用》?精品課件合集03

關(guān)系的完整性01

關(guān)系代數(shù)的基本術(shù)語02關(guān)系模式與關(guān)系04

關(guān)系運(yùn)算目錄第2章關(guān)系數(shù)據(jù)庫理論關(guān)系數(shù)據(jù)庫的奠基人E.F.Codd,英國人,1923生于英格蘭中部波特蘭。第二次世界大戰(zhàn)時(shí)應(yīng)征入伍,在皇家空軍服役。大戰(zhàn)結(jié)束后,到英國牛津大學(xué)數(shù)學(xué)專業(yè)學(xué)習(xí),1963年獲得碩士學(xué)位,1965年又獲得博士學(xué)位。60年代后期開始數(shù)據(jù)庫研究,1970年E.F.Codd博士提出關(guān)系模型概念,他因此獲得1981年的ACM圖靈獎(jiǎng)。E.F.Codd博士關(guān)系數(shù)據(jù)庫之父美國工程院院士關(guān)系代數(shù)的定義關(guān)系理論是建立在集合代數(shù)理論基礎(chǔ)上的,有著堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ)。

定義1:域(Domain)是一組具有相同類型的值的集合。例:性別集合{男,女};正整數(shù)集合{1,2,3,……};姓名集合{張三,李四,王五};全體實(shí)數(shù)的集合等都可以稱為是域。關(guān)系代數(shù)的定義

定義2:笛卡爾積給定一組域D1,D2,…,Dn,

D1,D2,…,Dn的笛卡兒積為D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}笛卡兒積中每一個(gè)元素(d1,d2,…,dn)叫做一個(gè)n元組。兩個(gè)名詞:度(n):參與笛卡兒積的域的個(gè)數(shù)。

基:域中可取值的個(gè)數(shù)。

關(guān)系代數(shù)的定義例:設(shè)有域

D1=姓名集合(NAME)={王三,丁平};

D2=職業(yè)集合(JOB)={工人,農(nóng)民,商人};

D3=住址集合(ADDR)={北京,上海,廣州};則D1×D2×D3={問題:笛卡兒積的度為多少?笛卡兒積的基為多少?(王三,工人,北京),(王三,工人,上海),(王三,工人,廣州),(王三,農(nóng)民,北京),(王三,農(nóng)民,上海),(王三,農(nóng)民,廣州),(王三,商人,北京),(王三,商人,上海),(王三,商人,廣州),(丁平,工人,北京),(丁平,工人,上海),(丁平,工人,廣州),(丁平,農(nóng)民,北京),(丁平,農(nóng)民,上海),(丁平,農(nóng)民,廣州),(丁平,商人,北京),(丁平,商人,上海),(丁平,商人,廣州)}

關(guān)系代數(shù)的定義

定義3:關(guān)系

D1×D2×…×Dn的子集叫作在域D1,D2,

…,Dn上的關(guān)系,記為R(D1,D2,…,Dn)。

一般說來,只有笛卡兒積的子集才是有意義的。為什么?學(xué)號姓名年齡年級0104趙六2010101張三2020103王五1930102李四182關(guān)系代數(shù)的基本術(shù)語①記錄和屬性記錄是行,屬性是列,域是屬性的取值范圍。學(xué)號姓名年齡年級0104趙六2010101張三2020103王五1930102李四182

關(guān)系就是一張二維表。

一行稱為一個(gè)元組或一條記錄,一列叫一個(gè)屬性或一個(gè)字段。關(guān)系代數(shù)的基本術(shù)語②關(guān)系的碼(Key)

(或候選碼、鍵)。

如果一個(gè)屬性(或?qū)傩约希┑闹的芪ㄒ坏貥?biāo)識一個(gè)關(guān)系的元組而又不含有多余的屬性,則稱該屬性(或?qū)傩约希殛P(guān)系的碼(或候選碼,也稱鍵)。每個(gè)關(guān)系都有一個(gè)且只有一個(gè)主碼(PrimaryKey)。學(xué)號姓名年齡年級0104趙六2010101張三2020103王五1930102李四182關(guān)系代數(shù)的基本術(shù)語③外碼(ForeignKey)

如果某一個(gè)關(guān)系中的屬性(或?qū)傩约希┰诹硪粋€(gè)關(guān)系中是主碼,則稱該屬性(或?qū)傩约希┦峭獯a。

學(xué)號姓名所在系0101010201030104張三李四王五趙六計(jì)算機(jī)計(jì)算機(jī)計(jì)算機(jī)計(jì)算機(jī)課程號課程名學(xué)時(shí)數(shù)C01C02C03C04高等數(shù)學(xué)數(shù)據(jù)結(jié)構(gòu)操作系統(tǒng)數(shù)據(jù)庫100708060學(xué)號課程號成績01010101010201040104C01C02C04C04C039080908570學(xué)生關(guān)系課程關(guān)系學(xué)習(xí)成績關(guān)系外部碼外部碼主碼主碼關(guān)系模式

定義:

關(guān)系數(shù)據(jù)模型中的數(shù)據(jù)結(jié)構(gòu)就是關(guān)系模式,即是對關(guān)系的描述。關(guān)系模式通??梢院営洖椋?/p>

R(A1,A2,…,An)

R:關(guān)系名

A1,A2,…,An:屬性名

如:STUDENT(SNO,SNAME,SEX,SAGE,DEPT)或?qū)W生(學(xué)號,姓名,性別,年齡,系)關(guān)系的完整性約束類型說明實(shí)體完整性約束主鍵的值參照完整性約束外鍵的值用戶自定義完整性(域完整性)約束其他字段的值關(guān)系的完整性約束(1)實(shí)體完整性(PRIMARYKEY)規(guī)則:設(shè)屬性A是基本關(guān)系R的主屬性(碼的組成部分),則屬性A不能空值(NULL)和碼不能出現(xiàn)重復(fù)值。說明:實(shí)體完整性是針對基本關(guān)系的;本規(guī)則要求基本關(guān)系中的元組在組成碼屬性上不能有空值;現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(不取重復(fù)值)關(guān)系的完整性約束(2)參照(引用)完整性(FOREIGNKEY)規(guī)則:基本關(guān)系R中含有與另一個(gè)基本關(guān)系S的主碼相對應(yīng)的屬性組F(F稱為R的外碼),則對于R中的每個(gè)元組在F上的值必須為:

①或者取空值(F的每個(gè)屬性值均為空值);

②或者等于S中某個(gè)元組的主碼值

引用完整性約束是不同關(guān)系之間或同一關(guān)系的不同元組間的約束。

本規(guī)則要求不允許引用不存在的元組;關(guān)系的完整性約束例1:職工關(guān)系EMP(ENO,ENAME,DNO)

部門關(guān)系DEPT(DNO,DNAME)

在EMP中,DNO是外碼。EMP中每個(gè)元組在DNO

上的值允許有兩種可能:①取空值。這說明這個(gè)職工尚未分配到某個(gè)部門;

②若非空值,則DNO的值必須是DEPT中某個(gè)元組中的DNO值。表示此職工不可能分配到一個(gè)不存在的部門。關(guān)系的完整性約束職工號部門編號姓名…9801980298039804980501010203張三李四王五趙六錢七部門編號部門名稱…01020304經(jīng)理辦公室人事部公關(guān)部技術(shù)部職工表(EMP)部門表(DEPT)關(guān)系主碼外部關(guān)系碼關(guān)系的完整性約束例2:學(xué)生實(shí)體及其內(nèi)部的聯(lián)系

學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長)關(guān)系的完整性約束例3:選修(學(xué)號,課程號,成績)

“學(xué)號”和“課程號”可能的取值:(1)選修關(guān)系中的主屬性,不能取空值(2)只能取相應(yīng)被參照關(guān)系中已經(jīng)存在的主碼值關(guān)系的完整性約束(3)域完整性(用戶自定義完整性)規(guī)則:要求屬性值必須取自其對應(yīng)的值域。例:學(xué)生的性別只能是:‘男’和‘女’CONSTRAINTSXCHECK(性別IN(‘男’,‘女’)傳統(tǒng)的集合運(yùn)算定義1.

設(shè)給定兩個(gè)關(guān)系R和S,若滿足:具有相同的度n,且R中第i個(gè)屬性和S中第i個(gè)屬性必須來自同一個(gè)域,則說關(guān)系R和S是相容的。即:關(guān)系R和S有相同的度,即有相同的屬性個(gè)數(shù),且對應(yīng)的屬性的域相同。

傳統(tǒng)集合運(yùn)算的兩個(gè)關(guān)系必須是相容的。約定:大寫字母表示命名關(guān)系和關(guān)系的屬性;小寫字母表示元組。

傳統(tǒng)的集合運(yùn)算①并(Union)

關(guān)系R和S的并記為R∪S,結(jié)果仍為n度關(guān)系,由或?qū)儆赗或?qū)儆赟的元組組成。RSR∪S傳統(tǒng)的集合運(yùn)算②差(Minus)

關(guān)系R和S的差記為R-S,結(jié)果仍為n度關(guān)系,由屬于R而不屬于S的元組組成。RSR-S傳統(tǒng)的集合運(yùn)算③交(Intersect[??nt??sekt])

關(guān)系R和S的并記為R∩S,結(jié)果仍為n度關(guān)系,由既屬于R又屬于S的元組組成。RSR∩SR∩S=R–(R-S)廣義笛卡兒積

廣義笛卡兒積

R是一個(gè)n度關(guān)系,S是一個(gè)m度關(guān)系。關(guān)系R和S的廣義笛卡兒積記為R×S,其結(jié)果是(n+m)度的關(guān)系,結(jié)果中的元組是R中元組和S中元組連成的一串,前n個(gè)分量是R中的一個(gè)元組,后m個(gè)分量是S的一個(gè)元組。假定R中有元組(r1,r2,…,rn),S中有元組(s1,s2,…,sm),則結(jié)果中的元組為

(r1,r2,…,rn,s1,s2,…,sm)。若R有k1個(gè)元組,S有k2個(gè)元組,則R×S有k1×k2個(gè)元組。

廣義笛卡兒積例:ABCa1b1c1a1b2c2a2b2c1ABDa1b2c2a1b3c2a2b2c1RSABCA′B′Da1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c1R×S記錄個(gè)數(shù)9度數(shù)6專門的關(guān)系運(yùn)算①選擇(Select)σ(sigma)從一個(gè)關(guān)系中選出所有滿足指定條件的元組。即在給定關(guān)系中,從水平方向上選取符合給定條件的元組的子集。一般定義為:

σF(R)={t|t∈R∧F(t)=‘True’}

讀作關(guān)系R關(guān)于公式F的選擇運(yùn)算,表示從R中選擇那些滿足公式F的元組。

專門的關(guān)系運(yùn)算SNOSNAMESDEPTSAGE96001丁一計(jì)算機(jī)1996002王二計(jì)算機(jī)2096003張三數(shù)學(xué)2196004李四信息1996005劉五數(shù)學(xué)2096006趙六計(jì)算機(jī)22SCNOCNAMECTC1高等代數(shù)144C2程序設(shè)計(jì)100C3微機(jī)原理44C4數(shù)據(jù)結(jié)構(gòu)64C5編譯原理90C6操作系統(tǒng)32CSNOCNOGRADE96004C39596004C57096005C28196005C395SC例:設(shè)有學(xué)生-課程關(guān)系數(shù)據(jù)庫,如下所示:專門的關(guān)系運(yùn)算例1:求計(jì)算機(jī)系的學(xué)生。σSDEPT=‘計(jì)算機(jī)’(S)例2:求計(jì)算機(jī)系叫的張三學(xué)生。σSDEPT=‘計(jì)算機(jī)’^SNAME=‘張三’(S)SNOSNAMESDEPTSAGE96001丁一計(jì)算機(jī)1996002王二計(jì)算機(jī)2096003張三數(shù)學(xué)2196004李四信息1996005劉五數(shù)學(xué)2096006趙六計(jì)算機(jī)22專門的關(guān)系運(yùn)算②投影(Projection)∏(pi)

從一個(gè)關(guān)系出發(fā)構(gòu)造其垂直子集的運(yùn)算,即結(jié)果關(guān)系由運(yùn)算分量中的某些列組成,并消去重復(fù)的元組。一般定義為:關(guān)系R在域列A上的投影:∏A(R)={t[A]|t∈R}

∏表示投影運(yùn)算符;A為R中的屬性列,R是運(yùn)算對象的關(guān)系,寫在∏之后用()括起來。專門的關(guān)系運(yùn)算注意:

因?yàn)橥队斑\(yùn)算的屬性表不一定包含關(guān)系的碼,經(jīng)投影運(yùn)算后,結(jié)果中很可能出現(xiàn)重復(fù)元組,消除重復(fù)元組后所得關(guān)系的元組將小于等于原關(guān)系的元組數(shù)。如果屬性列中包含碼,則不可能出現(xiàn)重復(fù)元組,投影運(yùn)算后所得關(guān)系的元組與原關(guān)系一樣。

投影不僅會取消一些列,也可能取消某些行。但在實(shí)際的SQL實(shí)現(xiàn)時(shí)要靠關(guān)鍵字來完成。專門的關(guān)系運(yùn)算例1:求學(xué)生關(guān)系S在學(xué)生姓名和所在系這兩個(gè)屬性上的投影?!荢NAME,SDEPT(S)例2:求有多少個(gè)系?!荢DEPT(S)SNOSNAMESDEPTSAGE96001丁一計(jì)算機(jī)1996002王二計(jì)算機(jī)2096003張三數(shù)學(xué)2196004李四信息1996005劉五數(shù)學(xué)2096006趙六計(jì)算機(jī)22專門的關(guān)系運(yùn)算③連接(Join)θ連接

一般定義為:

R∞SAθB

∞(Infinity)表示連接運(yùn)算符;θ通常為比較運(yùn)算符,但還有其他一些運(yùn)算符,AθB是條件表達(dá)式。含義是:從R×S的廣義笛卡兒積中選取R關(guān)系在A屬性組上的值與S關(guān)系在B屬性組上值滿足比較運(yùn)算θ的那些元組。專門的關(guān)系運(yùn)算ABCa12ca24da34cDEd4e10ABCDEa12cd4a12ce10a24de10a34ce10RSR∞SB<E專門的關(guān)系運(yùn)算自然連接(NaturalJoin)

是一種特殊而常用的連接。自然連接只當(dāng)兩個(gè)關(guān)系含有公共屬性時(shí)才能進(jìn)行。

若關(guān)系R和關(guān)系S具有公共屬性組B,則自然連接定義為:

R∞S含義是:

從兩個(gè)關(guān)系的笛卡兒積中選取公共屬性值相等的元組,且在非公共屬性和一組公共屬性上投影而形成的結(jié)果關(guān)系。專門的關(guān)系運(yùn)算ABCa1b1c2a2b2c1a3b1c3a4b2c5a5b3c1BCDEb1c2d1e1b3c1d2e2b1c3d3e3b1c2d4e4b3c1d5e5ABCDEa1b1c2d1e1a1b1c2d4e4a3b1c3d3e3a5b3c1d2e2a5b3c1d5e5RSAR.BR.CS.BS.CDEa1b1c2b1c2d1e1a1b1c2b1c2d4e4a3b1c3b1c3d3e3a5b3c1b3c1d2e2a5b3c1b3c1d5e5R.BC=S.BCR∞SR∞S專門的關(guān)系運(yùn)算比較:等值連接與自然連接

等值連接是在笛卡兒積的基礎(chǔ)上選擇滿足兩個(gè)關(guān)系中給定屬性值相等的元組的集合。自然連接是在兩個(gè)關(guān)系的相同屬性組上的等值連接,并且自然連接要在結(jié)果中把重復(fù)的屬性去掉,而等值連接則不必。

自然連接要求兩個(gè)關(guān)系中相等的分量必須是公共屬性組,而等值連接則不需要。專門的關(guān)系運(yùn)算

外連接

如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),這種連接就叫做外連接(OUTERJOIN)。左外連接

如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接(LEFTOUTERJOIN或LEFTJOIN)

右外連接

如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接(RIGHTOUTERJOIN或RIGHTJOIN)。專門的關(guān)系運(yùn)算關(guān)系R和關(guān)系S

如下所示:專門的關(guān)系運(yùn)算關(guān)系R和關(guān)系S的外連接:專門的關(guān)系運(yùn)算專門的關(guān)系運(yùn)算關(guān)系代數(shù)示例例1:求選修‘C2’課程的學(xué)生號碼。∏SNO(σCNO=‘C2’(SC))例2:求同時(shí)選修‘C3’和‘C5’課程的學(xué)生號碼。∏SNO(σCNO=‘C3’(SC))∩

∏SNO(σCNO=‘C5’(SC)

SNOCNOGRADE96004C39596004C57096005C28196005C395SC專門的關(guān)系運(yùn)算例3:求至少選修一門學(xué)時(shí)數(shù)為90的課程的學(xué)生姓名。∏SNAME(σCT=90(C)∞∏SNO,CNO(SC)∞∏SNO,SNAME(S))SNOSNAMESDEPTSAGE96001丁一計(jì)算機(jī)1996002王二計(jì)算機(jī)2096003張三數(shù)學(xué)2196004李四信息1996005劉五數(shù)學(xué)2096006趙六計(jì)算機(jī)22CNOCNAMECTC1高等代數(shù)144C2程序設(shè)計(jì)100C3微機(jī)原理44C4數(shù)據(jù)結(jié)構(gòu)64C5編譯原理90C6操作系統(tǒng)32SNOCNOGRADE96004C39596004C57096005C28196005C395專門的關(guān)系運(yùn)算例4:求選修數(shù)據(jù)結(jié)構(gòu)或操作系統(tǒng)學(xué)生的學(xué)號和姓名。

∏SNO,SNAME(σSNAME=‘?dāng)?shù)據(jù)結(jié)構(gòu)’VSNAME=‘操作系統(tǒng)’(C)∞∏SNO,CNO(SC)∞S)SNOSNAMESDEPTSAGE96001丁一計(jì)算機(jī)1996002王二計(jì)算機(jī)2096003張三數(shù)學(xué)2196004李四信息1996005劉五數(shù)學(xué)2096006趙六計(jì)算機(jī)22CNOCNAMECTC1高等代數(shù)144C2程序設(shè)計(jì)100C3微機(jī)原理44C4數(shù)據(jù)結(jié)構(gòu)64C5編譯原理90C6操作系統(tǒng)32SNOCNOGRADE96004C39596004C57096005C28196005C395專門的關(guān)系運(yùn)算∏CNO(C)-∏CNO(σSNAME=‘王’(S)∞SC))例5求‘王’同學(xué)不學(xué)的課程的課程號。例6將新課程元組(‘C9’,‘物理’,144)插入到課程關(guān)系C中。C∪{(‘C9’,‘物理’,144)}專門的關(guān)系運(yùn)算例7:將學(xué)號96004,選修課程號為‘C5’的成績改為85分。分解執(zhí)行為三步:

第一步:取出元組,并命名為V

V=σSNO=‘96004’∧CNO=‘C5’(SC)

第二步:刪除這個(gè)元組

SC-V

第三步:插入新元組

SC∪{(‘96004’,‘C5’,85)}SNOCNOGRADE96004C39596004C57096005C28196005C395專門的關(guān)系運(yùn)算④除(Division)一般定義為:設(shè)關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域。除運(yùn)算記為R÷S:專門的關(guān)系運(yùn)算

象集給定一個(gè)關(guān)系R(X,Z),其中X,Z為屬性組。定義當(dāng)t[X]=x時(shí),x在R中的象集為:

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

表示R中屬性組X上值為x的諸元組在Z上分量的集合。專門的關(guān)系運(yùn)算A={a1,a2,a3}a1在R中的象集

Ba1={B1,B2,B3},a2在R中的象集

Ba2={B2,B3},a3在R中的象集

Ba3={B1,B3}例

已知R(A,B),求Ba象集ABa

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論