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

下載本文檔

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

文檔簡介

第2章關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫系統(tǒng)就是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。為了減少冗余數(shù)據(jù),避免不合理的插入、刪除、修改等操作,保持?jǐn)?shù)據(jù)的一致性,數(shù)據(jù)庫模式設(shè)計(jì)需要依據(jù)規(guī)范化的理論。本章介紹四個(gè)問題:關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)庫完整性

關(guān)系運(yùn)算:關(guān)系數(shù)據(jù)庫操作關(guān)系的規(guī)范化2.1關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡單,現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(lián)系均用關(guān)系來表示。在用戶看來,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)就是一張二維表。本節(jié)內(nèi)容包含兩個(gè)知識點(diǎn):1.關(guān)系的定義和性質(zhì)2.關(guān)系模式和關(guān)系數(shù)據(jù)庫

2.1.1關(guān)系的定義和性質(zhì)

關(guān)系就是一張二維表,但并不是任何二維表都叫關(guān)系,我們不能把日常生活中所用的任何表格都當(dāng)成一個(gè)關(guān)系直接存放到數(shù)據(jù)庫里。

那么什么樣的二維表才叫關(guān)系呢?例如:有兩個(gè)域,D1=動物集合={貓,狗,豬},D2=食物集合={魚,骨頭,白菜},D1×D2={(貓,魚)(狗,魚)(豬,魚)(貓,骨頭)(狗,骨頭)(豬,骨頭)(貓,白菜)(狗,白菜)(豬,白菜)}表2.1.1關(guān)系的定義和性質(zhì)1、關(guān)系的數(shù)學(xué)定義笛卡爾積:設(shè)D1,D2,…,Dn為任意域,定義D1,D2,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}

域:一組具有相同數(shù)據(jù)類型的值的集合。動物食物貓魚狗魚豬魚貓骨頭狗骨頭豬骨頭貓白菜狗白菜豬白菜D1×D2=動物食物表笛卡爾積推出關(guān)系表的定義2.1.1關(guān)系的定義和性質(zhì)關(guān)系:D1×D2×…×Dn的任意一個(gè)子集叫做D1×D2×…×Dn上的一個(gè)關(guān)系(Relation),用R(D1,D2,…,Dn)表示。(R表示關(guān)系名,n表示關(guān)系的目或度)動物食物表的子集——動物食物關(guān)系表動物食物貓魚狗骨頭豬白菜2.1.1關(guān)系的定義和性質(zhì)2.1.1關(guān)系的定義和性質(zhì)關(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è)元組都不能完全相同。2.1.1關(guān)系的定義和性質(zhì)(4)在同一個(gè)關(guān)系中,列的次序無關(guān)緊要。即列的排列順序是不分先后的。(5)在同一個(gè)關(guān)系中,元組的位置無關(guān)緊要,即排行不分先后。(6)關(guān)系中的每個(gè)屬性必須是單值,即不可再分,這就要求關(guān)系的結(jié)構(gòu)不能嵌套。這是關(guān)系應(yīng)滿足的最基本的條件。

2.1.1關(guān)系的定義和性質(zhì)例如,有這樣一個(gè)學(xué)生表如下:復(fù)合表示例學(xué)號姓名性別系編號成績程序設(shè)計(jì)英語高數(shù)2016002張三男017787862017025李四女026989762016023劉明男037984822016033王曉女036690762.1.1關(guān)系的定義和性質(zhì)上述復(fù)合表格就不是關(guān)系,應(yīng)對其進(jìn)行結(jié)構(gòu)上的修改,才能成為數(shù)據(jù)庫中的關(guān)系。(1)可以轉(zhuǎn)化成一個(gè)關(guān)系,即學(xué)生成績關(guān)系(學(xué)號,姓名,性別,系編號,程序設(shè)計(jì),英語,高數(shù));(2)也可以轉(zhuǎn)化成兩個(gè)關(guān)系,即學(xué)生關(guān)系(學(xué)號,姓名,性別,系編號)和成績關(guān)系(學(xué)號,程序設(shè)計(jì),英語,高數(shù))。2.1.1關(guān)系的定義和性質(zhì)在關(guān)系數(shù)據(jù)模型中,實(shí)體以及實(shí)體之間的聯(lián)系都是用關(guān)系來表示的。它是通過關(guān)系當(dāng)中的冗余屬性(一般是主碼和外碼的關(guān)系)來實(shí)現(xiàn)實(shí)體之間的聯(lián)系。2.1.2關(guān)系模式*關(guān)系數(shù)據(jù)庫中,關(guān)系模式是型,關(guān)系是值;關(guān)系模式是對關(guān)系的描述。因此關(guān)系模式必須指出這個(gè)元組集合的結(jié)構(gòu),即它由哪些屬性構(gòu)成,這些屬性來自哪些域。2.1.2關(guān)系模式1.關(guān)系模式的定義關(guān)系模式可以形式化地表示為:

R(U,D,dom,F(xiàn))其中:R是關(guān)系名;U是組成該關(guān)系的屬性名集合;D是屬性所來自的域;dom是屬性間域的映象集合;F是屬性間的數(shù)據(jù)依賴關(guān)系集合。關(guān)系模式通??梢院営洖?:

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

其中:R是關(guān)系名,A1,A2,…,An為屬性名。2.1.2關(guān)系模式學(xué)號姓名性別年齡所在系20160101王蕭男17計(jì)算機(jī)系20160207李云虎男18物理系20170302郭敏女18數(shù)學(xué)系20170408高紅女20數(shù)學(xué)系20150309王睿男19美術(shù)系20150506路旭青女21美術(shù)系學(xué)生情況表

學(xué)生情況表的關(guān)系模式可以描述為:學(xué)生情況表(學(xué)號,姓名,性別,年齡,所在系)2.1.2關(guān)系模式關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容。關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動態(tài)的、隨時(shí)間不斷變化的,因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫中的數(shù)據(jù)。實(shí)際應(yīng)用中,我們常常把關(guān)系模式和關(guān)系統(tǒng)稱為關(guān)系。2.1.3關(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)系模式的集合,關(guān)系數(shù)據(jù)庫的值是這些關(guān)系模式在某一時(shí)刻對應(yīng)的關(guān)系的集合。

關(guān)系數(shù)據(jù)結(jié)構(gòu)課后問題:1、給出你對關(guān)系的數(shù)學(xué)定義的理解。2、從關(guān)系的性質(zhì)分析關(guān)系與普通二維表的區(qū)別。3、給出你對關(guān)系模式和關(guān)系數(shù)據(jù)庫的理解。2.2關(guān)系的完整性數(shù)據(jù)完整性是指關(guān)系模型中數(shù)據(jù)的正確性與一致性。關(guān)系模型允許定義三類完整性約束*:實(shí)體完整性、參照完整性和用戶自定義的完整性約束。2.2關(guān)系的完整性1、實(shí)體完整性規(guī)則*實(shí)體完整性規(guī)則要求關(guān)系的主碼中屬性不能取空值*。例如學(xué)生關(guān)系中的學(xué)號屬性不能為空。選修關(guān)系的主碼為學(xué)號和課程號的組合,二者都不允許為空。2.2關(guān)系的完整性2、參照完整性規(guī)則*設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系R的碼,如果F與基本關(guān)系S的主碼K相對應(yīng),則稱F是基本關(guān)系R的外碼(Foreignkey),并稱基本關(guān)系R為參照關(guān)系,基本關(guān)系S為被參照關(guān)系或目標(biāo)關(guān)系。如,班級關(guān)系(班級,班主任)中班級為主碼。學(xué)生關(guān)系(學(xué)號,姓名,性別,班級)中班級為外碼。2.2關(guān)系的完整性參照完整性規(guī)則**:若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼K相對應(yīng)(基本關(guān)系R和S可能是同一個(gè)關(guān)系),則對于R中每個(gè)元組在F上的值必須為:或者取空值(F的每個(gè)屬性值均為空值);或者等于S中某個(gè)元組的主碼值*。參照完整性是用來定義外碼與主碼之間引用規(guī)則的,從而保證數(shù)據(jù)的一致性。2.2關(guān)系的完整性【例】學(xué)生實(shí)體和專業(yè)實(shí)體可以用下面的關(guān)系表示,其中主碼用下劃線標(biāo)識。學(xué)生(學(xué)號,姓名,性別,年齡,系別號)系別(系別號,系名)“系別號”屬性是學(xué)生關(guān)系的外碼,是系別關(guān)系的主碼。系別關(guān)系是被參照關(guān)系,學(xué)生關(guān)系為參照關(guān)系。所以,學(xué)生關(guān)系中的每個(gè)元組的“系別號”屬性只能取下面兩類值:空值或系別關(guān)系中已經(jīng)存在的值。2.2關(guān)系的完整性【例】學(xué)生關(guān)系的自身參照。學(xué)生(學(xué)號,姓名,性別,年齡,系號,班長學(xué)號)學(xué)生關(guān)系的“班長學(xué)號”與其主碼“學(xué)號”形成參照和被參照的自身參照關(guān)系,即“班長學(xué)號”為學(xué)生關(guān)系的外碼。學(xué)生關(guān)系中的每個(gè)元組的“班長學(xué)號”屬性只能取下面兩類值:空值或?qū)W生關(guān)系中“學(xué)號”已經(jīng)存在的值。學(xué)生表:學(xué)號姓名性別年齡2003002張三男202003025李四女212005023劉明男182004033王曉女19課程號課程名學(xué)分A002數(shù)據(jù)庫4B025英語5A005網(wǎng)絡(luò)3B028VB3課程表:學(xué)號課程號成績2003002A002782003002B025882003002A005932003025A002902003025B025782003025A005772003025B028882004033A002872004033B025832005023A005792005023B028922005023B02589選修表:2.2關(guān)系的完整性分析參照完整性2.2關(guān)系的完整性3、用戶定義的完整性規(guī)則用戶定義的完整性規(guī)則由用戶根據(jù)實(shí)際情況對數(shù)據(jù)庫中數(shù)據(jù)的內(nèi)容進(jìn)行的規(guī)定,也稱為域完整性規(guī)則*。通過這些規(guī)則限制數(shù)據(jù)庫只接受符合完整性約束條件的數(shù)據(jù)值,不接受違反約束條件的數(shù)據(jù),從而保證數(shù)據(jù)庫的中數(shù)據(jù)的有效性和可靠性。例如,學(xué)生表中的性別數(shù)據(jù)只能是男和女,選課表中的成績數(shù)據(jù)為1到100之間,等等。關(guān)系的完整性課后問題:1、有職工關(guān)系,職工(職工號,身份證號,姓名,性別,出生日期,職務(wù)),其中身份證號只能取數(shù)字字符,為

完整性約束,職工號不允許取空值為

完整性約束。2、給出你對實(shí)體完整性規(guī)則的功能的理解。3、給出你對參照完整性規(guī)則的功能的理解。3、給出你對自定義完整性規(guī)則的功能的理解。4、對于本節(jié)知識,你還存在哪些困惑。2.3關(guān)系運(yùn)算關(guān)系代數(shù)是以關(guān)系為運(yùn)算對象的一組高級運(yùn)算的集合;關(guān)系代數(shù)是一種抽象的查詢語言,是關(guān)系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達(dá)方式。(代數(shù)方式的查詢過程)

注意:關(guān)系代數(shù)的運(yùn)算對象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系。2.3關(guān)系運(yùn)算關(guān)系代數(shù)中的操作可以分為兩類:

傳統(tǒng)的集合操作:并、差、交、笛卡兒積。專門的關(guān)系操作*:投影、選擇、連接、除法等。2.3關(guān)系運(yùn)算在兩類關(guān)系運(yùn)算中,除運(yùn)算本身的運(yùn)算符外(如并運(yùn)算為∪),還將用到兩類輔助操作符:

(1)比較運(yùn)算符:>、≥、<、≤、=、≠。

(2)邏輯運(yùn)算符:∨(或)、∧(與)、┐(非)。

知識點(diǎn):傳統(tǒng)的集合運(yùn)算2.3.1傳統(tǒng)的集合運(yùn)算1、笛卡兒積*設(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有m個(gè)元組,S有n個(gè)元組,則R×S有m×n個(gè)元組。2.3.1傳統(tǒng)的集合運(yùn)算例,已知關(guān)系R和關(guān)系S,如下圖:ABCa1b2c1a2b1c3a3b3c2

關(guān)系REFDe1f2d2e2f3d1e3f1d3關(guān)系S

2.3.1傳統(tǒng)的集合運(yùn)算R×SABCEFDa1b2c1e1f2d2a1b2c1e2F3d1a1b2c2e3f1d3a2b1c3e1f2d2a2b1c3e2F3d1a2b1c3e3f1d3a3b3c2e1f2d2a3b3c2e2F3d1a3b3c2e3f1d32.3.1傳統(tǒng)的集合運(yùn)算2、并(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)系。注意:并運(yùn)算會取消某些元組(避免重復(fù)行)。2.3.1傳統(tǒng)的集合運(yùn)算我們可以把關(guān)系R想象成足球愛好者表和把S想象成籃球愛好者表,那么R和S的并為?abc123789101112R∪SR

Sabc123456789abc123456789101112例,已知關(guān)系R和關(guān)系S,如下圖,求R∪S。2.3.1傳統(tǒng)的集合運(yùn)算3、差(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)系。2.3.1傳統(tǒng)的集合運(yùn)算R-S同樣把關(guān)系R想象成足球愛好者表和把S想象成籃球愛好者表,那么R和S的差為?abc456abc123789101112R

Sabc1234567892.3.1傳統(tǒng)的集合運(yùn)算4、交(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)系。2.3.1傳統(tǒng)的集合運(yùn)算R∩S還是把關(guān)系R想象成足球愛好者表和把S想象成籃球愛好者表,那么R和S的交為?abc123789abc123789101112R

Sabc123456789傳統(tǒng)的集合運(yùn)算課后問題:1、關(guān)系代數(shù)的運(yùn)算對象是

,運(yùn)算結(jié)果也是

。2、求上圖關(guān)系R和S的笛卡爾積。AB1dep12dep2

關(guān)系RDEA011張三1012李四1013王五2關(guān)系S

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

學(xué)生情況表(student)學(xué)

號no姓

名name性

別sex年

齡age所

在系dep2016001張超男18CS2016002李嵐女17IS2015003王芳女19MA2016004劉娟女18IS2016005趙強(qiáng)男18CS2.3.2專門的關(guān)系運(yùn)算

課程表(course)課程號(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ì)32.3.1專門的關(guān)系運(yùn)算學(xué)號(no)課程號(cno)成績(grade)20160011862016001278201600235620160024692016002190201500347020160045882016005579

成績表(score)2.3.2專門的關(guān)系運(yùn)算例:查詢數(shù)學(xué)系(MA)學(xué)生的信息。σdep=‘MA’(student)或σ5=‘MA’(student)查詢數(shù)學(xué)系(MA)學(xué)生的信息,結(jié)果:學(xué)號(no)姓名(nam)性別(sex)年齡(age)所在系(dep)2015003王芳女19MA2.3.2專門的關(guān)系運(yùn)算例:查詢年齡大于17的女同學(xué)的信息。σ

age>17∧sex=’女’

(student)

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

查詢結(jié)果表學(xué)號(no)姓名(nam)性別(sex)年齡(age)所在系(dep)2015003王芳女19MA2016004劉娟女18IS2.3.2專門的關(guān)系運(yùn)算2、投影(Projection)關(guān)系R上的投影是從R中選擇出若干屬性列組成新的關(guān)系。記作πA(R)={t[A]|t∈R}其中,A為R中的屬性列。投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組,因?yàn)槿∠四承傩粤泻?,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。2.3.2專門的關(guān)系運(yùn)算例:查詢學(xué)生的學(xué)號和姓名。πno,name(student)或π1,2(student)結(jié)果表如表所示。查詢學(xué)生的學(xué)號和姓名學(xué)

號no姓

名name2016001張超2016002李嵐2015003

王芳2016004劉娟2016005趙強(qiáng)2.3.2專門的關(guān)系運(yùn)算課程名(cname)課程號(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查詢課程名和課程號例:查詢課程表中的課程名和課程號。πcname,cno(course)或π2,1(course)

查詢課程名和課程號2.3.2專門的關(guān)系運(yùn)算3、連接(Join)(1)連接運(yùn)算的含義:連接也稱θ連接,是從兩個(gè)關(guān)系的笛卡爾積中選取滿足某規(guī)定條件的全體元組,形成一個(gè)新的關(guān)系,記為:2.3.2專門的關(guān)系運(yùn)算例題:已知關(guān)系R和關(guān)系S如下表所示:ABCa1b26a2b17a1b39a3b212EDB5e2b27e1b110e3b36e2b2

RS求:2.3.2專門的關(guān)系運(yùn)算AR.BCEDS.Ba1b267e1b1a1b2610e3b3a2b1710e3b3a1b3910e3b3連接結(jié)果表2.3.2專門的關(guān)系運(yùn)算(3)兩類常用連接運(yùn)算①等值連接(equi-join)θ為“=”的連接運(yùn)算稱為等值連接,它是從關(guān)系R與S的笛卡爾積中選取A、B屬性值相等的那些元組。等值連接為:A=BRS={trts|tr

R∧ts

S∧tr[A]=ts[B]}2.3.2專門的關(guān)系運(yùn)算②自然連接(Naturaljoin)若A、B是相同的屬性組,就可以在結(jié)果中把重復(fù)的屬性去掉。這種去掉了重復(fù)屬性的等值連接稱為自然連接。自然連接可記作:RS={trts|tr

R∧ts

S∧tr[B]=ts[B]}2.3.2專門的關(guān)系運(yùn)算例題:已知關(guān)系R和關(guān)系S如下表所示:ABCa1b26a2b17a1b39a3b212EDB5e2b27e1b110e3b36e2b2

RS2.3.2專門的關(guān)系運(yùn)算求:

R.B=S.B2.3.2專門的關(guān)系運(yùn)算R.C=S.E,等值連接結(jié)果表AR.BCEDS.Ba1b266e2b2a2b177e1b12.3.2專門的關(guān)系運(yùn)算R.B=S.B等值連接結(jié)果自然連接結(jié)果表ABCEDa1b265e2a1b266e2a2b177e1a3b2125e2a3b2126e2a1b3910e3AR.BCEDS.Ba1b265e2b2a1b266e2b2a2b177e1b1a3b2125e2b2a3b2126e2b2a1b3910e3b32.3.2專門的關(guān)系運(yùn)算根據(jù)前面學(xué)生-課程數(shù)據(jù)庫的三個(gè)表:求:

(1)student∞score(2)course∞score(3)student∞score∞course

2.3.2專門的關(guān)系運(yùn)算4.關(guān)系代數(shù)操作表達(dá)式舉例*設(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)檢索學(xué)習(xí)課程號為C3的學(xué)生學(xué)號和成績∏SNO,SCORE(σCNO=’C3’(SC))(2)檢索學(xué)習(xí)課程號為C4的學(xué)生學(xué)號和姓名∏SNO,SN(σCNO=’C4’(S∞SC))2.3.2專門的關(guān)系運(yùn)算(3)檢索學(xué)習(xí)課程名為MATHS的學(xué)生學(xué)號和姓名∏

SNO,SN(σCN=’MATHS’(S∞SC∞C))(4)檢索學(xué)習(xí)課程號為C1或C3的學(xué)生學(xué)號∏

SNO(σCNO=’C1’VCNO=’C3’(SC))(5)檢索不學(xué)習(xí)課程號為C2的學(xué)生的姓名和年齡∏SN,AGE(S)-∏SN,AGE(σCNO=’C2’(S∞SC))專門的關(guān)系運(yùn)算課后問題:設(shè)有學(xué)生-課程關(guān)系數(shù)據(jù)庫,它由三個(gè)關(guān)系組成,它們的模式是:學(xué)生S(學(xué)號S#,姓名SN,所在系SD,年齡SA)、課程C(課程號C#,課程名CN,先修課號PC#)、SC(學(xué)號S#,課程號C#,成績G)。請用關(guān)系代數(shù)分別寫出下列查詢:(1)檢索學(xué)生年齡大于等于20歲的學(xué)生姓名。(2)檢索先修課號為C2的課程號。(3)檢索課程號C1的成績?yōu)?0分以上的所有學(xué)生姓名。(4)檢索001號學(xué)生修讀的所有課程名及先修課號。(5)檢索年齡為19歲的學(xué)生所修讀的課程名。實(shí)體的聯(lián)系有兩類,一類是實(shí)體與實(shí)體之間的聯(lián)系;另一類是實(shí)體內(nèi)部各屬性間的聯(lián)系。關(guān)系模式中各個(gè)屬性之間的相互關(guān)聯(lián),就是數(shù)據(jù)依賴,它是規(guī)范化理論中一個(gè)最重要、最基本的概念,是數(shù)據(jù)庫模式設(shè)計(jì)的關(guān)鍵。本節(jié)重點(diǎn)介紹兩個(gè)問題:函數(shù)依賴:數(shù)據(jù)依賴中最重要的一種關(guān)系的規(guī)范化2.4關(guān)系的規(guī)范化

數(shù)據(jù)依賴共有三種:函數(shù)依賴(FunctionalDependency,簡稱FD)、多值依賴(MultivaluedDependency,簡稱MVD)和連接依賴(JoinDependency,簡稱JD),其中最重要的是函數(shù)依賴。本節(jié)知識點(diǎn)即為函數(shù)依賴。2.4.1函數(shù)依賴1、函數(shù)依賴的概念所謂函數(shù)依賴是指在關(guān)系R中,X、Y為R的兩個(gè)屬性或?qū)傩越M,如果關(guān)系R存在:對于X的每一個(gè)具體值,Y都只有一個(gè)具體值與之對應(yīng),則稱屬性Y函數(shù)依賴于屬性X。記作X→Y。2.4.1函數(shù)依賴函數(shù)依賴的簡單表述:如果屬性X的值決定屬性Y的值,那么屬性Y函數(shù)依賴于屬性X?;蛘?,如果知道X的值,就可以獲得Y的值。所以X→Y可以叫做Y函數(shù)依賴于X,也可以叫做X函數(shù)決定Y,或X決定Y。2.4.1函數(shù)依賴?yán)龑W(xué)生情況表2.4.1函數(shù)依賴學(xué)號姓名專業(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-2050學(xué)生情況表對應(yīng)的關(guān)系模式可描述為:學(xué)生情況(學(xué)號,姓名,專業(yè)名,性別,出生日期,總學(xué)分)其中,學(xué)號為主鍵,則存在如下的函數(shù)依賴關(guān)系:學(xué)號→姓名;學(xué)號→專業(yè)名;學(xué)號→性別;學(xué)號→出生日期;學(xué)號→總學(xué)分2.4.1函數(shù)依賴2、幾種特定的函數(shù)依賴*(1)非平凡函數(shù)依賴和平凡函數(shù)依賴設(shè)關(guān)系模式R(U),X、Y?U;如果X→Y,且Y?X,則稱X→Y為平凡的函數(shù)依賴。如果X→Y,且Y不是X的子集,則稱X→Y為非平凡的函數(shù)依賴。2.4.1函數(shù)依賴?yán)涸趯W(xué)生課程關(guān)系(學(xué)生號,課程號,成績)中,若存在函數(shù)依賴:(1)(學(xué)生號,課程號)→成績;(2)(學(xué)生號,課程號)→課程號;(1)為非平凡函數(shù)依賴(2)為平凡函數(shù)依賴2.4.1函數(shù)依賴(2)完全函數(shù)依賴和部分函數(shù)依賴**定義:設(shè)關(guān)系模式R(U),X,Y?U;如果X→Y,并且對于X的任何一個(gè)真子集Z,Z→Y都不成立,則稱Y完全函數(shù)依賴于X。若X→Y,但對于X的某一個(gè)真子集Z,有Z→Y成立,則稱Y部分函數(shù)依賴于X。2.4.1函數(shù)依賴?yán)涸趯W(xué)生課程關(guān)系(學(xué)號,課程號,成績)中,主碼為(學(xué)號,課程號)。因?yàn)閷W(xué)號→成績不成立,課程號→成績也不成立,所以(學(xué)號,課程號)→成績?yōu)橥耆瘮?shù)依賴。又例:在選課關(guān)系(學(xué)號,課程號,姓名,成績)中,(學(xué)號,課程號)是主碼。由于:學(xué)號→姓名成立,因此:姓名部分函數(shù)依賴于(學(xué)號,課程號)。2.4.1函數(shù)依賴(3)傳遞函數(shù)依賴**設(shè)關(guān)系模式R(U),X?U,Y?U,Z?U。如果X→Y,Y→Z成立,則稱X→Z為傳遞函數(shù)依賴。

例如:學(xué)生關(guān)系(學(xué)號,姓名,性別,年齡,所在系,系主任),其上的函數(shù)依賴集F={學(xué)號→姓名,學(xué)號→性別,學(xué)號→年齡,學(xué)號→所在系,所在系→系主任},則學(xué)號→系主任為傳遞函數(shù)依賴。2.4.1函數(shù)依賴3、碼的函數(shù)依賴表示函數(shù)依賴的概念給出關(guān)系模式中碼的更嚴(yán)格定義:候選碼:設(shè)K為關(guān)系模式R(U)中的屬性或?qū)傩约?。若K→U,則K稱為R的一個(gè)候選碼。若關(guān)系模式R有多個(gè)候選碼,則選定其中一個(gè)作為主碼。2.4.1函數(shù)依賴1、通俗的解釋你對完全函數(shù)依賴的理解。2、通俗的解釋你對部分函數(shù)依賴的理解。3、通俗的解釋你對傳遞函數(shù)依賴的理解。4、通俗的解釋你對候選碼的函數(shù)依賴表示的理解。5、對于本節(jié)知識,你還存在哪些困惑。函數(shù)依賴課后問題:設(shè)有一描述學(xué)校的數(shù)據(jù)庫:含有這樣一個(gè)關(guān)系模式:學(xué)生信息表(學(xué)號,姓名,年齡,系別,系主任,課程號,成績),(學(xué)號,課程號)為主鍵。其中,一個(gè)系有若干學(xué)生,一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系只有一名主任;一個(gè)學(xué)生可以選修多門課程,每門課程有若干學(xué)生選修;每個(gè)學(xué)生所學(xué)的每門課程都有一個(gè)成績。2.4.2關(guān)系規(guī)范化2.4.2關(guān)系規(guī)范化學(xué)號姓名年齡系別系主任課程號成績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é)生信息表關(guān)系模式學(xué)生信息表中存在如下問題*:①數(shù)據(jù)冗余(浪費(fèi)大量的存儲空間)。例:每一個(gè)系主任的姓名重復(fù)出現(xiàn)很多次②更新異常(數(shù)據(jù)冗余,更新數(shù)據(jù)時(shí),維護(hù)數(shù)據(jù)完整性代價(jià)大) 例:某系更換系主任后,系統(tǒng)必須修改與該系學(xué)生有關(guān)的每一個(gè)元組2.4.2關(guān)系規(guī)范化③插入異常(該插的數(shù)據(jù)插不進(jìn)去)例:如果一個(gè)系剛成立,尚無學(xué)生,我們就無法把這個(gè)系及其系主任的信息存入數(shù)據(jù)庫。④刪除異常(不該刪除的數(shù)據(jù)不得不刪)例:如果某個(gè)系的學(xué)生全部畢業(yè)了,我們在刪除該系學(xué)生信息的同時(shí),把這個(gè)系及其系主任的信息也刪掉了。2.4.2關(guān)系規(guī)范化以上問題產(chǎn)生的原因:由存在于模式中的某些不合適的數(shù)據(jù)依賴引起的。解決方法:*通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴。

本節(jié)包含兩個(gè)知識點(diǎn):1、關(guān)系模式規(guī)范化的目的2、關(guān)系規(guī)范化過程

2.4.2關(guān)系規(guī)范化關(guān)系模式規(guī)范化的目的是解決關(guān)系模式中存在的數(shù)據(jù)冗余、插入和刪除異常以及更新異常等問題?;舅枷耄合龜?shù)據(jù)依賴中的不合適部分,即模式分解。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的規(guī)范化要求,對于不同的規(guī)范化程度可用范式來衡量。范式(NormalForm)是符合某一種級別的關(guān)系模式的集合,是衡量關(guān)系模式規(guī)范化程度的標(biāo)準(zhǔn),達(dá)到的關(guān)系才是規(guī)范化的。1、關(guān)系模式規(guī)范化的目的目前主要有6種范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。滿足最低要求的叫第一范式,簡稱為1NF。在第一范式基礎(chǔ)上進(jìn)一步滿足一些要求的為第二范式,簡稱為2NF。其余以此類推。1、關(guān)系模式規(guī)范化的目的范式之間存在聯(lián)系:1NF?2NF?3NF?BCNF?4NF?5NF。通常把某一關(guān)系模式R為第n范式簡記為R∈nNF。在這些范式中,最重要的是3NF和BCNF,它們是進(jìn)行規(guī)范化的主要目標(biāo)。1、關(guān)系模式規(guī)范化的目的1、不規(guī)范的關(guān)系可能存在哪些問題。2、關(guān)系模式規(guī)范化的目的和基本思想。3、什么是范式。4、范式中,最重要的是

,它們是進(jìn)行規(guī)范化的主要目標(biāo)。關(guān)系模式規(guī)范化的目的課后問題:一個(gè)低一級范式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換為若干個(gè)高一級范式的關(guān)系模式的集合,這個(gè)過程稱為規(guī)范化。*通常實(shí)際應(yīng)用中,規(guī)范化到3NF就可以了。2、關(guān)系的規(guī)范化過程**(1)第一范式(1NF)定義:設(shè)R是一個(gè)關(guān)系模式。如果R的每個(gè)屬性的值域都是不可分的簡單數(shù)據(jù)項(xiàng)(原子)的集合,則稱這個(gè)關(guān)系模式屬于第一范式,簡記作R∈1NF。簡單表述:如果關(guān)系模式R的每一個(gè)屬性都是不可分解的,則R∈1NF。

1NF是規(guī)范化最低的范式,在任何一個(gè)關(guān)系數(shù)據(jù)庫系統(tǒng)中,關(guān)系至少應(yīng)該是第一范式。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。

2、關(guān)系的規(guī)范化過程例如:職工情況表

職工號姓名工資基本工資職務(wù)工資工齡工資20017李嵐8903003020013王曉江900300402、關(guān)系的規(guī)范化過程可規(guī)范為:職工情況表職工號姓名基本工資職務(wù)工資工齡工資20017李嵐8903003020013王曉江900300402、關(guān)系的規(guī)范化過程2、第二范式(2NF)**定義:如果關(guān)系模式R是第一范式,且每個(gè)非主屬性都完全函數(shù)依賴于碼,則稱R為滿足第二范式的模式,記為:R∈2NF。

在一個(gè)關(guān)系中,包含在任何候選碼中的各個(gè)屬性都稱為主屬性;不包含在任何候選碼中的屬性稱為非主屬性。2、關(guān)系的規(guī)范化過程(1)主關(guān)鍵字只有一個(gè)屬性的關(guān)系一定是第二范式。例如:關(guān)系R(學(xué)號,姓名,出生日期,成績)主屬性為學(xué)號;非主屬性為姓名、出生日期、成績。存在下列函數(shù)依賴關(guān)系:學(xué)號→姓名,學(xué)號→性別,學(xué)號→出生日期,學(xué)號→成績由于每個(gè)非主屬性都完全函數(shù)依賴于碼,所以該關(guān)系R∈2NF。2、關(guān)系的規(guī)范化過程(2)主關(guān)鍵字是屬性的組合,這樣的關(guān)系模式可能不是第二范式。例如:關(guān)系S(學(xué)號,姓名,性別,課程,學(xué)分),其中學(xué)號和課程為主屬性;姓名、性別、學(xué)分為非主屬性。存在下列函數(shù)依賴關(guān)系:學(xué)號→姓名,學(xué)號→性別,(課程、學(xué)號)→學(xué)分2、關(guān)系的規(guī)范化過程存在非主屬性部分函數(shù)依賴于碼,故關(guān)系S不屬于2NF。根據(jù)最小函數(shù)依賴的情況,對上述關(guān)系模式進(jìn)行分解,分解為兩個(gè)關(guān)系:S1(學(xué)號,姓名,性別)S2(學(xué)號,課程,學(xué)分)S1∈2NF;S2∈2NF。2、關(guān)系的規(guī)范化過程又例如:職工信息P(職工號,姓名,職稱,項(xiàng)目號,項(xiàng)目名稱,項(xiàng)目排名)其中,主碼為(職工號,項(xiàng)目號),非主屬性為(姓名,職稱,項(xiàng)目名稱,項(xiàng)目排名)關(guān)系P中存在的函數(shù)依賴:職工號→姓名;(職工號,項(xiàng)目號)→項(xiàng)目排名;職工號→職稱;項(xiàng)目號→項(xiàng)目名稱。2、關(guān)系的規(guī)范化過程根據(jù)最小函數(shù)依賴,上述關(guān)系模式分解為三個(gè)關(guān)

溫馨提示

  • 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

提交評論