第2章關(guān)系數(shù)據(jù)庫_第1頁
第2章關(guān)系數(shù)據(jù)庫_第2頁
第2章關(guān)系數(shù)據(jù)庫_第3頁
第2章關(guān)系數(shù)據(jù)庫_第4頁
第2章關(guān)系數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第2章關(guān)系數(shù)據(jù)庫2關(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)系完整性約束三要素組成。在關(guān)系數(shù)據(jù)庫設(shè)計(jì)中,為使其數(shù)據(jù)模型合理可靠、簡(jiǎn)單實(shí)用,需要使用關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)化設(shè)計(jì)理論。本章首先介紹關(guān)系數(shù)據(jù)庫的根本概念,關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系數(shù)據(jù)庫操作及關(guān)系數(shù)據(jù)庫完整性等內(nèi)容;然后講述函數(shù)依賴的概念及分類、常見的幾種范式、關(guān)系標(biāo)準(zhǔn)化理論及方法。3關(guān)系數(shù)據(jù)結(jié)構(gòu)

關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡(jiǎn)單。在關(guān)系數(shù)據(jù)模型中,現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(lián)系均用關(guān)系來表示。在用戶看來,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表。42.1.1關(guān)系的定義和性質(zhì)關(guān)系就是一張二維表格,但并不是任何二維表都叫關(guān)系,我們不能把日常生活中所用的任何表格都當(dāng)成一個(gè)關(guān)系直接存放到數(shù)據(jù)庫里。

1.關(guān)系的數(shù)學(xué)定義(1)域:一組具有相同數(shù)據(jù)類型的值的集合。(2)笛卡爾積:設(shè)D1,D2,…,Dn為任意域,定義D1,D2,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}。5例如兩個(gè)域:D1=動(dòng)物集合={貓,狗,豬}D2=食物集合={魚,骨頭,白菜}那么D1與D2的笛卡爾積為:D1×D2={(貓,魚)(狗,魚)(豬,魚)(貓,骨頭)(狗,骨頭)(豬,骨頭)(貓,白菜)(狗,白菜)(豬,白菜)}。(3)關(guān)系:D1×D2×…×Dn的任意一個(gè)子集叫做D1×D2×…×Dn上的一個(gè)關(guān)系〔Relation〕,用R(D1,D2,…,Dn)表示?!财渲?,R表示關(guān)系名,n表示關(guān)系的目或度、元〕62.1.1關(guān)系的定義和性質(zhì)關(guān)系數(shù)據(jù)庫要求其中的關(guān)系必須是具有以下性質(zhì)的。〔1〕在同一個(gè)關(guān)系中,同一個(gè)列的數(shù)據(jù)必須是同一種數(shù)據(jù)類型,〔2〕在同一個(gè)關(guān)系中,不同的列的數(shù)據(jù)可以是同一種數(shù)據(jù)類型,但各屬性的名稱都必須是互不相同。〔3〕同一個(gè)關(guān)系中,任意兩個(gè)元組都不能完全相同。7〔4〕在一個(gè)關(guān)系中,列的次序無關(guān)緊要。即列的排列順序是不分先后的?!?〕在一個(gè)關(guān)系中,元組的位置無關(guān)緊要。即排行不分先后,可以任意交換兩行的位置?!?〕關(guān)系中的每個(gè)屬性必須是單值,即不可再分,這就要求關(guān)系的結(jié)構(gòu)不能嵌套。這是關(guān)系應(yīng)滿足的最根本的條件。8例如,有這樣一個(gè)學(xué)生復(fù)合表如下:學(xué)號(hào)姓名性別系編號(hào)成績(jī)程序設(shè)計(jì)英語高數(shù)2003002張三男017787862003025李四女026989762005023劉明男037984822004033王曉女036690769上述表格就不是關(guān)系,應(yīng)對(duì)其進(jìn)行結(jié)構(gòu)上的修改,才能成為數(shù)據(jù)庫中的關(guān)系。對(duì)于該復(fù)合表,只要把可以把它轉(zhuǎn)化成一個(gè)關(guān)系,即學(xué)生成績(jī)關(guān)系〔學(xué)號(hào),姓名,性別,系編號(hào),程序設(shè)計(jì),英語,高數(shù)〕;也可以轉(zhuǎn)化成兩個(gè)關(guān)系,即學(xué)生關(guān)系〔學(xué)號(hào),姓名,性別,系編號(hào)〕和成績(jī)關(guān)系〔學(xué)號(hào),程序設(shè)計(jì),英語,高數(shù)〕。10學(xué)號(hào)姓名性別系編號(hào)2003002張三男012003025李四女022005023劉明男032004033王曉女03

學(xué)生表

11學(xué)號(hào)程序設(shè)計(jì)英語高數(shù)2003002778786200302569897620050237984822004033669076成績(jī)表12所以,關(guān)系是一種標(biāo)準(zhǔn)化了的二維表格;是一個(gè)屬性數(shù)目相同的元組的集合。集合中的元素是元組,每個(gè)元組的屬性數(shù)目應(yīng)該相同。在關(guān)系數(shù)據(jù)模型中,實(shí)體以及實(shí)體之間的聯(lián)系都是用關(guān)系來表示的,它是通過關(guān)系當(dāng)中的冗余屬性〔一般是主碼和外碼的關(guān)系〕來實(shí)現(xiàn)實(shí)體之間的聯(lián)系。上例中學(xué)生關(guān)系和成績(jī)關(guān)系就是通過“學(xué)號(hào)〞屬性實(shí)現(xiàn)的一對(duì)一聯(lián)系,即一個(gè)學(xué)生只有一行成績(jī),而一行成績(jī)也只屬于一個(gè)學(xué)生。132.1.2關(guān)系數(shù)據(jù)庫1、關(guān)系模式關(guān)系數(shù)據(jù)庫中,關(guān)系模式〔RelationSchema〕是型,關(guān)系是值;關(guān)系模式是對(duì)關(guān)系的描述。因此關(guān)系模式必須指出這個(gè)元組集合的結(jié)構(gòu),即它由哪些屬性構(gòu)成,這些屬性來自哪些域,以及屬性與域之間的映象關(guān)系。14關(guān)系的描述稱為關(guān)系模式〔RelationSchema〕。一個(gè)關(guān)系模式應(yīng)當(dāng)是一個(gè)五元組。關(guān)系模式可以形式化地表示為: R〔U,D,dom,F(xiàn)〕其中:R是關(guān)系名;U是組成該關(guān)系的屬性名集合;D是屬性組U中屬性所來自的域;dom是屬性間域的映象集合;F是屬性間的數(shù)據(jù)依賴關(guān)系集合15關(guān)系模式通??梢院?jiǎn)記為:

R(U)或R(A1,A2,…,An)

其中:R是關(guān)系名,A1,A2,…,An為屬性名,域名及屬性間域的映象,常常直接說明為屬性的類型、長(zhǎng)度。16學(xué)號(hào)姓名性別年齡所在系000101王蕭男17計(jì)算機(jī)系000207李云虎男18物理系010302郭敏女18數(shù)學(xué)系010408高紅女20數(shù)學(xué)系020309王睿男19美術(shù)系020506路旭青女21美術(shù)系【例2-1】學(xué)生情況表,寫出其對(duì)應(yīng)的關(guān)系模式。學(xué)生情況表學(xué)生情況表的關(guān)系模式可以描述為:學(xué)生情況表〔學(xué)號(hào),姓名,性別,年齡,所在系〕17關(guān)系實(shí)際上就是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容。也就是說,關(guān)系模式是型,關(guān)系是它的值。關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動(dòng)態(tài)的、隨時(shí)間不斷變化的,因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫中的數(shù)據(jù)。但在實(shí)際中,人們常常把關(guān)系模式和關(guān)系統(tǒng)稱為關(guān)系。182、關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫就是采用關(guān)系模型的數(shù)據(jù)庫。在一個(gè)給定的應(yīng)用領(lǐng)域中,所有實(shí)體及實(shí)體之間聯(lián)系的關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫的型也稱為關(guān)系數(shù)據(jù)庫模式,是對(duì)關(guān)系數(shù)據(jù)庫的描述,它包括假設(shè)干域的定義以及在這些域上定義的假設(shè)干關(guān)系模式。關(guān)系數(shù)據(jù)庫的值是這些關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合,通常稱為關(guān)系數(shù)據(jù)庫。192.2關(guān)系的完整性數(shù)據(jù)完整性是指關(guān)系模型中數(shù)據(jù)的正確性與一致性。關(guān)系模型允許定義三類完整性約束:實(shí)體完整性、參照完整性和用戶自定義的完整性約束。201、實(shí)體完整性規(guī)那么(EntityIntegrityRule)實(shí)體完整性規(guī)那么要求關(guān)系的主碼中屬性不能取空值。例如,“學(xué)生情況表〞中的“學(xué)號(hào)〞屬性不能為空。關(guān)系模型必須遵守實(shí)體完整性規(guī)那么的原因:(1)現(xiàn)實(shí)世界中的實(shí)體和實(shí)體之間都是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。相應(yīng)地,關(guān)系模型中以主碼作為唯一性標(biāo)識(shí)。(2)空值就是“不知道〞或“無意義〞的值。主碼中屬性取空值,就說明存在某個(gè)不可標(biāo)識(shí)的實(shí)體,這與第(1)條矛盾。212、參照完整性規(guī)那么(ReferenceIntegrityRule)設(shè)F是根本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系R的碼,如果F與根本關(guān)系S的主碼Ks相對(duì)應(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)系,即自身參照。22目標(biāo)關(guān)系S的主碼Ks和參照關(guān)系的外碼F必須定義在同一個(gè)〔或一組〕域上。參照完整性規(guī)那么就是定義外碼與主碼之間的引用規(guī)那么。參照完整性規(guī)那么:假設(shè)屬性〔或?qū)傩越M〕F是根本關(guān)系R的外碼,它與根本關(guān)系S的主碼Ks相對(duì)應(yīng)〔根本關(guān)系R和S可能是相同的關(guān)系〕,那么對(duì)于R中每個(gè)元組在F上的值必須為:或者取空值〔F的每個(gè)屬性值均為空值〕;或者等于S中某個(gè)元組的主碼值。23【例2-2】“學(xué)生〞實(shí)體和“系〞實(shí)體可以用下面的關(guān)系表示,其中主碼用下劃線標(biāo)識(shí)。學(xué)生〔學(xué)號(hào),姓名,性別,年齡,系號(hào)〕系〔系號(hào),系名,系主任〕學(xué)生關(guān)系的“系號(hào)〞與系關(guān)系的主碼“系號(hào)〞相對(duì)應(yīng),因此,“系號(hào)〞屬性是學(xué)生關(guān)系的外碼,是系關(guān)系的主碼。這里系關(guān)系是被參照關(guān)系,學(xué)生關(guān)系為參照關(guān)系。學(xué)生關(guān)系中的每個(gè)元組的“系號(hào)〞屬性只能取下面兩類值:空值或系關(guān)系中“系號(hào)〞已經(jīng)存在的值。243、用戶定義的完整性規(guī)那么用戶定義的完整性規(guī)那么由用戶根據(jù)實(shí)際情況對(duì)數(shù)據(jù)庫中數(shù)據(jù)的內(nèi)容進(jìn)行的規(guī)定,也稱為域完整性規(guī)那么。通過這些規(guī)那么限制數(shù)據(jù)庫只接受符合完整性約束條件的數(shù)據(jù)值,不接受違反約束條件的數(shù)據(jù),從而保證數(shù)據(jù)庫的中數(shù)據(jù)的有效性和可靠性。例如,學(xué)生表中的性別數(shù)據(jù)只能是男和女,選課表中的成績(jī)數(shù)據(jù)為1到100之間等。25數(shù)據(jù)完整性的作用就是要保證數(shù)據(jù)庫中的數(shù)據(jù)是正確的。通過在數(shù)據(jù)模型中定義實(shí)體完整性規(guī)那么、參照完整性規(guī)那么和用戶定義完整性規(guī)那么,數(shù)據(jù)庫管理系統(tǒng)將檢查和維護(hù)數(shù)據(jù)庫中數(shù)據(jù)的完整性。262.3關(guān)系運(yùn)算關(guān)系代數(shù)是以關(guān)系為運(yùn)算對(duì)象的一組高級(jí)運(yùn)算的集合;關(guān)系代數(shù)是一種抽象的查詢語言,是關(guān)系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達(dá)方式。

關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系。27關(guān)系代數(shù)中的操作可以分為兩類:傳統(tǒng)的集合運(yùn)算:并、差、交、笛卡兒積。專門的關(guān)系運(yùn)算:投影〔對(duì)關(guān)系進(jìn)行垂直分割〕、選擇〔水平分割〕、連接〔關(guān)系的結(jié)合〕、除法〔笛卡兒積的逆運(yùn)算〕等。在兩類集合運(yùn)算中,還將用到兩類輔助操作符:(1)比較運(yùn)算符:>、>=、<、<=、=、<>。(2)邏輯運(yùn)算符:∨〔或〕、∧〔與〕、┐〔非〕。282.3.1傳統(tǒng)的集合運(yùn)算1、笛卡兒積〔CartesianProduct〕設(shè)關(guān)系R和S的元數(shù)〔屬性個(gè)數(shù)〕分別為r和s,定義R和S的笛卡兒積是一個(gè)〔r+s〕元的元組集合,每個(gè)元組的前r個(gè)分量〔屬性值〕來自R的一個(gè)元組,后s個(gè)分量來自S的一個(gè)元組,記為R×S。形式化定義如下:R×S={t|t=<tr,ts>∧tr∈R∧ts∈S}29其中tr、ts中r,s為上標(biāo)。假設(shè)R有m個(gè)元組,S有n個(gè)元組,那么R×S有m×n個(gè)元組。實(shí)際操作時(shí),可從R的第一個(gè)元組開始,依次與S的每一個(gè)元組組合,然后對(duì)R的下一個(gè)元組進(jìn)行同樣的操作,直至R的最后一個(gè)元組也進(jìn)行完同樣的操作為止,即可得到R×S的全部元組。30【例2-4】關(guān)系R和關(guān)系S,如以下圖:ABCa1b2c1a2b1c3a3b3c2

關(guān)系REFDe1f2d2e2f3d1e3f1d3關(guān)系S31ABCEFDa1b2c1e1f2d2a1b2c1e2f3d1a1b2c1e3f1d3a2b1c3e1f2d2a2b1c3e2f3d1a2b1c3e3f1d3a3b3c2e1f2d2a3b3c2e2f3d1a3b3c2e3f1d3那么R和S的笛卡爾積如圖:關(guān)系R×S322、并〔Union〕設(shè)關(guān)系R和S具有相同的關(guān)系模式,R和S是n元關(guān)系,R和S的并是由屬于R或?qū)儆赟的元組構(gòu)成的集合,記為R∪S。形式定義如下:R∪S={t|t∈R∨t∈S},其含義為:任取元組t,當(dāng)且僅當(dāng)t屬于R或t屬于S時(shí),t屬于R∪S。R∪S是一個(gè)n元關(guān)系。33【例2-5】關(guān)系R和S如下表,求R和S的并。abc123456789101112R∪SR

Sabc123456789abc123456789101112注意:并運(yùn)算會(huì)取消某些元組〔防止重復(fù)行〕。343、差〔Difference〕關(guān)系R和S具有相同的關(guān)系模式,R和S是n元關(guān)系,R和S的差是由屬于R但不屬于S是元組構(gòu)成的集合,記為R-S。形式定義如下:R-S={t|t∈R∧t∈S},其含義為:當(dāng)且僅當(dāng)t屬于R并且不屬于S時(shí),t屬于R-S。R-S也是一個(gè)n目關(guān)系。35【例2-6】關(guān)系R和S,那么R和S的差為:

R-Sabc456364、交〔Intersection〕關(guān)系R和S具有相同的關(guān)系模式,R和S是n元關(guān)系,R和S的交是由屬于R且屬于S是元組構(gòu)成的集合,記為R∩S。形式定義如下:R∩S={t|t∈R∧t∈S}其含義為:任取元組t,當(dāng)且僅當(dāng)t既屬于R又屬于S時(shí),t屬于R∩S。R∩S也是一個(gè)n目關(guān)系。37【例2-7】關(guān)系R和S,那么R和S的交為:abc123789

R∩S382.3.2專門的關(guān)系運(yùn)算專門的關(guān)系運(yùn)算包括選擇、投影、連接、除等。1、選擇〔Selection〕(行的角度)選擇運(yùn)算是在關(guān)系R中選擇滿足給定條件的諸元組,記作σF(R)={t|t∈R^F(t)='真'}39設(shè)有一個(gè)學(xué)生-課程數(shù)據(jù)庫,包括學(xué)生關(guān)系student、課程關(guān)系course和成績(jī)表score。學(xué)生情況表〔student〕學(xué)

號(hào)no姓

名name性

別sex年

齡age所

在系dep2016001張超男18通信2016002李嵐女17信息2016003王芳女19數(shù)學(xué)2016004劉娟女18信息2016005趙強(qiáng)男18通信40課程表〔course〕課程號(hào)(cno)課程名(cname)學(xué)分(credit)1數(shù)據(jù)庫42高等數(shù)學(xué)33信息系統(tǒng)24操作系統(tǒng)35數(shù)據(jù)結(jié)構(gòu)56數(shù)據(jù)處理27C程序設(shè)計(jì)341學(xué)號(hào)(no)課程號(hào)(cno)成績(jī)(grade)20160011862016001278201600235620160024692016002190201600347020160045882016005579

成績(jī)表(score)42例2-8:查詢數(shù)學(xué)系學(xué)生的信息。σdep=‘?dāng)?shù)學(xué)系’

(student)或σ5=‘?dāng)?shù)學(xué)系’(student)查詢數(shù)學(xué)系學(xué)生的信息,結(jié)果:學(xué)號(hào)(no)姓名(nam)性別(sex)年齡(age)所在系(dep)2016003王芳女19數(shù)學(xué)43例2-9:查詢年齡大于17的女同學(xué)的信息。σ

age>17∧sex=’女’

(student)或σ4>17∧3=’女’(student)

查詢結(jié)果表學(xué)號(hào)(no)姓名(nam)性別(sex)年齡(age)所在系(dep)2016003王芳女19數(shù)學(xué)2016004劉娟女18信息442、投影〔Projection〕〔列的角度〕關(guān)系R上的投影是從R中選擇出假設(shè)干屬性列組成新的關(guān)系。記作πA(R)={t[A]|t∈R}其中,A為R中的屬性列。45例2-10:查詢學(xué)生的學(xué)號(hào)和姓名。πno,name(student)或π1,2(student)結(jié)果如表所示。

查詢學(xué)生的學(xué)號(hào)和姓名學(xué)

號(hào)no姓

名name2016001張超2016002李嵐2016003

王芳2016004劉娟2016005趙強(qiáng)46課程名(cname)課程號(hào)(cno)數(shù)據(jù)庫1高等數(shù)學(xué)2信息系統(tǒng)3操作系統(tǒng)4數(shù)據(jù)結(jié)構(gòu)5數(shù)據(jù)處理6C程序設(shè)計(jì)7例2-11:查詢課程表中的課程名和課程號(hào)。πcname,cno(course)或π2,1(course)

查詢課程名和課程號(hào)47所在系(dep)物理系信息系數(shù)學(xué)系例:查詢學(xué)生表中有哪些系。πdep(student)或π5(student)

查詢結(jié)果

投影是從列的角度進(jìn)行的運(yùn)算,因?yàn)橥队爸笕∠嗽P(guān)系中的某些列。但是投影運(yùn)算也可能取消某些元組,因?yàn)槿∠四承傩粤泻?,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。483、連接〔Join〕〔行、列角度〕〔1〕連接運(yùn)算的含義:連接也稱θ連接,是從兩個(gè)關(guān)系的笛卡爾積中選取滿足某規(guī)定條件的全體元組,形成一個(gè)新的關(guān)系,記為:49(2)連接運(yùn)算的過程首先確定結(jié)果中的屬性列然后確定參與比較的屬性列最后逐一取R中的元祖分別和S中與其符合比較關(guān)系的元祖進(jìn)行拼接。50〔3〕兩類常用連接運(yùn)算①等值連接〔equi-join〕θ為“=〞的連接運(yùn)算稱為等值連接,它是從關(guān)系R與S的笛卡爾積中選取A、B屬性值相等的那些元組。等值連接為:A=BRS={trts|tr

R∧ts

S∧tr[A]=ts[B]}51②自然連接〔Naturaljoin〕假設(shè)A、B是相同的屬性組,就可以在結(jié)果中把重復(fù)的屬性去掉。這種去掉了重復(fù)屬性的等值連接稱為自然連接。自然連接可記作:RS={trts|tr

R∧ts

S∧tr[B]=ts[B]}自然連接實(shí)質(zhì):先從關(guān)系R與S的笛卡爾積中進(jìn)行行選擇,再進(jìn)行投影,去掉重復(fù)的屬性。52例2-12:關(guān)系R和關(guān)系S如下表所示:ABCa1b26a2b17a1b39a3b212EDB5e2b27e1b110e3b36e2b2

RS求:53ABCEDBa1b265e2b2a1b267e1b1a1b2610e3b3a1b266e2b2a2b175e2b2a2b177e1b1a2b1710e3b3a2b176e2b254ABCEDBa1b395e2b2a1b397e1b1a1b3910e3b3a1b396e2b2a3b2125e2b2a3b2127e1b1a3b21210e3b3a3b2126e2b255AR.BCEDS.Ba1b267e1b1a1b2610e3b3a2b1710e3b3a1b3910e3b3小于連接結(jié)果表56等值連接結(jié)果表AR.BCEDS.Ba1b266e2b2a2b177e1b157自然連接結(jié)果表ABCEDa1b265e2a1b266e2a2b177e1a3b2125e2a3b2126e2a1b3910e358例題2-13根據(jù)前面學(xué)生-課程數(shù)據(jù)庫的三個(gè)表:求:

(1)student∞score(2)course∞score(3)student∞score∞course59設(shè)教學(xué)數(shù)據(jù)庫中有三個(gè)關(guān)系,學(xué)生關(guān)系:S(SNO,SN,AGE,SEX)、學(xué)習(xí)關(guān)系:SC(SNO,CNO,SCORE)、課程關(guān)系:C(CNO,CN,TEACHER)(1)檢索選修課程號(hào)為C3的學(xué)生學(xué)號(hào)和成績(jī)∏SNO,SCORE()(2)檢索選修課程號(hào)為C4的學(xué)生學(xué)號(hào)和姓名∏SNO,SN()σCNO=’C3’

(SC)S∞SCσCNO=’C4’()4.專門的

關(guān)系運(yùn)算操作舉例60(3)檢索選修課程名為MATHS的學(xué)生學(xué)號(hào)和姓名∏

SNO,SN(σCN=’MATHS’(S∞SC∞C))(4)檢索選修課程號(hào)為C1或C3的學(xué)生學(xué)號(hào)∏

SNO(σCNO=’C1’VCNO=’C3’(SC))(5)檢索沒有選修課程號(hào)為C2的學(xué)生的姓名和年齡∏SN,AGE(σCNO<>’C2’(S∞SC))∏SN,AGE(S)-∏SN,AGE(σCNO=’C2’(S∞SC))×∨61實(shí)體的聯(lián)系有兩類:一類是實(shí)體與實(shí)體之間的聯(lián)系;另一類是實(shí)體內(nèi)部各屬性間的聯(lián)系。關(guān)系模式中各個(gè)屬性之間的相互關(guān)聯(lián),就是數(shù)據(jù)依賴,它是標(biāo)準(zhǔn)化理論中一個(gè)最重要、最根本的概念,是數(shù)據(jù)庫模式設(shè)計(jì)的關(guān)鍵。本節(jié)重點(diǎn)介紹兩個(gè)問題:函數(shù)依賴:數(shù)據(jù)依賴中最重要的一種關(guān)系的標(biāo)準(zhǔn)化2.4關(guān)系的標(biāo)準(zhǔn)化62數(shù)據(jù)依賴共有三種:函數(shù)依賴〔FunctionalDependency,簡(jiǎn)稱FD〕多值依賴〔MultivaluedDependency,簡(jiǎn)稱MVD〕連接依賴〔JoinDependency,簡(jiǎn)稱JD〕2.4.1函數(shù)依賴63所謂函數(shù)依賴是指在關(guān)系R中,X、Y為R的兩個(gè)屬性或?qū)傩越M,如果關(guān)系R存在:對(duì)于X的每一個(gè)具體值,Y都只有一個(gè)具體值與之對(duì)應(yīng),那么稱屬性Y函數(shù)依賴于屬性X。記作X→Y。1.函數(shù)依賴的概念64函數(shù)依賴的簡(jiǎn)單表述為:如果屬性X的值決定屬性Y的值,那么屬性Y函數(shù)依賴于屬性X?;蛘?,如果知道X的值,就可以獲得Y的值。所以X→Y可以叫做Y函數(shù)依賴于X,也可以叫做X函數(shù)決定Y,或X決定Y。65例2-14:學(xué)生情況表學(xué)號(hào)姓名專業(yè)名性別出生日期總學(xué)分20161101王林計(jì)算機(jī)男1998-02-105020161102程明計(jì)算機(jī)男1998-02-015020161103王燕計(jì)算機(jī)女1997-10-065020161104韋嚴(yán)平網(wǎng)絡(luò)男1997-08-265020161106李方方網(wǎng)絡(luò)女1997-11-205066學(xué)生情況表對(duì)應(yīng)的關(guān)系模式可描述為:學(xué)生情況〔學(xué)號(hào),姓名,專業(yè)名,性別,出生日期,總學(xué)分〕其中,學(xué)號(hào)為主鍵,那么存在如下的函數(shù)依賴關(guān)系:學(xué)號(hào)→姓名;學(xué)號(hào)→專業(yè)名;學(xué)號(hào)→性別;學(xué)號(hào)→出生日期;學(xué)號(hào)→總學(xué)分。67設(shè)關(guān)系模式R(U),X、Y?U;如果X→Y,且Y?X,那么稱X→Y為平凡函數(shù)依賴。如果X→Y,且Y不是X的子集,那么稱X→Y為非平凡的函數(shù)依賴。(1)平凡函數(shù)依賴和非平凡函數(shù)依賴2.幾種特定的函數(shù)依賴68例2-15:在學(xué)生課程關(guān)系〔學(xué)生號(hào),課程號(hào),成績(jī)〕中,假設(shè)存在函數(shù)依賴:〔1〕〔學(xué)生號(hào),課程號(hào)〕→成績(jī);〔2〕〔學(xué)生號(hào),課程號(hào)〕→課程號(hào);〔1〕為非平凡函數(shù)依賴〔2〕為平凡函數(shù)依賴69定義:設(shè)關(guān)系模式R(U),X,Y?U;如果X→Y,并且對(duì)于X的任何一個(gè)真子集Z,Z→Y都不成立,那么稱Y完全函數(shù)依賴于X。假設(shè)X→Y,但對(duì)于X的某一個(gè)真子集Z,有Z→Y成立,那么稱Y局部函數(shù)依賴于X。(2)完全函數(shù)依賴和局部函數(shù)依賴70例:在學(xué)生課程關(guān)系〔學(xué)號(hào),課程號(hào),成績(jī)〕中,主碼為〔學(xué)號(hào),課程號(hào)〕。因?yàn)閷W(xué)號(hào)→成績(jī)不成立,課程號(hào)→成績(jī)也不成立,所以〔學(xué)號(hào),課程號(hào)〕→成績(jī)?yōu)橥耆瘮?shù)依賴。又例:在選課關(guān)系(學(xué)號(hào),課程號(hào),姓名,成績(jī))中,〔學(xué)號(hào),課程號(hào)〕是主碼。由于:學(xué)號(hào)→姓名成立,因此:姓名局部函數(shù)依賴于〔學(xué)號(hào),課程號(hào)〕。71設(shè)關(guān)系模式R(U),X?U,Y?U,Z?U。如果X→Y,Y→X,Y→Z成立,那么稱X→Z為傳遞函數(shù)依賴。

例如:學(xué)生關(guān)系〔學(xué)號(hào),姓名,性別,年齡,所在系,系主任〕,其上的函數(shù)依賴集F={學(xué)號(hào)→姓名,學(xué)號(hào)→性別,學(xué)號(hào)→年齡,學(xué)號(hào)→所在系,所在系→系主任},那么學(xué)號(hào)→系主任為傳遞函數(shù)依賴。(3)傳遞函數(shù)依賴/72設(shè)有一描述學(xué)校的數(shù)據(jù)庫:含有這樣一個(gè)關(guān)系模式:學(xué)生信息表〔學(xué)號(hào),姓名,年齡,系別,系主任,課程號(hào),成績(jī)〕,〔學(xué)號(hào),課程號(hào)〕為主鍵。其中,一個(gè)系有假設(shè)干學(xué)生,一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系只有一名主任;一個(gè)學(xué)生可以選修多門課程,每門課程有假設(shè)干學(xué)生選修;每個(gè)學(xué)生所學(xué)的每門課程都有一個(gè)成績(jī)。2.4.2關(guān)系標(biāo)準(zhǔn)化的目的73學(xué)號(hào)姓名年齡系別系主任課程號(hào)成績(jī)S1趙紅20計(jì)算機(jī)張力C190S1趙紅20計(jì)算機(jī)張力C285S2王小明17數(shù)學(xué)王曉C557S2王小明17數(shù)學(xué)王曉C680S2王小明17數(shù)學(xué)王曉C776S2王小明17數(shù)學(xué)王曉C470S3吳小林19信息趙鋼C175S3吳小林19信息趙鋼C270S4張濤22計(jì)算機(jī)張力C193學(xué)生信息表74關(guān)系模式學(xué)生信息表中存在如下問題*:①數(shù)據(jù)冗余〔浪費(fèi)大量的存儲(chǔ)空間〕。例:每一個(gè)系主任的姓名重復(fù)出現(xiàn)很屢次②更新異常(數(shù)據(jù)冗余,更新數(shù)據(jù)時(shí),維護(hù)數(shù)據(jù)完整性代價(jià)大) 例:某系更換系主任后,系統(tǒng)必須修改與該系學(xué)生有關(guān)的每一個(gè)元組75③插入異?!苍摬宓臄?shù)據(jù)插不進(jìn)去〕例:如果一個(gè)系剛成立,尚無學(xué)生,我們就無法把這個(gè)系及其系主任的信息存入數(shù)據(jù)庫。④刪除異?!膊辉搫h除的數(shù)據(jù)不得不刪〕例:如果某個(gè)系的學(xué)生全部畢業(yè)了,我們?cè)趧h除該系學(xué)生信息的同時(shí),把這個(gè)系及其系主任的信息也刪掉了。76以上問題產(chǎn)生的原因:由存在于模式中的某些不適宜的數(shù)據(jù)依賴引起的。解決方法:通過分解關(guān)系模式來消除其中不適宜的數(shù)據(jù)依賴。本節(jié)包含兩個(gè)知識(shí)點(diǎn):1、關(guān)系模式標(biāo)準(zhǔn)化的目的2、關(guān)系標(biāo)準(zhǔn)化過程77關(guān)系模式標(biāo)準(zhǔn)化的目的是解決關(guān)系模式中存在的數(shù)據(jù)冗余、插入和刪除異常以及更新異常等問題。根本思想:消除數(shù)據(jù)依賴中的不適宜局部,即模式分解。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的標(biāo)準(zhǔn)化要求,對(duì)于不同的標(biāo)準(zhǔn)化程度可用范式來衡量。范式〔NormalForm〕是符合某一種級(jí)別的關(guān)系模式的集合,是衡量關(guān)系模式標(biāo)準(zhǔn)化程度的標(biāo)準(zhǔn),到達(dá)的關(guān)系才是標(biāo)準(zhǔn)化的。78目前主要有6種范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。滿足最低要求的叫第一范式,簡(jiǎn)稱為1NF。在第一范式根底上進(jìn)一步滿足一些要求的為第二范式,簡(jiǎn)稱為2NF。其余以此類推。79范式之間存在聯(lián)系:1NF?2NF?3NF?BCNF?4NF?5NF。通常把某一關(guān)系模式R為第n范式簡(jiǎn)記為R∈nNF。在這些范式中,最重要的是3NF和BCNF,它們是進(jìn)行標(biāo)準(zhǔn)化的主要目標(biāo)。80一個(gè)低一級(jí)范式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換為假設(shè)干個(gè)高一級(jí)范式的關(guān)系模式的集合,這個(gè)過程稱為標(biāo)準(zhǔn)化。通常實(shí)際應(yīng)用中,標(biāo)準(zhǔn)化到3NF就可以了。2.4.3關(guān)系的標(biāo)準(zhǔn)化過程81〔1〕第一范式〔1NF〕定義:設(shè)R是一個(gè)關(guān)系模式。如果R的每個(gè)屬性的值域都是不可分的簡(jiǎn)單數(shù)據(jù)項(xiàng)〔原子〕的集合,那么稱這個(gè)關(guān)系模式屬于第一范式,簡(jiǎn)記作R∈1NF。簡(jiǎn)單表述:如果關(guān)系模式R的每一個(gè)屬性都是不可分解的,那么R∈1NF。1NF是標(biāo)準(zhǔn)化最低的范式,在任何一個(gè)關(guān)系數(shù)據(jù)庫系統(tǒng)中,關(guān)系至少應(yīng)該是第一范式。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。82例如:職工號(hào)姓名工資基本工資職務(wù)工資工齡工資20017李嵐8903003020013王曉江90030040職工情況表83可標(biāo)準(zhǔn)為:職工情況表職工號(hào)姓名基本工資職務(wù)工資工齡工資20017李嵐8903003020013王曉江90030040842、第二范式〔2NF〕定義:如果關(guān)系模式R是第一范式,且每個(gè)非主屬性都完全函數(shù)依賴于碼,那么稱R為滿足第二范式的模式,記為:R∈2NF。在一個(gè)關(guān)系中,包含在任何候選碼中的各個(gè)屬性都稱為主屬性;不包含在任何候選碼中的屬性稱為非主屬性。85首先要確定此關(guān)系中的最小函數(shù)依賴集。什么是最小函數(shù)依賴集F?〔1〕F中任何一個(gè)函數(shù)依賴的右部?jī)H含有一個(gè)屬性〔非主屬性〕?!?〕F中的所有函數(shù)依賴的左邊都沒有冗余屬性?!?〕F中不存在冗余的函數(shù)依賴。86(1)主關(guān)鍵字只有一個(gè)屬性的關(guān)系一定是第二范式。例2-19:關(guān)系R〔學(xué)號(hào),姓名,性別,出生日期,成績(jī)〕主屬性為學(xué)號(hào);非主屬性為姓名、性別、出生日期、成績(jī)。其中存在以下最小函數(shù)依賴集:學(xué)號(hào)→姓名,學(xué)號(hào)→性別,學(xué)號(hào)→出生日期,學(xué)號(hào)→成績(jī)由于每個(gè)非主屬性都完全函數(shù)依賴于碼,所以該關(guān)系R∈2NF。兩個(gè)推論87(2)主關(guān)鍵字是屬性的組合,這樣的關(guān)系模式可能不是第二范式。例如:關(guān)系S〔學(xué)號(hào),姓名,性別,課程號(hào),學(xué)分〕,其中學(xué)號(hào)和課程號(hào)為主屬性;姓名、性別、學(xué)分為非主屬性。存在以下最小函數(shù)依賴集:學(xué)號(hào)→姓名,學(xué)號(hào)→性別,〔課程號(hào),學(xué)號(hào)〕→學(xué)分88存在非主屬性局部函數(shù)依賴于碼,故關(guān)系S不屬于2NF。根據(jù)最小函數(shù)依賴集,對(duì)上述關(guān)系模式進(jìn)行分解,分解為兩個(gè)關(guān)系:S1〔學(xué)號(hào),姓名,性別〕S2〔學(xué)號(hào),課程號(hào),學(xué)分〕S1∈2NF;S2∈2NF。89例2-20:職工信息P〔職工號(hào),姓名,職稱,工程號(hào),工程名稱,工程排名〕其中,主碼為〔職工號(hào),工程號(hào)〕,非主屬性為〔姓名,職稱,工程名稱,工程排名〕關(guān)系P中存在的最小函數(shù)依賴集:職工號(hào)→姓名;職工號(hào)→職稱;工程號(hào)→工程名稱;〔職工號(hào),工程號(hào)〕→工程排名。90根據(jù)最小函數(shù)依賴集,上述關(guān)系模式分解為三個(gè)關(guān)系:職工信息表〔職工號(hào),姓名,職稱〕工程表〔工程號(hào),工程名稱〕工程排名表〔職工號(hào),工程號(hào),工程排名〕913、第三范式定義:如果關(guān)系模式R是第二范式,且沒有一個(gè)非主屬性是傳遞函數(shù)依賴于碼,

溫馨提示

  • 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)論