關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)_第1頁(yè)
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)_第2頁(yè)
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)_第3頁(yè)
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)_第4頁(yè)
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、關(guān)系模型的數(shù)據(jù)結(jié)構(gòu) 關(guān)系模型源于數(shù)學(xué),它用二維表來(lái)組織數(shù)據(jù),而這個(gè)二維表在關(guān)系數(shù)據(jù)庫(kù)中稱為 關(guān)系。關(guān)系數(shù)據(jù)庫(kù)是表的集合 用關(guān)系表示實(shí)體以及實(shí)體間的聯(lián)系的模型,稱為關(guān)系模型,下面我們來(lái)看看關(guān)系 模型中的基本術(shù)語(yǔ) 1.關(guān)系關(guān)系就是二維表,它滿足以下幾個(gè)條件1)關(guān)系表中的每一列都是不可再分的基本屬性。(有子屬性,分開(kāi)了,不是關(guān) 系表)2)表中的各屬性不能重名3)表中的行、列次序并不重要,即交換列的前后順序(比如將性別放在年齡前 面)不影響其表達(dá)的一個(gè)語(yǔ)義。2. 元組表中的每一行數(shù)據(jù)稱為一個(gè)元組,它相當(dāng)于一個(gè)記錄值3. 屬性表中的每一列是一個(gè)屬性值的集合,列可以命名,稱為屬性名,屬性與前面講到 的實(shí)體

2、屬性(特征)或記錄的字段意義相當(dāng)。關(guān)系表中的每一行數(shù)據(jù)不允許完全相同,因?yàn)榇鎯?chǔ)值完全相同的兩行或多行數(shù)據(jù) 并沒(méi)有實(shí)際意義4. 主鍵主鍵也稱主碼或主關(guān)鍵字,是表中用于唯一確定一個(gè)元組的一個(gè)屬性或最小屬性 組。主鍵可以由一個(gè)屬性組成,也可以由多個(gè)屬性共同組成。如表所示,學(xué)號(hào)就是此學(xué)生基本信息表的主鍵,因?yàn)樗梢晕ㄒ坏卮_定一個(gè)學(xué)生。 而表所示的關(guān)系的主鍵就由學(xué)號(hào)和課程號(hào)共同組成,因?yàn)橐粋€(gè)學(xué)生可以選修多門(mén) 課程,而且一門(mén)課程也可以有多個(gè)學(xué)生選修, 因此,只有將學(xué)號(hào)和課程號(hào)結(jié)合起 來(lái)才能共同的確定一行記錄。通常稱由多個(gè)屬性共同組成的主鍵為復(fù)合主鍵。 表的主鍵與其實(shí)際應(yīng)用語(yǔ)義有關(guān),與表設(shè)計(jì)者的意圖有關(guān),如

3、表,用(學(xué)號(hào),課 程號(hào))作為主鍵在一個(gè)學(xué)生對(duì)一門(mén)課程只能有一次考試的前提下是成立的,如果如果是如果能如果表設(shè)定一個(gè)學(xué)生對(duì)一門(mén)課程可以有多次考試,則用(學(xué)號(hào),課程號(hào))作主鍵就不夠 了,因?yàn)橐粋€(gè)學(xué)生對(duì)一門(mén)課程有多少次考試,則這個(gè)值就回重復(fù)多少遍, 這種情況,就必須為這個(gè)表添加一個(gè)“考試次數(shù)”列,同時(shí)作為主鍵 有時(shí)一個(gè)表中可能存在多個(gè)可以作主鍵的屬性,比如,對(duì)于學(xué)生信息表,夠保證姓名肯定不重復(fù)的話,那么姓名也可以作為學(xué)生基本信息的主鍵, 中存在多個(gè)可以作為主鍵的屬性,則稱這些屬性為候選鍵屬性,相應(yīng)的鍵稱為候 選鍵,從中選一個(gè)作為主鍵都是可以的。5. 域?qū)傩缘娜≈捣秶Q為域。例如,大學(xué)生的年齡假設(shè)在1

4、440歲范圍內(nèi),則學(xué)生的 “年齡”屬性的域就是(1440)關(guān)系模型的數(shù)據(jù)操作 增刪改查 關(guān)系模型的數(shù)據(jù)完整性約束數(shù)據(jù)完整性是指數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)是有意義的,是正確的。主要包括三大類1)實(shí)體完整性 是指的是關(guān)系數(shù)據(jù)庫(kù)中所有的表都必須有主鍵,而且表中不允許存在以下兩 種情況(1)無(wú)主鍵值的記錄(2)主鍵值相同的記錄因?yàn)槿粲涗洓](méi)有主鍵值,則此記錄在表中一定是無(wú)意義的。關(guān)系模型 中的每一行記錄都對(duì)應(yīng)客觀存在的一個(gè)實(shí)例或一個(gè)事實(shí),比如,一個(gè) 學(xué)號(hào)唯一地確定了一個(gè)學(xué)生,如果表中存在沒(méi)有學(xué)號(hào)的學(xué)生記錄,則 此學(xué)生一定不屬于正常管理的學(xué)生。另外,如果表中存在主鍵值相等 的兩個(gè)或多個(gè)記錄,則這兩個(gè)或多個(gè)記錄會(huì)對(duì)

5、應(yīng)同一個(gè)實(shí)例,這會(huì)出 現(xiàn)兩種情況。第一,表中的其他值也完全相同,則這些記錄就是重復(fù) 記錄,存儲(chǔ)重復(fù)的記錄是沒(méi)有意義的,第二,如果其他值不完全相同, 則會(huì)出現(xiàn)語(yǔ)義矛盾,哪條記錄才是真實(shí)的實(shí)體中每個(gè)具體的記錄值(一行數(shù)據(jù)),比如學(xué)生實(shí)體中的每個(gè)具體的學(xué)生, 稱為實(shí)體的一個(gè)實(shí)例。2)參照完整性參照完整性有時(shí)也稱為引用完整性?,F(xiàn)實(shí)世界中的實(shí)體之間往往存在著某種聯(lián)系, 在關(guān)系模型中,實(shí)體以及實(shí)體之間的聯(lián)系都是用關(guān)系來(lái)表示的,這樣就自然存在著關(guān)系(表)與關(guān)系(表)之間的引用關(guān)系。參照完整性就是描述實(shí)體之間的聯(lián) 系的。參照完整性一般是指多個(gè)實(shí)體或表之間的關(guān)聯(lián)關(guān)系。比如表2-3中,學(xué)生選課信息表所描述的學(xué)生必

6、須受限于表 2-1學(xué)生基本信息表中已有的學(xué)生,不能在學(xué)生 選課信息表中描述一個(gè)根本就不存在的學(xué)生, 也就是學(xué)生選課信息表中學(xué)號(hào)的取 值必須在學(xué)生基本信息表中學(xué)號(hào)的取值范圍內(nèi)。 這種一個(gè)表中某列的取值受限于 另一個(gè)表的某列的取值范圍約東的特點(diǎn)就稱為參照完整性。在關(guān)系數(shù)據(jù)庫(kù)中用外鍵(foreignkey,有時(shí)也稱為外部關(guān)鍵字或外碼)來(lái)實(shí)現(xiàn)參照完整性。例如,只要將學(xué)生選課表中的“學(xué)號(hào)”定義為引用學(xué)生基本信息表的“學(xué)號(hào)”的外鍵, 就可以保證選課表中的“學(xué)號(hào)”的取值在學(xué)生基本信息表的已有“學(xué)號(hào)”范圍 內(nèi) 外鍵一般出現(xiàn)在聯(lián)系所對(duì)應(yīng)的關(guān)系中,用于表示兩個(gè)或多個(gè)實(shí)體之間的關(guān)聯(lián)關(guān)系。 外鍵實(shí)際上是表中的一個(gè)(或

7、多個(gè))屬性,它引用某個(gè)其他表(特殊情況下,也可以是外鍵所在(2.4的表)的主鍵,當(dāng)然,也可以是候選鍵,但多數(shù)情況下是 主鍵。下面舉例說(shuō)明如何指定外鍵 例2-1】學(xué)生和專業(yè)可以用下面的關(guān)系表示,其中主鍵用下劃線標(biāo)識(shí)。 學(xué)生(學(xué)號(hào),姓名,性別,專業(yè)號(hào),出生日期)專業(yè)(專業(yè)號(hào),專業(yè)名) 這兩個(gè)關(guān)系之間存在著屬性引用關(guān)系,即學(xué)生關(guān)系中的“專業(yè)號(hào)”引用了專業(yè)關(guān) 系中的“專業(yè)號(hào)”,顯然,學(xué)生關(guān)系中的“專業(yè)號(hào)”的值必須是確實(shí)存在的專業(yè) 的專業(yè)號(hào)。也就是說(shuō),學(xué)生關(guān)系中的“專業(yè)號(hào)”引用了專業(yè)關(guān)系中的“專業(yè)號(hào)”, 是引用了專業(yè)關(guān)系中的“專業(yè)號(hào)”的外鍵【例2-2】學(xué)生、課程以及學(xué)生與課程之間的選課關(guān)系可以用以下 3

8、個(gè)關(guān)系表示, 其中主鍵用下劃線標(biāo)識(shí)。學(xué)生(學(xué)號(hào),姓名,性別,專業(yè)號(hào),出生日期)課程(課程號(hào),課程名,學(xué)分)選課(學(xué)號(hào),課程號(hào),成績(jī))這3個(gè)關(guān)系中,選課關(guān)系中的“學(xué)號(hào)”必須是學(xué)生關(guān)系中已有的學(xué)生,因此選課關(guān)系中號(hào)”引用了學(xué)生關(guān)系中的“學(xué)號(hào)”。 同樣,選課關(guān)系中的“課程號(hào)”也必 須是課程關(guān)系中已有的課程,即選課關(guān)系中的“課程號(hào)”引用了課程關(guān)系中的“課程號(hào)”。因此,選課關(guān)系中的“學(xué)號(hào)”是引用了學(xué)生關(guān)系中的“學(xué)號(hào)”的外 鍵,而“課程號(hào)”是引用了課程關(guān)系中的“課程號(hào)”的外鍵。主鍵必須是非空且不重復(fù)的,但外鍵無(wú)此要求。外鍵可以有重復(fù)值,這點(diǎn)從表 2-3中可以看出。外鍵也可以取空值,例如,職工與其所在的部門(mén)

9、可以用以下兩 個(gè)關(guān)系表示。職工(職工號(hào),職工名,部門(mén)號(hào),工資級(jí)別) 部門(mén)(部門(mén)號(hào),部門(mén)名) 其中,職工關(guān)系的“部門(mén)號(hào)”是引用部門(mén)關(guān)系的“部門(mén)號(hào)”的外鍵, 如果某新來(lái) 職工還沒(méi)有被分配到具體的部門(mén),則其“部門(mén)號(hào)”就為空值;如果職工已經(jīng)被分 配到了某個(gè)部門(mén),則其部門(mén)號(hào)就有了確定的值(非空值)。3)用戶定義完整性用戶定義的完整性也稱為域完整性或語(yǔ)義完整性。任何關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)都應(yīng) 該支持實(shí)體完整性和參照完整性, 除此之外,不同的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)根據(jù)其應(yīng)用 環(huán)境的不同,往往還需要一些特殊的約東條件,用戶定義的完整性就是針對(duì)某一 具體應(yīng)用領(lǐng)域定義的數(shù)據(jù)約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足 應(yīng)

10、用語(yǔ)義的要求。用戶定義的完整性實(shí)際上就是指明關(guān)系中屬性的取值范圍,也就是屬性的域,這樣可以限制關(guān)系中屬性的取值類型及取值范圍,防止屬性的值與應(yīng)用語(yǔ)義矛盾。例如,學(xué)生的考試成績(jī)的取值范圍為 0-100,人的性別的取值是男,女。關(guān)系規(guī)范化 為什么要關(guān)系規(guī)范化觀察這個(gè)表的數(shù)據(jù),會(huì)發(fā)現(xiàn)有以下幾個(gè)問(wèn)題 數(shù)據(jù)冗余問(wèn)題:在這個(gè)關(guān)系中,有關(guān)學(xué)生所在系和其所對(duì)應(yīng)的宿舍樓的信息有 冗余,因?yàn)橐粋€(gè)系有多少個(gè)學(xué)生,這個(gè)系所對(duì)應(yīng)的宿舍樓的信息就要重復(fù)存儲(chǔ)多 少遍。而且學(xué)生基本信息(包括學(xué)生學(xué)號(hào)、姓名、性別、所在系)也有重復(fù),一 個(gè)學(xué)生修了多少門(mén)課,他的基本信息就重復(fù)多少遍。 數(shù)據(jù)更新問(wèn)題:如果某一學(xué)生從數(shù)字媒體系轉(zhuǎn)到了

11、信息管理系,那么不但要修 改此學(xué)生的 Sdept列的值,還要修改其Sloe列的值,從而使修改復(fù)雜化。 數(shù)據(jù)插入問(wèn)題:如果新成立了某個(gè)系,并且也確定好了此系學(xué)生的宿舍樓,即 已經(jīng)有了 Sdept和Sloe信息,但也不能將這個(gè)信息插入到表 1中,因?yàn)檫@個(gè) 系還沒(méi)有招生,其Sno和Cno列的值均為空,而Sno和Cno是這個(gè)表的主屬性, 因此不能為空。數(shù)據(jù)刪除問(wèn)題:如果一個(gè)學(xué)生只選了一門(mén)課,而后來(lái)又不選了,則應(yīng)該刪除此 學(xué)生選此門(mén)課程的記錄。但由于這個(gè)學(xué)生只選了一門(mén)課,則刪掉此學(xué)生的選課記 錄的同時(shí)也刪掉了此學(xué)生的其他基本信息。這些都是操作異常,為什么會(huì)出現(xiàn)操作異常呢,就是關(guān)系模式?jīng)]有設(shè)計(jì)好。為了解決

12、這類似的問(wèn)題,我們就要按照關(guān)系規(guī)范化去進(jìn)行設(shè)計(jì)。1.關(guān)系中的碼例1:有關(guān)系模式:學(xué)生(學(xué)號(hào),姓名,性別,身份證號(hào),年齡,所在系) 候選碼為:學(xué)號(hào),身份證號(hào) 主鍵可以為“學(xué)號(hào)”或者是“身份證號(hào)”。主屬性為:學(xué)號(hào),身份證號(hào) 作主屬性為:姓名,性別,年齡,所在系。例2:有關(guān)系模式:選課(學(xué)號(hào),課程號(hào),考試次數(shù),成績(jī)) 設(shè)一個(gè)學(xué)生對(duì)一門(mén)課程可以有多次考試,每一次考試有一個(gè)考試成績(jī) 候選碼為:(學(xué)號(hào),課程號(hào),考試次數(shù)),也為主鍵 主屬性為:學(xué)號(hào),課程號(hào),考試次數(shù) 非主屬性為:成績(jī)。例3:有關(guān)系模式:授課(教師號(hào),課程號(hào),學(xué)年) 其語(yǔ)義為:一個(gè)教師在一個(gè)學(xué)年可以講授多門(mén)不同的課程, 可以在不同學(xué)年對(duì)同 一

13、門(mén)課程講授多次,但不能在同一個(gè)學(xué)年對(duì)同一門(mén)課程講授多次。 一門(mén)課程在一 個(gè)學(xué)年可以由多個(gè)不同的教師講授,同一個(gè)學(xué)年可以開(kāi)設(shè)多門(mén)課程,同一門(mén)課程 可以在不同學(xué)年開(kāi)設(shè)多次。其候選碼為:(教師號(hào),課程號(hào),學(xué)年),因?yàn)橹挥校ń處熖?hào),課程號(hào),學(xué)年) 三者才能唯一的確定一個(gè)元組。這里的候選碼也是主鍵 主屬性為:教師號(hào),課程號(hào),學(xué)年。沒(méi)有非主屬性。稱這種候選碼為全部屬性的表為全碼表。2.范式1NF第一范式(1NF )是指數(shù)據(jù)表中的每個(gè)字段必須是不可拆分的最小單元。2NF 第二范式(2NF )是指滿足1NF后,要求表中的所有列,都必須依賴于主鍵, 而不能有任何一列與主鍵沒(méi)有關(guān)系,也就是說(shuō)一個(gè)表只描述一件事情。

14、這個(gè)是什么意思呢,意思就是說(shuō),表中除了主鍵的其他列,不能和主鍵沒(méi)有關(guān)系, 但其實(shí)這句話又有點(diǎn)相互矛盾,既然沒(méi)關(guān)系,又怎么會(huì)放在同一列中呢,其實(shí)可 以這樣想,單獨(dú)把這一列和主鍵拿出來(lái),如果他們之間沒(méi)有關(guān)系,那肯定是不滿 足第二范式的。這是一張成績(jī)表,包括學(xué)號(hào)、課程號(hào)、成績(jī)和學(xué)分,主鍵為學(xué)號(hào),但是單獨(dú)將學(xué) 分和學(xué)號(hào)拿出來(lái),兩個(gè)沒(méi)有關(guān)系,所以不滿足第二范式。第三范式(3NF)是指必須先滿足第二范式(2NF ),另外要求表中的每一列只 與主鍵直接相關(guān)而不是間接相關(guān)。這個(gè)又是什么意思呢,似乎和第二范式的描述差不多啊, 其實(shí)不然,還是有細(xì)微差別的,第三范式保證了表中的字段消除了傳遞依賴,比如C依賴于B,B

15、依賴 于A,那么C依賴于A,像這樣的情況不能讓 A、B、C出現(xiàn)在同一個(gè)表中??梢钥闯?,學(xué)院地點(diǎn)與學(xué)號(hào)不是直接相關(guān)連, 學(xué)院地點(diǎn)和學(xué)院號(hào)直接相關(guān)連, 所 以不滿足數(shù)據(jù)庫(kù)第三范式。如何轉(zhuǎn)換呢?2NF函數(shù)依賴關(guān)系的分解過(guò)程有以下幾個(gè)步驟可以用模式分解的辦法將非2NF的關(guān)系模式分解為多個(gè)2NF的關(guān)系模式。步驟 用組成主鍵的屬性集合的每一個(gè)子集作為主鍵構(gòu)成一個(gè)關(guān)系模式。 將依賴于這些主鍵的屬性放置到相應(yīng)的關(guān)系模式中 最后去掉只由主鍵的子集構(gòu)成的關(guān)系模式例如,對(duì)S-L-C表,首先分解為如下的三個(gè)關(guān)系模式(下劃線部分表示主鍵):S-l(S no,.)C(C no,.)S-c(S no,Cn o,.) 然后,將依賴于這些主鍵的屬性放置到相應(yīng)的關(guān)系模式中,形成如下三個(gè)關(guān)系模 式S-l(Sno,Sname, Ssex, Sdept, Sloc)C (Cnc)S-c(s no,con, grade)最后,去掉只由主鍵的子集構(gòu)成的關(guān)系模式,也就是去掉C(Cnc)關(guān)系模式。SLC關(guān)系模式最終被分解的形式為:s-l(S no,Sha ne, Ssex,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論