結(jié)構(gòu)數(shù)據(jù)模型課件_第1頁(yè)
結(jié)構(gòu)數(shù)據(jù)模型課件_第2頁(yè)
結(jié)構(gòu)數(shù)據(jù)模型課件_第3頁(yè)
結(jié)構(gòu)數(shù)據(jù)模型課件_第4頁(yè)
結(jié)構(gòu)數(shù)據(jù)模型課件_第5頁(yè)
已閱讀5頁(yè),還剩253頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章數(shù)據(jù)模型本章學(xué)習(xí)要求:1.層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型了解層次及網(wǎng)狀數(shù)據(jù)模型的基本概念和結(jié)構(gòu)。2.關(guān)系數(shù)據(jù)模型掌握關(guān)系數(shù)據(jù)模型的基本概念以及關(guān)系代數(shù)操作。了解層次、網(wǎng)狀和關(guān)系模型之間的差別。3.對(duì)傳統(tǒng)模型的評(píng)價(jià)了解傳統(tǒng)模型的不足之處。4.E-R數(shù)據(jù)模型

掌握E-R模型的概念和表示。5.面向?qū)ο髷?shù)據(jù)模型

了解面向?qū)ο髷?shù)據(jù)模型的基本概念。第2章數(shù)據(jù)模型本章學(xué)習(xí)要求:1數(shù)據(jù)模型可分為兩類:獨(dú)立于計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)模型,它完全不涉及信息在計(jì)算機(jī)系統(tǒng)中的表示,只是用來描述某個(gè)特定組織所關(guān)心的信息結(jié)構(gòu),這類模型稱為“概念數(shù)據(jù)模型”。概念模型用于建立信息世界的數(shù)據(jù)模型,強(qiáng)調(diào)其語義表達(dá)能力,概念應(yīng)該簡(jiǎn)單,清晰,易于用戶理解,它是現(xiàn)實(shí)世界的第一層抽象,是用戶和數(shù)據(jù)庫(kù)人員之間進(jìn)行交流的工具。最著名的是“實(shí)體聯(lián)系模型”。數(shù)據(jù)模型可分為兩類:獨(dú)立于計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)模型,它完全不涉22.直接面向數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)的數(shù)據(jù)模型,它是現(xiàn)實(shí)世界的第二層抽象。這類模型涉及到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng),又稱為“基本數(shù)據(jù)模型”或“結(jié)構(gòu)數(shù)據(jù)模型”。例如,層次、網(wǎng)狀、關(guān)系、面向?qū)ο髷?shù)據(jù)模型”.這類模型有嚴(yán)格的形式化定義,以便在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)。2.直接面向數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)的數(shù)據(jù)模型,它是現(xiàn)實(shí)世界的第二32.1層次數(shù)據(jù)模型用樹型(層次)結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為層次數(shù)據(jù)模型(hierarchicaldatamodel)。2.1層次數(shù)據(jù)模型用樹型(層次)結(jié)構(gòu)表示實(shí)體類型及4基本概念和結(jié)構(gòu)記錄和字段雙親子女關(guān)系層次數(shù)據(jù)模式虛擬記錄層次數(shù)據(jù)的線性表示基本概念和結(jié)構(gòu)5記錄和字段

記錄是用來描述某個(gè)事物或事物間關(guān)系的命名的數(shù)據(jù)單位,也是存儲(chǔ)的數(shù)據(jù)單位。一個(gè)記錄包含若干字段。每個(gè)字段也是命名的,字段只能是簡(jiǎn)單數(shù)據(jù)類型(整數(shù)、實(shí)數(shù)、字符串等)。記錄和字段6系系名系號(hào)系主任名地點(diǎn)記錄的型計(jì)算機(jī)系9李西遠(yuǎn)科技館記錄的一個(gè)實(shí)例系系名系號(hào)系主任名地點(diǎn)記錄的型計(jì)算機(jī)系9李西遠(yuǎn)科技館記錄的一7雙親子女關(guān)系(Parent-ChildRelationship,PCR)反映兩個(gè)記錄型之間的一對(duì)多(1:N)關(guān)系系班計(jì)算機(jī)系901班911班921班931班1NPCR型PCR實(shí)例雙親子女關(guān)系(Parent-ChildRelationsh8層次數(shù)據(jù)模式層次數(shù)據(jù)模式由PCR構(gòu)成層次數(shù)據(jù)模式系班學(xué)生教研組教師層次數(shù)據(jù)模式層次數(shù)據(jù)模式系班學(xué)生教研組教師9計(jì)算機(jī)系901班911班921班931班硬件教研組軟件教研組王一張三李四趙立錢英孫玉周新吳堅(jiān)鄭山洪流陳芝丁偉………………層次數(shù)據(jù)模式實(shí)例計(jì)算機(jī)系901班911班921班931班硬件教研組軟件教研組10在層次數(shù)據(jù)模式中,除根以外,所有的記錄型都應(yīng)該有唯一的雙親,但可以有多個(gè)子女,子女按從左到右的次序排序。在層次數(shù)據(jù)模式中,除根以外,所有的記錄型都應(yīng)該有唯11虛擬記錄非層次關(guān)系表示問題(1)M:N王一張三李四人工智能數(shù)據(jù)庫(kù)學(xué)生:課程:虛擬記錄王一張三李四人工智能數(shù)據(jù)庫(kù)學(xué)生:課程:12不允許一個(gè)記錄有多個(gè)雙親,需要復(fù)制記錄,導(dǎo)致冗余。如下圖:型實(shí)例學(xué)生課程王一人工智能張三人工智能數(shù)據(jù)庫(kù)李四人工智能數(shù)據(jù)庫(kù)不允許一個(gè)記錄有多個(gè)雙親,需要復(fù)制記錄,導(dǎo)致冗余。13(2)一個(gè)記錄是兩個(gè)以上PCR的子女學(xué)生班運(yùn)動(dòng)隊(duì)只能表示成下圖,存在冗余。學(xué)生班學(xué)生運(yùn)動(dòng)隊(duì)(2)一個(gè)記錄是兩個(gè)以上PCR的子女學(xué)生班運(yùn)動(dòng)隊(duì)只能表示成下14(3)多元關(guān)系供應(yīng)商零件工程項(xiàng)目供應(yīng)關(guān)系(3)多元關(guān)系供應(yīng)商零件工程項(xiàng)目供應(yīng)關(guān)系15可以用PCR表示為:供應(yīng)商零件工程項(xiàng)目零件供應(yīng)商工程項(xiàng)目供應(yīng)商工程項(xiàng)目零件…可以用PCR表示為:供應(yīng)商零件工程項(xiàng)目零件供應(yīng)商工程項(xiàng)目供應(yīng)16注意:書上圖2-12不能表示三元關(guān)系,因?yàn)楣?yīng)關(guān)系與供應(yīng)商,供應(yīng)關(guān)系與工程項(xiàng)目這兩個(gè)PCR的一個(gè)雙親實(shí)例,其子女集合是并關(guān)系,而不是迪卡爾積關(guān)系。供應(yīng)商零件工程項(xiàng)目供應(yīng)關(guān)系注意:書上圖2-12不能表示三元關(guān)系,因?yàn)楣?yīng)關(guān)系與17主要問題:數(shù)據(jù)冗余,為避免這一情況,只存一份記錄,其它引用該記錄的地方用指針代替——這種用指針代替的記錄稱為虛擬記錄。用下標(biāo)v表示,指針用虛線箭頭表示。(學(xué)生)v課程學(xué)生(課程)v主要問題:數(shù)據(jù)冗余,為避免這一情況,只存一份記錄,其它引用該18學(xué)生(學(xué)生)v班運(yùn)動(dòng)隊(duì)學(xué)生(學(xué)生)v班運(yùn)動(dòng)隊(duì)19層次數(shù)據(jù)的線性表示由于存儲(chǔ)器是線性的,層次數(shù)據(jù)必須變換成線性形式才能存儲(chǔ),層次數(shù)據(jù)模式的實(shí)例對(duì)應(yīng)一棵層次樹(或森林),對(duì)層次樹(或森林)按先序遍歷生成的序列稱為層次序列(hierarchicalsequence),規(guī)定以此作為存儲(chǔ)次序。計(jì)算機(jī)系901班王一…張三911班…931班…吳堅(jiān)硬件教研組鄭山…洪流軟件教研組…丁偉層次數(shù)據(jù)的線性表示計(jì)901王…張911…931…吳硬鄭…洪軟20層次數(shù)據(jù)模型的約束(1)除了根記錄外,任何其它記錄不能離開其雙親記錄而孤立存在;(2)任何記錄,不管虛實(shí),只允許有一個(gè)雙親記錄(保證層次數(shù)據(jù)模式及其實(shí)例是樹形);(3)虛擬記錄的指針必須指向一個(gè)實(shí)際存在的記錄,有虛擬記錄指向的記錄不得刪除;(4)虛擬記錄不得為根記錄。層次數(shù)據(jù)模型的約束21特點(diǎn):層次結(jié)構(gòu)是樹結(jié)構(gòu),樹的結(jié)點(diǎn)是記錄類型,非根結(jié)點(diǎn)有且只有一個(gè)父結(jié)點(diǎn)。上一層記錄類型和下一層記錄類型是1:N聯(lián)系。(因此不能表示M:N)特點(diǎn):層次結(jié)構(gòu)是樹結(jié)構(gòu),樹的結(jié)點(diǎn)是記錄類型,非根結(jié)點(diǎn)22層次模型的優(yōu)點(diǎn):記錄之間的聯(lián)系通過指針來實(shí)現(xiàn),查詢效率較高(針對(duì)層次結(jié)構(gòu))。層次模型的缺點(diǎn):1、只能表示1:N聯(lián)系,雖然可以采用虛擬記錄描述非層次數(shù)據(jù)關(guān)系,但較復(fù)雜,用戶不易掌握,并且非層次結(jié)構(gòu)的查詢效率比較低;2、由于層次順序的嚴(yán)格和復(fù)雜,引起數(shù)據(jù)的查詢和更新很復(fù)雜,因此應(yīng)用程序的編寫也比較復(fù)雜;3、模式描述語言較復(fù)雜,數(shù)據(jù)獨(dú)立性差。層次模型的優(yōu)點(diǎn):層次模型的缺點(diǎn):232.2網(wǎng)狀數(shù)據(jù)模型用有向圖(網(wǎng)絡(luò)結(jié)構(gòu))表示實(shí)體及實(shí)體之間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀數(shù)據(jù)模型(networkdatamodel)。有向圖中的結(jié)點(diǎn)是記錄類型,箭頭表示從箭尾的記錄類型到箭頭的記錄類型間聯(lián)系。2.2網(wǎng)狀數(shù)據(jù)模型用有向圖(網(wǎng)絡(luò)結(jié)構(gòu))表示實(shí)體及實(shí)24基本概念和結(jié)構(gòu)記錄和數(shù)據(jù)項(xiàng)數(shù)據(jù)項(xiàng)相當(dāng)于字段,記錄是數(shù)據(jù)項(xiàng)的有序結(jié)合。

系系表示兩個(gè)記錄型間的1:N關(guān)系;對(duì)應(yīng)“1”的為首記錄,對(duì)應(yīng)“N”的為屬記錄。系是命名的,有型值之分,例如:圖2-17就是系的型和值?;靖拍詈徒Y(jié)構(gòu)25班級(jí)學(xué)生一班王一李紅丁杰型值圖2-17班級(jí)—學(xué)生系班級(jí)學(xué)生一班王一李紅丁杰型值圖2-17班級(jí)—學(xué)生系26具有多種類型屬記錄的系稱為“多屬系”(multimemberset)多屬系系值:3個(gè)成員的并,而非“X”賬戶存款帳提款帳轉(zhuǎn)賬具有多種類型屬記錄的系稱為“多屬系”多屬系系值:3個(gè)成員的并27網(wǎng)狀模型的特點(diǎn):

與層次模型不同,網(wǎng)狀模型中,一個(gè)記錄型可以成為多個(gè)首記錄型的屬記錄——突破層次的限制;一個(gè)記錄型不能既作為一個(gè)系的首記錄又作為同一個(gè)系的屬記錄。

EMP領(lǐng)導(dǎo)網(wǎng)狀模型的特點(diǎn):EMP領(lǐng)導(dǎo)28——引入聯(lián)系記錄EMPLINK1:11:N1:1表示一人擔(dān)任一個(gè)領(lǐng)導(dǎo)崗位,系值見下一頁(yè)圖?!肼?lián)系記錄EMPLINK1:11:N1:1表示一29E4L1S1E7L2S1E9L3S1E3E5E1E6S2……S2S2E4L1S1E7L2S1E9L3S1E3E5E1E6S2……30一個(gè)記錄值不能出現(xiàn)在同一系型的多個(gè)系值中,否則不是1:N關(guān)系例如,學(xué)生(S)和課程(C)關(guān)系一個(gè)記錄值不能出現(xiàn)在同一系型的多個(gè)系值中,否則不是1:N關(guān)系31S1C1C2C3C4S1C5C6S1C1C2C3C4S1C5C632解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN型解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN33S1L1SLL2L3L4L5L6L7S2SLC1C2C3C4C5C6CLCLCLCLCLCL值S1L1SLL2L3L4L5L6L7S2SLC1C2C3C434LINK表示多元關(guān)系零件LINK1工程項(xiàng)目M1N供應(yīng)商1PLINK表示多元關(guān)系零件LINK1工程項(xiàng)目M1N供應(yīng)商135無首系,首記錄可以看成“系統(tǒng)”,例如一個(gè)單位的所有部門組成一個(gè)無首系。無首系只有一個(gè)實(shí)例,也稱單值系。無首系,首記錄可以看成“系統(tǒng)”,例如一個(gè)單位的所有部門組成一36系的實(shí)現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈?zhǔn)綄?shí)現(xiàn)方式系的實(shí)現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈?zhǔn)?7約束(1)一個(gè)記錄型不能兼任同一系的首記錄和屬記錄;(2)一個(gè)記錄不能出現(xiàn)在同一系型的多個(gè)系值中;(3)插入一個(gè)新記錄時(shí),若它的記錄型是某個(gè)系的屬記錄,必須考慮系籍問題(兩種系籍約束):AUTOMATIC(自動(dòng)的):新的屬記錄插入時(shí)自動(dòng)加入相應(yīng)的系值;MANUAL(人工的):新的屬記錄插入時(shí)不自動(dòng)加入相應(yīng)的系值;約束38(4)對(duì)已插入的屬記錄的系籍問題;網(wǎng)狀數(shù)據(jù)模型提供三種留置系籍約束:OPTIMAL(隨意的):對(duì)屬記錄的系籍處理比較隨意,屬記錄可以脫離某個(gè)系值獨(dú)立存在,例如,“系——學(xué)生”系;MANDATORY(強(qiáng)制的):屬記錄不能游離于系值之外,但可以轉(zhuǎn)系值。例如,“部門——職工”系;FIXED(固定的):不能游離,不能轉(zhuǎn)系值,例如,“職工——家屬”系。上述系籍約束都是語義約束。(4)對(duì)已插入的屬記錄的系籍問題;39(5)刪除記錄時(shí),刪除首記錄,沒有系籍問題;刪除屬記錄要按照(4)進(jìn)行處理。OPTIMAL首記錄可以刪除,其屬記錄與系值脫離,仍保留在數(shù)據(jù)庫(kù)中;MANDATORY首記錄不能刪除,因?yàn)槠鋵儆涗洸荒苡坞x于系值之外;FIXED可將首記錄連同屬記錄一起刪除。(5)刪除記錄時(shí),刪除首記錄,沒有系籍問題;刪除屬記錄要按照40網(wǎng)狀模型的缺點(diǎn):編寫應(yīng)用程序比較復(fù)雜,程序員必須熟悉數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)。在關(guān)系DB以前,網(wǎng)狀DB比層次DB用的要普遍。模擬層次和非層次結(jié)構(gòu)比較自然,目前仍有應(yīng)用實(shí)例。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應(yīng)用程序編制復(fù)雜,目前已被關(guān)系系統(tǒng)產(chǎn)品取代。課程只介紹層次和網(wǎng)狀數(shù)據(jù)模型的概念和機(jī)制,以求全面了解數(shù)據(jù)庫(kù)技術(shù)的發(fā)展。網(wǎng)狀模型的缺點(diǎn):編寫應(yīng)用程序比較復(fù)雜,程序員必須412.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種記錄結(jié)構(gòu)(PCR,SET),關(guān)系模型跳出這一限制,定義清晰,結(jié)構(gòu)簡(jiǎn)單,操作方便。關(guān)系模型是以集合論中的關(guān)系概念為基礎(chǔ)發(fā)展起來的數(shù)據(jù)模型。2.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種42關(guān)系模型(relactiondatamodel)的主要特征是用表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。與層次模型和網(wǎng)狀模型相比,關(guān)系模型比較簡(jiǎn)單,容易為初學(xué)者接受。關(guān)系模型是由若干個(gè)關(guān)系模式組成的集合。每個(gè)關(guān)系實(shí)際上是一張表格,記錄之間聯(lián)系是通過各個(gè)關(guān)系模式的鍵體現(xiàn)的。

關(guān)系模型(relactiondatamodel)的43PART模式(P#,PNAME,COLOR,WEIGHT)PROJECT模式(J#,JNAME,DATE)SUPPLIER模式(S#,SNAME,SADDR)P_P模式(J#,P#,TATOL)P_S模式(P#,S#,QUANTITY)

關(guān)系模型的例子關(guān)系模型的層次、網(wǎng)狀模型的最大差別是用鍵而不是用指針導(dǎo)航數(shù)據(jù),其表格簡(jiǎn)單,用戶易懂,用戶只需用簡(jiǎn)單的查詢語句就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,并不涉及存儲(chǔ)結(jié)構(gòu)、訪問技術(shù)等細(xì)節(jié)。PART模式(P#,PNAME,COLOR,WEIG442.3.1基本概念及定義1.屬性和域?qū)傩?-----用來描述事物特征。例如:學(xué)生的姓名、學(xué)號(hào)、性別、出生年月等。屬性的域------屬性的取值范圍。例如:姓名的取值范圍是合法姓名的集合。學(xué)號(hào)的域是若干位數(shù)字組成的字符串的集合。性別的域是{男},{女},……2.3.1基本概念及定義45注意:①關(guān)系數(shù)據(jù)模型中,所有的屬性都應(yīng)是不可再分的原子數(shù)據(jù)(atomicdata)的集合---1NF。②關(guān)系數(shù)據(jù)模型中,允許某些屬性值為空,即NULL??罩挡皇侵?,而是一個(gè)標(biāo)記,表明該屬性值空缺。例如:手機(jī)號(hào)碼,E_mail等。

注意:462.關(guān)系和元組設(shè)有一關(guān)系R,R上有屬性:A1,A2,……,An其對(duì)應(yīng)域分別為:D1,D2,……,Dn則關(guān)系R可表示為:R=(A1/D1,A2/D2,……,An/Dn)其中:n為關(guān)系R的屬性個(gè)數(shù),也稱為關(guān)系的目。

同一關(guān)系中,不允許有同名屬性,但不同屬性可有相同的域。2.關(guān)系和元組47關(guān)系R的值可表示r或r(R):r={t1,t2,……tm}

每個(gè)元組t可表示為:t=<v1,v2,……vn>,vi∈Di,1≤i≤n即ti∈D1*D2*…*Dn,1≤i≤n例如:關(guān)于大學(xué)生的關(guān)系模式:STUDENT(學(xué)號(hào),姓名,性別,出生年月,系別,入學(xué)年份)而其中某一個(gè)學(xué)生<9098138,李彤,女,1980,計(jì)算機(jī)系,1998>就是關(guān)系R的一個(gè)元組。所有學(xué)生的值構(gòu)成了R的元組的集合。因此,R的模式相對(duì)穩(wěn)定。R的值相對(duì)變化。關(guān)系R的值可表示r或r(R):例如:關(guān)于大學(xué)生的關(guān)系模式:48另外,在關(guān)系R中,元組的次序無關(guān),但不能允許有相同的二個(gè)元組;屬性的次序無關(guān)。一個(gè)關(guān)系可視為一個(gè)二維表。組成表的所有數(shù)據(jù)項(xiàng)都應(yīng)是不可再分的最小數(shù)據(jù)項(xiàng)。關(guān)系對(duì)應(yīng)表,屬性對(duì)應(yīng)列,元組對(duì)應(yīng)行。學(xué)號(hào)姓名年齡性別系別專業(yè)元組屬性另外,在關(guān)系R中,元組的次序無關(guān),但不能學(xué)號(hào)姓名年齡性493.鍵鍵(或候選鍵)——如果關(guān)系的某一個(gè)屬性或?qū)傩越M的值唯一地決定其它所有屬性的值。而其任何真子集無此性質(zhì),則這個(gè)屬性或?qū)傩越M稱為該關(guān)系的鍵。例:學(xué)生關(guān)系中,學(xué)號(hào)就是關(guān)鍵字。3.鍵50超鍵——與上相同,區(qū)別僅在于其真子集也具此性質(zhì)。主鍵——一個(gè)關(guān)系R可有多個(gè)候選鍵,若選中一個(gè)作為Key,則它就是主鍵,其它稱候補(bǔ)鍵,每個(gè)元組的主鍵值應(yīng)是唯一的。全鍵——由所有屬性組成的鍵,稱為全鍵例如SUPPLY(SNAME,PNAME,JNAME)超鍵——與上相同,區(qū)別僅在于其真子集也主鍵——一個(gè)關(guān)系R可有51主屬性——能作為候選鍵的屬性,稱為主屬性。非主屬性——不包含在候選鍵的屬性,稱為非主屬性。外鍵——引用其它關(guān)系的Key或本關(guān)系的Key,稱為外鍵。如果一個(gè)關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它們是另外一個(gè)關(guān)系的關(guān)鍵字,則稱其為該關(guān)系的外關(guān)鍵字。主屬性——能作為候選鍵的屬性,稱為主屬性。非主屬性——不包含52例:①COURSE(課程號(hào),課程名,學(xué)分,開課時(shí)間,先修課程號(hào))②GRADE(學(xué)號(hào),課程號(hào),成績(jī))其中:①的主鍵是課程號(hào)。②的主鍵是學(xué)號(hào)+課程號(hào)。①中先修課程號(hào)是引用本關(guān)系的鍵,故稱為外鍵。②中學(xué)號(hào)、課程號(hào)是引用STUDENT關(guān)系和COURSE中的鍵。例:①COURSE(課程號(hào),課程名,學(xué)分,開課時(shí)間,先修課程53關(guān)系數(shù)據(jù)模型是用關(guān)系描述事物間聯(lián)系的,且這種聯(lián)系通常都隱含在它們的公共屬性中,尤其是外鍵中。因此,關(guān)系數(shù)據(jù)模型不能顯式地表示這種事物間的聯(lián)系,這是它的一個(gè)缺點(diǎn)。關(guān)系數(shù)據(jù)模型是用關(guān)系描述事物間聯(lián)系的,且這種聯(lián)系通常都54關(guān)系模式R=(A1/D1,A2/D2,……,AN/DN)中,R的任何一個(gè)元組t應(yīng)滿足條件:t∈D1*D2…*Dn雖然滿足上述條件的元組是合乎語法的,但是,并不是每個(gè)合乎語法的元組都能成為R的元組,它還要受到語義上的限制(完整性約束)。2.3.2約束關(guān)系模式R=(A1/D1,A2/D2,……,AN/DN55例如,一個(gè)大學(xué)生的年齡在5歲~100歲之間。身高<3米……,這就是語義上的限制。數(shù)據(jù)的語義不但限制屬性的值,而且還會(huì)制約屬性間的關(guān)系。例:在一個(gè)R中,作為主鍵的屬性或?qū)傩越M,其值不為空或不重復(fù)出現(xiàn)等等。這些都是語義施加在屬性間的限制。稱為完整性約束。目前,大多數(shù)DBMS都提供了完整性約束檢查。例如,一個(gè)大學(xué)生的年齡在5歲~100歲之間。例:56關(guān)系數(shù)據(jù)模型的完整性約束共分為4類:1.域完整性約束域完整性約束是最簡(jiǎn)單、最基本的約束。屬性值應(yīng)是域中的值,屬性的值能否為空,這是由問題的語義決定的。例:考試分?jǐn)?shù)(成績(jī))的取值范圍是0~100。關(guān)系數(shù)據(jù)模型的完整性約束共分為4類:例:考試分?jǐn)?shù)(成績(jī))的取572.實(shí)體完整性約束每一個(gè)關(guān)系都應(yīng)有一個(gè)主鍵,用來唯一識(shí)別一個(gè)元組。它的值不能為空,否則無法區(qū)分和識(shí)別元組,這就是實(shí)體完整性約束。目前,大多數(shù)DBMS都支持這項(xiàng)檢查,但也不是強(qiáng)制和徹底的。2.實(shí)體完整性約束583.

引用完整性約束這是指不同關(guān)系之間或同一關(guān)系的不同元組間的約束。設(shè)關(guān)系R有一外鍵FK,則其某一元組t的外鍵值為t[FK]。設(shè)FK引用關(guān)系R’的主鍵Pk,R’可以是R,也可以不是R。引用完整性約束要求t〔FK〕遵守下面的約束:

即外鍵要么是空缺,要么是引用實(shí)際存在的主鍵值。3.

引用完整性約束設(shè)FK引用關(guān)系R’的主鍵Pk,R59

引用完整性約束與表之間的關(guān)聯(lián)有關(guān),它是關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)很重要的功能。用好這項(xiàng)功能,可以減少由于客戶端用戶程序的疏忽而可能給數(shù)據(jù)庫(kù)帶來的錯(cuò)誤。引用完整性約束與表之間的關(guān)聯(lián)有關(guān),它是關(guān)系數(shù)據(jù)庫(kù)管理系60假定現(xiàn)在往職工關(guān)系中插入一個(gè)元組:(“WH7”,”E9”,1400)請(qǐng)問是否有問題?倉(cāng)庫(kù)號(hào)城市面積WH1北京370WH2上海500WH3廣州200WH4合肥300倉(cāng)庫(kù)號(hào)職工號(hào)工資WH2E11220WH1E31210WH2E41250WH3E61230WH1E71250倉(cāng)庫(kù)職工假定現(xiàn)在往職工關(guān)系中插入一個(gè)元組:倉(cāng)庫(kù)號(hào)城市面積WH1北61該元組插入到職工關(guān)系中是沒有任何問題的,但是,在倉(cāng)庫(kù)關(guān)系中根本就沒有倉(cāng)庫(kù)號(hào)為WH7的倉(cāng)庫(kù)。沒有“WH7”倉(cāng)庫(kù),就沒有在“WH7”工作的職工。所以插入到職工的元組是有問題的。利用引用完整性約束就可以解決這類問題。該元組插入到職工關(guān)系中是沒有任何問題的,62由于倉(cāng)庫(kù)號(hào)是倉(cāng)庫(kù)關(guān)系的關(guān)鍵字,同時(shí)是職工關(guān)系的外部關(guān)鍵字。在定義職工關(guān)系的倉(cāng)庫(kù)號(hào)字段時(shí),只要說明外部關(guān)鍵字約束:

倉(cāng)庫(kù)號(hào)CHAR(4)NOTNULLREFERENCES倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào))有了以上的約束,系統(tǒng)就會(huì)自動(dòng)檢查相應(yīng)的父記錄是否存在,從而保證數(shù)據(jù)的引用完整性。由于倉(cāng)庫(kù)號(hào)是倉(cāng)庫(kù)關(guān)系的關(guān)鍵字,同時(shí)是職工有了以上63

4.一般性完整性約束

一般完整性約束是用戶為了滿足特定的要求而做的一些與數(shù)據(jù)完整性有關(guān)的規(guī)定。前三種約束是關(guān)系數(shù)據(jù)模型的三個(gè)最基本、最普遍的完整性約束。其它的語義約束與數(shù)據(jù)的具體內(nèi)容有關(guān)。當(dāng)數(shù)據(jù)量很大時(shí),要說明、管理和檢查這些約束,開銷太大。目前,尚無一個(gè)DBMS能全面實(shí)現(xiàn)一般性完整性約束檢查。4.一般性完整性約束642.3.3操作關(guān)系數(shù)據(jù)模型提供了兩類操作:關(guān)系專用操作

集合操作

選擇操作(Select)(橫挑)選擇是一種單目運(yùn)算,即對(duì)一個(gè)關(guān)系施加的運(yùn)算,按給定條件從關(guān)系中挑選滿足條件的元組組成的集合。語法格式:σ<選擇條件>(<關(guān)系名>)2.3.3操作選擇操作(Select)(橫挑)65職工號(hào)供應(yīng)商號(hào)訂購(gòu)單號(hào)訂購(gòu)日期E3S7OR671998/06/23E1S4OR731998/07/28E7S4OR761998/05/25E6S6OR771998/06/19E3S4OR791998/07/29E1S6OR801998/06/22E3S6OR901998/07/13E3S3OR911998/10/27訂購(gòu)單關(guān)系例:

σ職工號(hào)=“E3”(訂購(gòu)單)職工號(hào)供應(yīng)商號(hào)訂購(gòu)單號(hào)訂購(gòu)日期E3S7OR671998/0666職工號(hào)供應(yīng)商號(hào)訂購(gòu)單號(hào)訂購(gòu)日期E3S7OR671998/06/23E3S4OR791998/07/29E3S6OR901998/07/13E3S3OR911998/10/27訂購(gòu)單關(guān)系例:σ職工號(hào)=“E3”(訂購(gòu)單)結(jié)果如下:職工號(hào)供應(yīng)商號(hào)訂購(gòu)單號(hào)訂購(gòu)日期E3S7OR671998/0667σ<選擇條件1>(σ<選擇條件2>(…σ<選擇條件n>(R)…))=σ<選擇條件1>and<選擇條件2>and…<選擇條件n>(R)兩者效率大不一樣!易證:σ<選擇條件1>(σ<選擇條件2>(…σ<選擇條件n>兩者效68

投影操作(Project)(豎挑)

投影操作是單目運(yùn)算,從關(guān)系中挑選指定的屬性組成的新關(guān)系。語法格式:<屬性表>(<關(guān)系名>)投影操作(Project)(豎挑)69職工號(hào)供應(yīng)商號(hào)訂購(gòu)單號(hào)訂購(gòu)日期E3S7OR671998/06/23E1S4OR731998/07/28E7S4OR761998/05/25E6S6OR771998/06/19E3S4OR791998/07/29E1S6OR801998/06/22E3S6OR901998/07/13E3S3OR911998/10/27訂購(gòu)單關(guān)系職工號(hào)供應(yīng)商號(hào)訂購(gòu)單號(hào)訂購(gòu)日期E3S7OR671998/0670職工號(hào)供應(yīng)商號(hào)E3S7E1S4E7S4E6S6E3S4E1S6E3S6E3S3例:

職工號(hào),供應(yīng)商號(hào)(訂購(gòu)單)結(jié)果:職工號(hào)供應(yīng)商號(hào)E3S7E1S4E7S4E6S6E3S4E1S71投影操作可以和選擇操作組合起來嵌套使用的情況:例:

訂購(gòu)單號(hào),供應(yīng)商號(hào)(σ職工號(hào)=“E3”(訂購(gòu)單))投影操作可以和選擇操作組合起來嵌套使用的情況:例:訂購(gòu)單72供應(yīng)商號(hào)訂購(gòu)單號(hào)S7OR67S4OR79S6OR90S3OR91訂購(gòu)單關(guān)系選擇指定的屬性,形成一個(gè)可能含有重復(fù)行的表格;刪除重復(fù)行,形成新的關(guān)系。供應(yīng)商號(hào)訂購(gòu)單號(hào)S7OR67S4OR79S6OR90S3OR73

集合操作在關(guān)系數(shù)據(jù)模型中,用得最多的集合操作是并、交、差,設(shè)A、B為兩個(gè)集合.A∪B并(union):由屬于A或?qū)儆贐的所有元組組成的集合。A∩B交(intersection):由同時(shí)屬于A和B的元組組成的集合。A-B差(difference):由屬于R而不屬于S的所有元組組成的集合。不過,交可用差表示。設(shè)A、B為兩個(gè)集合,則A和B的交可表示為:A∩B≡A-(A-B)

集合操作不過,交可用差表示。設(shè)A、B為兩個(gè)集合,則74注:

參與并、差操作的兩個(gè)關(guān)系的元組必須限制為同類型的,即具有相同的目,且對(duì)應(yīng)的屬性的域相同——并兼容(unioncompatibility);

關(guān)系專用操作優(yōu)先級(jí)高于集合操作;

一元操作(單目)優(yōu)先級(jí)高于二元操作。注:75倉(cāng)庫(kù)號(hào)城市面積WH1北京370WH2上海500WH3廣州200倉(cāng)庫(kù)號(hào)城市面積WH2上海500WH3廣州200WH4武漢180倉(cāng)庫(kù)A倉(cāng)庫(kù)B倉(cāng)庫(kù)號(hào)城市面積WH1北京370WH2上海500WH3廣州200WH4武漢180倉(cāng)庫(kù)A∪倉(cāng)庫(kù)B倉(cāng)庫(kù)號(hào)城市面積WH1北京370WH2上海500WH3廣州2076倉(cāng)庫(kù)號(hào)城市面積WH2上海500WH3廣州200倉(cāng)庫(kù)A∩倉(cāng)庫(kù)B倉(cāng)庫(kù)號(hào)城市面積WH1北京370倉(cāng)庫(kù)A-倉(cāng)庫(kù)B倉(cāng)庫(kù)號(hào)城市面積WH2上海500WH3廣州200倉(cāng)庫(kù)A∩倉(cāng)77

設(shè)有兩個(gè)關(guān)系R和S,它們的目分別為nr和ns;它們的元組數(shù)分別為|R|和|S|,則R和S的笛卡爾乘積為:R×S={<t,g>|tRandgS}

<t,g>為t和g的拼接,即R×S仍為一個(gè)關(guān)系,它的目為nr+ns、元組數(shù)為|R|×|S|。

若R和S中有相同的屬性名,在這些屬性名前加上關(guān)系名作為限定詞,進(jìn)行區(qū)別。設(shè)有兩個(gè)關(guān)系R和S,它們的目分別為nr和ns;它們78

連接操作連接操作是雙目(二元操作)操作。按給定條件,把滿足條件的兩個(gè)關(guān)系所有元組,按一切可能的拼接后形成的新關(guān)系,記為R∞S。即R∞<連接條件>S=σ<連接條件>(RS)

連接條件為兩關(guān)系中對(duì)應(yīng)屬性的比較,對(duì)應(yīng)屬性不一定同名,但要有相同的域。其普遍表示形式為:<條件1>and<條件2>and…and<條件k>每個(gè)條件的普遍形式為:AiθBjAi為R的一個(gè)屬性,Bj為S中與Ai對(duì)應(yīng)的屬性。連接操作79注:自然連接完成三件事:作RS;(笛卡兒積)在RS上選擇同時(shí)滿足R.Ai=S.Ai的所有元組。去掉重復(fù)屬性;

連接條件θ為:=,<,≤,>,≥,≠當(dāng)所有連接條件中的θ都為“=”時(shí),稱為等連接,在等連接結(jié)果中,對(duì)應(yīng)屬性的值是相同的,不用重復(fù)。

消除冗余屬性的等連接稱為自然連接,它是“連接”操作的一個(gè)重要特例,實(shí)用價(jià)值很大,它要求被連接的關(guān)系有相同的兩個(gè)屬性名。注:自然連接完成三件事:連接條件θ為:=,<,≤,80倉(cāng)庫(kù)號(hào)城市面積WH1北京370WH2上海500WH3廣州200WH5合肥130倉(cāng)庫(kù)號(hào)職工號(hào)工資WH2E11220WH1E31210WH2E41250WH3E61230WH1E71250倉(cāng)庫(kù)職工倉(cāng)庫(kù)號(hào)城市面積WH2上海500WH1北京370WH2上海500WH3廣州200WH1北京370職工號(hào)工資E11220E31210E41250E61230E71250自然連接產(chǎn)生的新關(guān)系倉(cāng)庫(kù)號(hào)城市面積WH1北京370WH2上海500WH3廣州2081GRADE∞GRADE.課稱號(hào)=COURSE.課稱號(hào)(課程名、課程號(hào)、學(xué)分(COURSE))

上式可以生成一個(gè)學(xué)生成績(jī)表,它具有學(xué)號(hào)、課程號(hào)、課程名、學(xué)分和成績(jī)等屬性。GRADE∞GRADE.課稱號(hào)=COURSE.課稱號(hào)(82可以證明:關(guān)系代數(shù)操作集{σ、、∪、-、×}是完備的,{σ、、∪、-、∞}也是完備的。完備指任何其它關(guān)系代數(shù)操作都可以用這5種操作來表示。若一個(gè)關(guān)系DBMS支持{σ、、∪、-、∞},稱此DBMS是完備的(relationallycomplete)。事實(shí)上,當(dāng)前關(guān)系DBMS還增加了不少關(guān)系代數(shù)不支持的操作,例如排序、分組等等??梢宰C明:關(guān)系代數(shù)操作集{σ、、∪、-、×}是完備的,{σ83

除操作雙目運(yùn)算(二元),用“”表示。設(shè)有關(guān)系R(X,Y)和S(Y),X,Y為屬性組,S(Y)Φ,則

RS=X(R)-X((X(R)S)-R)可能有R不含元組R中相應(yīng)Y值集合不能包含S(Y)的X值集合R中相應(yīng)Y值集合能包含S(Y)的X值集合R-(RS)S可以看成“余數(shù)”。除操作可能有R不含元組R中相應(yīng)Y值集合不能包含S(84示例倉(cāng)庫(kù)號(hào)供應(yīng)商號(hào)WH1S1WH1S2WH1S3WH2S3WH3S1WH3S2WH5S1WH5S2WH5S4WH6S2倉(cāng)庫(kù)號(hào)WH1WH3WH5供應(yīng)商號(hào)S1S2=被除關(guān)系(R)除關(guān)系(S)商關(guān)系示例倉(cāng)庫(kù)號(hào)供應(yīng)商號(hào)WH1S1WH1S2WH1S3WH2S3W85

給定一個(gè)供應(yīng)商號(hào),如果它在被除關(guān)系上的映象集包含除關(guān)系,則這個(gè)供應(yīng)商號(hào)是商關(guān)系中的一個(gè)元組。在這個(gè)例子中,除法運(yùn)算決定了至少向列在除關(guān)系中的那些倉(cāng)庫(kù)供應(yīng)(器件)的那些供應(yīng)商的編號(hào)。給定一個(gè)供應(yīng)商號(hào),如果它在被除關(guān)系上的映象集86供應(yīng)商號(hào)S1S2S3S4X(R)倉(cāng)庫(kù)號(hào)WH1WH3WH5S倉(cāng)庫(kù)號(hào)供應(yīng)商號(hào)WH1S1WH1S2WH1S3WH1S4WH3S1WH3S2WH3S3WH3S4WH5S1WH5S2WH5S3WH5S4X(R)S倉(cāng)庫(kù)號(hào)供應(yīng)商號(hào)WH1S4WH3S3WH3S4WH5S3X(R)S-R供應(yīng)商號(hào)S1S2S3S4X(R)倉(cāng)庫(kù)號(hào)WH1WH3WH5S87X(X(R)S)-R)供應(yīng)商號(hào)S4S3S4S3供應(yīng)商號(hào)S1S2RS=X(R)-X((X(R)S)-R)X(X(R)S)-R)供應(yīng)商號(hào)S4S3S4S3供應(yīng)88外連接(outerjoin)

對(duì)連接操作的擴(kuò)展.

與連接的區(qū)別:連接操作時(shí),只有符合連接條件的匹配元組才能保留在結(jié)果中。外連接操作時(shí),同時(shí)也保留不匹配的那些元組,空缺部分填NULL。

abNULLabNULL外連接外連接(outerjoin)abNULLabNULL外89有三種外連接:l

左外連接,連接結(jié)果中,只保留左關(guān)系的所有元組;l

右外連接,連接結(jié)果中,只保留右關(guān)系的所有元組;l

全外連接,連接結(jié)果中,保留左右關(guān)系的所有元組;有三種外連接:90例:要求生成一個(gè)表,列出所有課程名及其先修課程名。

R=課程名,先修課程號(hào)(COURSE)S=課程名,課程號(hào)(COURSE)

(必須考慮某些課程可能無先修課程的情況)R.課程名,S.課程名(R*∞先修課程號(hào)=課程號(hào)S)例:要求生成一個(gè)表,列出所有課程名及其先修課程名。R=課91外并操作并操作的擴(kuò)展。可以對(duì)非并兼容的兩關(guān)系進(jìn)行并操作。結(jié)果等于兩關(guān)系的屬性集的并。在進(jìn)行外并操作時(shí),對(duì)于那些元組中沒有的屬性,填以Null。外并操作92用關(guān)系代數(shù)表示的操作,需標(biāo)明關(guān)系操作的序列,因而以關(guān)系代數(shù)為基礎(chǔ)的DB語言是過程性語言(procedurallanguage)。用謂詞演算來表達(dá)關(guān)系的操作稱為關(guān)系演算。用關(guān)系演算表示關(guān)系的操作,只要說明所要得到的結(jié)果,而不必標(biāo)明操作的過程,因而以關(guān)系演算為基礎(chǔ)的數(shù)據(jù)庫(kù)語言是說明性語言(declarativelanguage)。目前,面向用戶的關(guān)系數(shù)據(jù)庫(kù)語言基本上都以關(guān)系演算為基礎(chǔ)。2.3.4關(guān)系演算(relationalcalculus)

用關(guān)系代數(shù)表示的操作,需標(biāo)明關(guān)系操作的序列,因而以關(guān)系代數(shù)為93關(guān)系代數(shù)表示關(guān)系的操作,用戶必須指出運(yùn)算方法步驟,而關(guān)系演算用謂詞公式表示查詢條件,指出“做什么”,而“怎么做”則由系統(tǒng)去完成。以關(guān)系代數(shù)為基礎(chǔ)的數(shù)據(jù)庫(kù)語言是過程性語言,以關(guān)系演算為基礎(chǔ)的數(shù)據(jù)庫(kù)語言是說明性語言。關(guān)系代數(shù)表示關(guān)系的操作,用戶必須指出運(yùn)算方法步驟,而關(guān)94根據(jù)所用變量不同,關(guān)系演算分為:元組關(guān)系演算域關(guān)系演算根據(jù)所用變量不同,關(guān)系演算分為:95其中:t是元組變量,既可以用整個(gè)t作為查詢對(duì)象,也可查詢t中的某些屬性。如查詢整個(gè)t,則可省去<屬性表>。P(t)是t應(yīng)滿足的謂詞。

利用元組關(guān)系演算,可以表示關(guān)系代數(shù)操作,因此,元組演算與關(guān)系代數(shù)具有同等表達(dá)能力,是關(guān)系完備的。1.元組關(guān)系演算

以元組為變量。一般形式為:

{t[〈屬性表〉]|P(t)}其中:t是元組變量,既可以用整個(gè)t作為查詢對(duì)象,也可查96關(guān)系代數(shù)的幾種基本運(yùn)算可以用元組表達(dá)式表示如下:

關(guān)系代數(shù)的幾種基本運(yùn)算可以用元組表達(dá)式表示如下:

(1)投影:設(shè)有關(guān)系模式R(ABC),r為R的一個(gè)值,則AB(r)={t[AB]|tr}

(2)選擇:σF(r)={t|trandF}

F是以t為變量的布爾表達(dá)式。

關(guān)系代數(shù)的幾種基本運(yùn)算可以用元組表達(dá)式表示如下:97

(3)R∪S:可用{t|R(t)S(t)}表示;或{t|tRORtS}

(4)R-S:可用{t|R(t)

S(t)}表示;或{t|tRANDtS}(3)R∪S:可用{t|R(t)S(t)}表示;(98(5)連接(實(shí)際指自然連接)設(shè)有兩個(gè)關(guān)系模式R(ABC)和S(CDE),r、s分別為其值:R∞S={t(ABCDE)|t[ABC]Randt[CDE]S}

注意:謂詞中兩個(gè)t[C]同值,隱含等連接。(5)連接(實(shí)際指自然連接)注意:謂詞中兩個(gè)t[C]同值99用謂詞演算表示關(guān)系操作時(shí),只有結(jié)果是有限集才有意義。一個(gè)表達(dá)式的結(jié)果如果是有限的,稱此表達(dá)式是安全的,否則是不安全的。否定常常會(huì)導(dǎo)致不安全的表達(dá)式,例如{t|?(tSTUDENT)}是不安全的。用謂詞演算表示關(guān)系操作時(shí),只有結(jié)果是有限集才有意義100若限制t取值的域,使tDOM(P),可將上式改寫成{t|tDOM(P)and?(tSTUDENT)}=DOM(P)–STUDENT,成為安全表達(dá)式。若限制t取值的域,使tDOM(P),可將上式改101域關(guān)系演算是以域?yàn)樽兞?,一般形式為:{〈X1,X2,……Xn>|P(X1,X2,……Xn,Xn+1,……,Xn+m)}其中:X1,X2,……Xn,Xn+1,……,Xn+m為域變量。且X1,X2,……Xn出現(xiàn)在結(jié)果中,其它m個(gè)域變量不出現(xiàn)在結(jié)果中,但出現(xiàn)在謂詞P中。2.3.5域關(guān)系演算域關(guān)系演算是以域?yàn)樽兞?,一般形式為:{〈X1,X2,102對(duì)關(guān)系GRADE(學(xué)號(hào),課程號(hào),成績(jī)),如果要查詢須補(bǔ)考的學(xué)生的學(xué)號(hào)和補(bǔ)考的課程號(hào),此時(shí)查詢表達(dá)式:{<x,y>|(z)(GRADE(x,y,z)ANDz<60)}GRADE(x,y,z)是一個(gè)謂詞,如果〈x,y,z>是GRADE中的一個(gè)元組,則該謂詞為真。與元組變量不同的是域變量的變化范圍是某個(gè)

值域而不是一個(gè)關(guān)系。對(duì)關(guān)系GRADE(學(xué)號(hào),課程號(hào),成績(jī)),如果要查詢須補(bǔ)1032.4對(duì)傳統(tǒng)數(shù)據(jù)模型的評(píng)價(jià)

傳統(tǒng)數(shù)據(jù)模型有層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型、關(guān)系數(shù)據(jù)模型。特點(diǎn):●都繼承了文件中的記錄、字段等概念。●物理級(jí)也借鑒了文件的索引、散列等存取方法?!裣蛴脩籼峁┝私y(tǒng)一的數(shù)據(jù)模型和相應(yīng)的數(shù)據(jù)庫(kù)語言?!穸荚谟涗浀幕A(chǔ)上定義了數(shù)據(jù)的基本結(jié)構(gòu)、約束和操作。2.4對(duì)傳統(tǒng)數(shù)據(jù)模型的評(píng)價(jià)傳統(tǒng)數(shù)據(jù)模型有層次數(shù)據(jù)104傳統(tǒng)數(shù)據(jù)模型的不足:●以記錄為基礎(chǔ),不能很好地面向用戶和應(yīng)用。記錄和實(shí)體不一定相對(duì)應(yīng)?!癫荒芤宰匀坏姆绞奖硎緦?shí)體間聯(lián)系?!裾Z義貧乏?!駭?shù)據(jù)類型少,難以滿足應(yīng)用需要。傳統(tǒng)數(shù)據(jù)模型的不足:●以記錄為基礎(chǔ),不能很好地面向用戶和1052.5E-R數(shù)據(jù)模型1976年由P.Chen提出:建立一種統(tǒng)一的數(shù)據(jù)模型,來概括層次、網(wǎng)狀和關(guān)系三種傳統(tǒng)數(shù)據(jù)模型;作為3種數(shù)據(jù)模型間相互轉(zhuǎn)換的中間模型;作為超脫DBMS的一種概念數(shù)據(jù)模型,用比較自然的方式模擬現(xiàn)實(shí)世界。2.5E-R數(shù)據(jù)模型1976年由P.Chen提出:106E-R數(shù)據(jù)模型用的最成功和最廣泛的是作為數(shù)據(jù)庫(kù)概念設(shè)計(jì)的數(shù)據(jù)模型。E-R數(shù)據(jù)模型不是面向?qū)崿F(xiàn),而是面向現(xiàn)實(shí)世界。其設(shè)計(jì)的出發(fā)點(diǎn)是有效自然的模擬現(xiàn)實(shí)世界,而不是首先考慮它在機(jī)器中的實(shí)現(xiàn)問題。E-R數(shù)據(jù)模型是一種有代表性的非傳統(tǒng)數(shù)據(jù)模型。E-R數(shù)據(jù)模型用的最成功和最廣泛的是作為數(shù)據(jù)庫(kù)概念設(shè)計(jì)的數(shù)據(jù)1072.5.1基本概念

E-R(實(shí)體聯(lián)系數(shù)據(jù)模型)與傳統(tǒng)數(shù)據(jù)模型的區(qū)別在于:E-R不是面向?qū)崿F(xiàn),而是面向現(xiàn)實(shí)世界的,因此,它能比較自然地描述現(xiàn)實(shí)世界。E-R中有三個(gè)重要的抽象概念:實(shí)體:可以相互區(qū)別,且可被人們識(shí)別的事、物、概念等統(tǒng)統(tǒng)抽象為實(shí)體。2.5.1基本概念E-R(實(shí)體聯(lián)系數(shù)據(jù)模型)與傳108例如,學(xué)生的全體,就是一個(gè)實(shí)體集。其中的每一個(gè)學(xué)生是實(shí)體集的一個(gè)實(shí)例或值。因此,實(shí)體集通常作為型來定義(E-R中有型與值之分)。如:Es={e|e是學(xué)生}其中:Es是學(xué)生實(shí)體集,e是學(xué)生實(shí)體。注:E-R中,大寫字母表示實(shí)體集,小寫字母表示實(shí)體。例如,學(xué)生的全體,就是一個(gè)實(shí)體集。其中的每一個(gè)學(xué)生是109屬性:反映實(shí)體特征的稱之為實(shí)體的屬性,每個(gè)屬性都有其取值的范圍,稱值集。同一實(shí)體集中,每個(gè)實(shí)體的屬性及其域是相同的,但值可不同,屬性可以是單域的簡(jiǎn)單屬性,也可以是多域的組合屬性(如通信地址是個(gè)組合屬性,由省、市、區(qū)、街道等組成)。屬性:反映實(shí)體特征的稱之為實(shí)體的屬性,每個(gè)屬性都有其取110

實(shí)體鍵:能唯一識(shí)別實(shí)體的屬性或?qū)傩越M。一個(gè)實(shí)體的鍵可能有多個(gè),選定一個(gè)作為實(shí)體的鍵。

與傳統(tǒng)數(shù)據(jù)模型比,E-R對(duì)屬性的限制較少,故有利于自然地模擬現(xiàn)實(shí)世界。實(shí)體鍵:能唯一識(shí)別實(shí)體的屬性或?qū)傩越M。一個(gè)實(shí)體的鍵可能111聯(lián)系:表示實(shí)體與實(shí)體之間的關(guān)系。參與聯(lián)系的實(shí)體數(shù)=2,稱為二元聯(lián)系。參與聯(lián)系的實(shí)體數(shù)>2,稱為多元聯(lián)系。在E-R模型中,聯(lián)系的類型有三種:(1)1:1(一對(duì)一聯(lián)系)(2)1:n(一對(duì)多聯(lián)系)(3)m:n(多對(duì)多聯(lián)系)聯(lián)系:表示實(shí)體與實(shí)體之間的關(guān)系。參與聯(lián)系的實(shí)體數(shù)=2,112

實(shí)體參與度:表示實(shí)體參與聯(lián)系的最小次數(shù)和最大次數(shù),通常用(m:n)表示。例如,規(guī)定每個(gè)學(xué)生最少應(yīng)選三門課,最多可選六門課。則學(xué)生在選課聯(lián)系中的參與度可表示為(3:6).

實(shí)體參與度:表示實(shí)體參與聯(lián)系的最小次數(shù)和最大次數(shù),通常113注:m=0,表示非強(qiáng)制性,即實(shí)體不一定參與聯(lián)系。如果一門課可以無人選,但最多只能允許100人選則課程在選課聯(lián)系中的參與度為(0,100)。

m>0,表示強(qiáng)制性的,即實(shí)體一定要參與聯(lián)系。在E-R模型中,實(shí)體和聯(lián)系均可有屬性,如選課聯(lián)系的屬性可有成績(jī)、選課時(shí)間等。注:m=0,表示非強(qiáng)制性,即實(shí)體不一定參與聯(lián)系。114現(xiàn)實(shí)世界中還有一種特殊的實(shí)體,稱為弱實(shí)體,這種實(shí)體不能單獨(dú)存在,總是依附某個(gè)實(shí)體,如親戚是依賴于職工這個(gè)實(shí)體,家屬是依賴于某一職工。這一類實(shí)體通常取其所依附的實(shí)體的Key作為本身的Key的一部分?,F(xiàn)實(shí)世界中還有一種特殊的實(shí)體,稱為弱實(shí)體,這種實(shí)體不能1152.5.2E-R圖用E-R數(shù)據(jù)模型對(duì)一個(gè)單位的模擬,稱為一個(gè)單位的E-R數(shù)據(jù)模式。全部參與部分參與2.5.2E-R圖用E-R數(shù)據(jù)模型對(duì)一個(gè)單位的模擬116E-R模型提供了實(shí)體、屬性和聯(lián)系三個(gè)抽象概念。這三個(gè)概念簡(jiǎn)單、明了、直觀易懂,用以模擬現(xiàn)實(shí)世界比較自然,且可方便地轉(zhuǎn)換關(guān)系、層次、網(wǎng)狀數(shù)據(jù)模式。E-R模型提供了實(shí)體、屬性和聯(lián)系三個(gè)抽象概念。這三個(gè)概117用E-R表示數(shù)據(jù)模式時(shí),我們只關(guān)心有哪些數(shù)據(jù)(即有哪些實(shí)體以及屬性)以及數(shù)據(jù)間的關(guān)系(實(shí)體關(guān)系),而不必關(guān)心這些數(shù)據(jù)在計(jì)算機(jī)內(nèi)如何表示和用什么DBMS。用E-R表示數(shù)據(jù)模式時(shí),我們只關(guān)心有哪些數(shù)據(jù)(即有哪些1182.5.3擴(kuò)充E-R數(shù)據(jù)模型該模型中引入了下列抽象概念:1、特殊化和普遍化l特殊化:從普遍到特殊的過程。如把研究生實(shí)體集分為博士生、碩士生等子集的過程。l普遍化:從特殊到普遍的過程。如把研究生、本科生、大專生三個(gè)實(shí)體概括為學(xué)生實(shí)體集的過程。2.5.3擴(kuò)充E-R數(shù)據(jù)模型該模型中引入了下列抽象概念:l119注:子實(shí)體繼承其父實(shí)體集的所有屬性和聯(lián)系,且又可有自己的屬性和聯(lián)系。見圖2-30。重疊特殊化不相交重疊化特殊化注:子實(shí)體繼承其父實(shí)體集的所有屬性和聯(lián)系,且又可有自己的屬性1202.聚集在EER中,可把聯(lián)系看成由參與聯(lián)系的實(shí)體組合而成的新的實(shí)體,其屬性為參與聯(lián)系的實(shí)體的屬性和聯(lián)系的屬性的并。這種新的實(shí)體稱為參與聯(lián)系的實(shí)體的聚集。見圖2-31。2.聚集在EER中,可把聯(lián)系看成由參與聯(lián)系的實(shí)體組合1213.范疇

由不同類型的實(shí)體組成的實(shí)體集,稱之為范疇見圖2-32。范疇并操作3.范疇由不同類型的實(shí)體組成的實(shí)體集,稱之為范疇見圖122范式概念構(gòu)造數(shù)據(jù)庫(kù)必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫(kù)中,這種規(guī)則就是范式。范式是符合某一種級(jí)別的關(guān)系模式的集合。第一范式(1NF):在關(guān)系模式R中的每一個(gè)具體關(guān)系r中,如果每個(gè)屬性值都是不可再分的最小數(shù)據(jù)單位,則稱R是第一范式的關(guān)系。范式概念構(gòu)造數(shù)據(jù)庫(kù)必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫(kù)中,這種規(guī)123例如:職工號(hào),姓名,電話號(hào)碼組成一個(gè)表(一個(gè)人可能有一個(gè)辦公室電話和一個(gè)家里電話號(hào)碼)規(guī)范成為1NF有三種方法:

以上三個(gè)方法,第一種方法最不可取,按實(shí)際情況選取后兩種情況。(1)重復(fù)存儲(chǔ)職工號(hào)和姓名。

(2)職工號(hào)為關(guān)鍵字,電話號(hào)碼分為單位電話和住宅電話兩個(gè)屬性。

(3)職工號(hào)為關(guān)鍵字,但強(qiáng)制每條記錄只能有一個(gè)電話號(hào)碼。關(guān)鍵字只能是電話號(hào)碼。例如:職工號(hào),姓名,電話號(hào)碼組成一個(gè)表(一個(gè)人可能124第二范式(2NF):如果關(guān)系模式R中的所有非主屬性都完全依賴于任意一個(gè)候選關(guān)鍵字,則稱關(guān)系R是屬于第二范式的。

例:選課關(guān)系SCI(SNO,CNO,GRADE,CREDIT)其中SNO為學(xué)號(hào),CNO為課程號(hào),GRADE為成績(jī),CREDIT為學(xué)分。由以上條件,關(guān)鍵字為組合關(guān)鍵字(SNO,CNO)。

在應(yīng)用中使用以上關(guān)系模式存在什么問題?

第二范式(2NF):如果關(guān)系模式R中的所有非主屬例:選125a.數(shù)據(jù)冗余

b.更新異常

c.插入異常在應(yīng)用中使用以上關(guān)系模式有以下問題:假設(shè)同一門課由40個(gè)學(xué)生選修,學(xué)分就重復(fù)40次。若調(diào)整了某課程的學(xué)分,相應(yīng)的元組CREDIT值都要更新,有可能會(huì)出現(xiàn)同一門課學(xué)分不同。如果計(jì)劃開新課,由于沒人選修,沒有學(xué)號(hào)關(guān)鍵字,只能等有人選修才能把課程和學(xué)分存入。a.數(shù)據(jù)冗余

b.更新異常

c.插入異常在應(yīng)用中使用126

原因:非關(guān)鍵字屬性CREDIT僅函數(shù)依賴于CNO,也就是CREDIT部分依賴組合關(guān)鍵字(SNO,CNO)而不是完全依賴。

解決方法:分成兩個(gè)關(guān)系模式SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新關(guān)系包括兩個(gè)關(guān)系模式,它們之間通過SC1中的外關(guān)鍵字CNO相聯(lián)系,需要時(shí)再進(jìn)行自然聯(lián)接,恢復(fù)了原來的關(guān)系。原因:非關(guān)鍵字屬性CREDIT僅函數(shù)依賴于CNO,也就127第三范式(3NF):如果關(guān)系模式R中的所有非主屬性對(duì)任何候選關(guān)鍵字都不存在傳遞信賴,則稱關(guān)系R是屬于第三范式的。

例如:S1(SNO,SNAME,DNO,DNAME,LOCATION)各屬性分別代表學(xué)號(hào),姓名,所在系,系名稱,系地址。

關(guān)鍵字SNO決定各個(gè)屬性。由于是單個(gè)關(guān)鍵字,沒有部分依賴的問題,肯定是2NF。但這關(guān)系肯定有大量的冗余,有關(guān)學(xué)生所在系的幾個(gè)屬性DNO,DNAME,LOCATION將重復(fù)存儲(chǔ),插入,刪除和修改時(shí)也將產(chǎn)生類似以上例的情況。第三范式(3NF):如果關(guān)系模式R中的所有非主屬例如:128

原因:關(guān)系中存在傳遞依賴造成的。即SNO->DNO,DNO->LOCATION,因此關(guān)鍵字SNO對(duì)LOCATION函數(shù)決定是通過傳遞依賴DNO->LOCATION實(shí)現(xiàn)的。也就是說,SNO不直接決定非主屬性LOCATION,每個(gè)關(guān)系模式中不能留有傳遞依賴。

解決方法:分為兩個(gè)關(guān)系S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)。

注意:關(guān)系S中不能沒有外關(guān)鍵字DNO。否則兩個(gè)關(guān)系之間失去聯(lián)系。原因:關(guān)系中存在傳遞依賴造成的。即SNO->129第2章數(shù)據(jù)模型本章學(xué)習(xí)要求:1.層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型了解層次及網(wǎng)狀數(shù)據(jù)模型的基本概念和結(jié)構(gòu)。2.關(guān)系數(shù)據(jù)模型掌握關(guān)系數(shù)據(jù)模型的基本概念以及關(guān)系代數(shù)操作。了解層次、網(wǎng)狀和關(guān)系模型之間的差別。3.對(duì)傳統(tǒng)模型的評(píng)價(jià)了解傳統(tǒng)模型的不足之處。4.E-R數(shù)據(jù)模型

掌握E-R模型的概念和表示。5.面向?qū)ο髷?shù)據(jù)模型

了解面向?qū)ο髷?shù)據(jù)模型的基本概念。第2章數(shù)據(jù)模型本章學(xué)習(xí)要求:130數(shù)據(jù)模型可分為兩類:獨(dú)立于計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)模型,它完全不涉及信息在計(jì)算機(jī)系統(tǒng)中的表示,只是用來描述某個(gè)特定組織所關(guān)心的信息結(jié)構(gòu),這類模型稱為“概念數(shù)據(jù)模型”。概念模型用于建立信息世界的數(shù)據(jù)模型,強(qiáng)調(diào)其語義表達(dá)能力,概念應(yīng)該簡(jiǎn)單,清晰,易于用戶理解,它是現(xiàn)實(shí)世界的第一層抽象,是用戶和數(shù)據(jù)庫(kù)人員之間進(jìn)行交流的工具。最著名的是“實(shí)體聯(lián)系模型”。數(shù)據(jù)模型可分為兩類:獨(dú)立于計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)模型,它完全不涉1312.直接面向數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)的數(shù)據(jù)模型,它是現(xiàn)實(shí)世界的第二層抽象。這類模型涉及到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng),又稱為“基本數(shù)據(jù)模型”或“結(jié)構(gòu)數(shù)據(jù)模型”。例如,層次、網(wǎng)狀、關(guān)系、面向?qū)ο髷?shù)據(jù)模型”.這類模型有嚴(yán)格的形式化定義,以便在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)。2.直接面向數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)的數(shù)據(jù)模型,它是現(xiàn)實(shí)世界的第二1322.1層次數(shù)據(jù)模型用樹型(層次)結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為層次數(shù)據(jù)模型(hierarchicaldatamodel)。2.1層次數(shù)據(jù)模型用樹型(層次)結(jié)構(gòu)表示實(shí)體類型及133基本概念和結(jié)構(gòu)記錄和字段雙親子女關(guān)系層次數(shù)據(jù)模式虛擬記錄層次數(shù)據(jù)的線性表示基本概念和結(jié)構(gòu)134記錄和字段

記錄是用來描述某個(gè)事物或事物間關(guān)系的命名的數(shù)據(jù)單位,也是存儲(chǔ)的數(shù)據(jù)單位。一個(gè)記錄包含若干字段。每個(gè)字段也是命名的,字段只能是簡(jiǎn)單數(shù)據(jù)類型(整數(shù)、實(shí)數(shù)、字符串等)。記錄和字段135系系名系號(hào)系主任名地點(diǎn)記錄的型計(jì)算機(jī)系9李西遠(yuǎn)科技館記錄的一個(gè)實(shí)例系系名系號(hào)系主任名地點(diǎn)記錄的型計(jì)算機(jī)系9李西遠(yuǎn)科技館記錄的一136雙親子女關(guān)系(Parent-ChildRelationship,PCR)反映兩個(gè)記錄型之間的一對(duì)多(1:N)關(guān)系系班計(jì)算機(jī)系901班911班921班931班1NPCR型PCR實(shí)例雙親子女關(guān)系(Parent-ChildRelationsh137層次數(shù)據(jù)模式層次數(shù)據(jù)模式由PCR構(gòu)成層次數(shù)據(jù)模式系班學(xué)生教研組教師層次數(shù)據(jù)模式層次數(shù)據(jù)模式系班學(xué)生教研組教師138計(jì)算機(jī)系901班911班921班931班硬件教研組軟件教研組王一張三李四趙立錢英孫玉周新吳堅(jiān)鄭山洪流陳芝丁偉………………層次數(shù)據(jù)模式實(shí)例計(jì)算機(jī)系901班911班921班931班硬件教研組軟件教研組139在層次數(shù)據(jù)模式中,除根以外,所有的記錄型都應(yīng)該有唯一的雙親,但可以有多個(gè)子女,子女按從左到右的次序排序。在層次數(shù)據(jù)模式中,除根以外,所有的記錄型都應(yīng)該有唯140虛擬記錄非層次關(guān)系表示問題(1)M:N王一張三李四人工智能數(shù)據(jù)庫(kù)學(xué)生:課程:虛擬記錄王一張三李四人工智能數(shù)據(jù)庫(kù)學(xué)生:課程:141不允許一個(gè)記錄有多個(gè)雙親,需要復(fù)制記錄,導(dǎo)致冗余。如下圖:型實(shí)例學(xué)生課程王一人工智能張三人工智能數(shù)據(jù)庫(kù)李四人工智能數(shù)據(jù)庫(kù)不允許一個(gè)記錄有多個(gè)雙親,需要復(fù)制記錄,導(dǎo)致冗余。142(2)一個(gè)記錄是兩個(gè)以上PCR的子女學(xué)生班運(yùn)動(dòng)隊(duì)只能表示成下圖,存在冗余。學(xué)生班學(xué)生運(yùn)動(dòng)隊(duì)(2)一個(gè)記錄是兩個(gè)以上PCR的子女學(xué)生班運(yùn)動(dòng)隊(duì)只能表示成下143(3)多元關(guān)系供應(yīng)商零件工程項(xiàng)目供應(yīng)關(guān)系(3)多元關(guān)系供應(yīng)商零件工程項(xiàng)目供應(yīng)關(guān)系144可以用PCR表示為:供應(yīng)商零件工程項(xiàng)目零件供應(yīng)商工程項(xiàng)目供應(yīng)商工程項(xiàng)目零件…可以用PCR表示為:供應(yīng)商零件工程項(xiàng)目零件供應(yīng)商工程項(xiàng)目供應(yīng)145注意:書上圖2-12不能表示三元關(guān)系,因?yàn)楣?yīng)關(guān)系與供應(yīng)商,供應(yīng)關(guān)系與工程項(xiàng)目這兩個(gè)PCR的一個(gè)雙親實(shí)例,其子女集合是并關(guān)系,而不是迪卡爾積關(guān)系。供應(yīng)商零件工程項(xiàng)目供應(yīng)關(guān)系注意:書上圖2-12不能表示三元關(guān)系,因?yàn)楣?yīng)關(guān)系與146主要問題:數(shù)據(jù)冗余,為避免這一情況,只存一份記錄,其它引用該記錄的地方用指針代替——這種用指針代替的記錄稱為虛擬記錄。用下標(biāo)v表示,指針用虛線箭頭表示。(學(xué)生)v課程學(xué)生(課程)v主要問題:數(shù)據(jù)冗余,為避免這一情況,只存一份記錄,其它引用該147學(xué)生(學(xué)生)v班運(yùn)動(dòng)隊(duì)學(xué)生(學(xué)生)v班運(yùn)動(dòng)隊(duì)148層次數(shù)據(jù)的線性表示由于存儲(chǔ)器是線性的,層次數(shù)據(jù)必須變換成線性形式才能存儲(chǔ),層次數(shù)據(jù)模式的實(shí)例對(duì)應(yīng)一棵層次樹(或森林),對(duì)層次樹(或森林)按先序遍歷生成的序列稱為層次序列(hierarchicalsequence),規(guī)定以此作為存儲(chǔ)次序。計(jì)算機(jī)系901班王一…張三911班…931班…吳堅(jiān)硬件教研組鄭山…洪流軟件教研組…丁偉層次數(shù)據(jù)的線性表示計(jì)901王…張911…931…吳硬鄭…洪軟149層次數(shù)據(jù)模型的約束(1)除了根記錄外,任何其它記錄不能離開其雙親記錄而孤立存在;(2)任何記錄,不管虛實(shí),只允許有一個(gè)雙親記錄(保證層次數(shù)據(jù)模式及其實(shí)例是樹形);(3)虛擬記錄的指針必須指向一個(gè)實(shí)際存在的記錄,有虛擬記錄指向的記錄不得刪除;(4)虛擬記錄不得為根記錄。層次數(shù)據(jù)模型的約束150特點(diǎn):層次結(jié)構(gòu)是樹結(jié)構(gòu),樹的結(jié)點(diǎn)是記錄類型,非根結(jié)點(diǎn)有且只有一個(gè)父結(jié)點(diǎn)。上一層記錄類型和下一層記錄類型是1:N聯(lián)系。(因此不能表示M:N)特點(diǎn):層次結(jié)構(gòu)是樹結(jié)構(gòu),樹的結(jié)點(diǎn)是記錄類型,非根結(jié)點(diǎn)151層次模型的優(yōu)點(diǎn):記錄之間的聯(lián)系通過指針來實(shí)現(xiàn),查詢效率較高(針對(duì)層次結(jié)構(gòu))。層次模型的缺點(diǎn):1、只能表示1:N聯(lián)系,雖然可以采用虛擬記錄描述非層次數(shù)據(jù)關(guān)系,但較復(fù)雜,用戶不易掌握,并且非層次結(jié)構(gòu)的查詢效率比較低;2、由于層次順序的嚴(yán)格和復(fù)雜,引起數(shù)據(jù)的查詢和更新很復(fù)雜,因此應(yīng)用程序的編寫也比較復(fù)雜;3、模式描述語言較復(fù)雜,數(shù)據(jù)獨(dú)立性差。層次模型的優(yōu)點(diǎn):層次模型的缺點(diǎn):1522.2網(wǎng)狀數(shù)據(jù)模型用有向圖(網(wǎng)絡(luò)結(jié)構(gòu))表示實(shí)體及實(shí)體之間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀數(shù)據(jù)模型(networkdatamodel)。有向圖中的結(jié)點(diǎn)是記錄類型,箭頭表示從箭尾的記錄類型到箭頭的記錄類型間聯(lián)系。2.2網(wǎng)狀數(shù)據(jù)模型用有向圖(網(wǎng)絡(luò)結(jié)構(gòu))表示實(shí)體及實(shí)153基本概念和結(jié)構(gòu)記錄和數(shù)據(jù)項(xiàng)數(shù)據(jù)項(xiàng)相當(dāng)于字段,記錄是數(shù)據(jù)項(xiàng)的有序結(jié)合。

系系表示兩個(gè)記錄型間的1:N關(guān)系;對(duì)應(yīng)“1”的為首記錄,對(duì)應(yīng)“N”的為屬記錄。系是命名的,有型值之分,例如:圖2-17就是系的型和值?;靖拍詈徒Y(jié)構(gòu)154班級(jí)學(xué)生一班王一李紅丁杰型值圖2-17班級(jí)—學(xué)生系班級(jí)學(xué)生一班王一李紅丁杰型值圖2-17班級(jí)—學(xué)生系155具有多種類型屬記錄的系稱為“多屬系”(multimemberset)多屬系系值:3個(gè)成員的并,而非“X”賬戶存款帳提款帳轉(zhuǎn)賬具有多種類型屬記錄的系稱為“多屬系”多屬系系值:3個(gè)成員的并156網(wǎng)狀模型的特點(diǎn):

與層次模型不同,網(wǎng)狀模型中,一個(gè)記錄型可以成為多個(gè)首記錄型的屬記錄——突破層次的限制;一個(gè)記錄型不能既作為一個(gè)系的首記錄又作為同一個(gè)系的屬記錄。

EMP領(lǐng)導(dǎo)網(wǎng)狀模型的特點(diǎn):EMP領(lǐng)導(dǎo)157——引入聯(lián)系記錄EMPLINK1:11:N1:1表示一人擔(dān)任一個(gè)領(lǐng)導(dǎo)崗位,系值見下一頁(yè)圖?!肼?lián)系記錄EMPLINK1:11:N1:1表示一158E4L1S1E7L2S1E9L3S1E3E5E1E6S2……S2S2E4L1S1E7L2S1E9L3S1E3E5E1E6S2……159一個(gè)記錄值不能出現(xiàn)在同一系型的多個(gè)系值中,否則不是1:N關(guān)系例如,學(xué)生(S)和課程(C)關(guān)系一個(gè)記錄值不能出現(xiàn)在同一系型的多個(gè)系值中,否則不是1:N關(guān)系160S1C1C2C3C4S1C5C6S1C1C2C3C4S1C5C6161解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN型解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN162S1L1SLL2L3L4L5L6L7S2SLC1C2C3C4C5C6CLCLCLCLCLCL值S1L1SLL2L3L4L5L6L7S2SLC1C2C3C4163LINK表示多元關(guān)系零件LINK1工程項(xiàng)目M1N供應(yīng)商1PLINK表示多元關(guān)系零件LINK1工程項(xiàng)目M1N供應(yīng)商1164無首系,首記錄可以看成“系統(tǒng)”,例如一個(gè)單位的所有部門組成一個(gè)無首系。無首系只有一個(gè)實(shí)例,也稱單值系。無首系,首記錄可以看成“系統(tǒng)”,例如一個(gè)單位的所有部門組成一165系的實(shí)現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈?zhǔn)綄?shí)現(xiàn)方式系的實(shí)現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈?zhǔn)?66約束(1)一個(gè)記錄型不能兼任同一系的首記錄和屬記錄;(2)一個(gè)記錄不能出現(xiàn)在同一系型的多個(gè)系值中;(3)插入一個(gè)新記錄時(shí),若它的記錄型是某個(gè)系的屬記錄,必須考慮系籍問題(兩種系籍約束):AUTOMATIC(自動(dòng)的):新的屬記錄插入時(shí)自動(dòng)加入相應(yīng)的系值;MANUAL(人工的):新的屬記錄插入時(shí)不自動(dòng)加入相應(yīng)的系值;約束167(4)對(duì)已插入的屬記錄的系籍問題;網(wǎng)狀數(shù)據(jù)模型提供三種留置系籍約束:OPTIMAL(隨意的):對(duì)屬記錄的系籍處理比較隨意,屬記錄可以脫離某個(gè)系值獨(dú)立存在,例如,“系——學(xué)生”系;MANDATORY(強(qiáng)制的):屬記錄不能游離于系值之外,但可以轉(zhuǎn)系值。例如,“部門——職工”系;FIXED(固定的):不能游離,不能轉(zhuǎn)系值,例如,“職工——家屬”系。上述系籍約束都是語義約束。(4)對(duì)已插入的屬記錄的系籍問題;168(5)刪除記錄時(shí),刪除首記錄,沒有系籍問題;刪除屬記錄要按照(4)進(jìn)行處理。OPTIMAL首記錄可以刪除,其屬記錄與系值脫離,仍保留在數(shù)據(jù)庫(kù)中;MANDATORY首記錄不能刪除,因?yàn)槠鋵儆涗洸荒苡坞x于系值之外;FIXED可將首記錄連同屬記錄一起刪除。(5)刪除記錄時(shí),刪除首記錄,沒有系籍問題;刪除屬記錄要按照169網(wǎng)狀模型的缺點(diǎn):編寫應(yīng)用程序比較復(fù)雜,程序員必須熟悉數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)。在關(guān)系DB以前,網(wǎng)狀DB比層次DB用的要普遍。模擬層次和非層次結(jié)構(gòu)比較自然,目前仍有應(yīng)用實(shí)例。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應(yīng)用程序編制復(fù)雜,目前已被關(guān)系系統(tǒng)產(chǎn)品取代。課程只介紹層次和網(wǎng)狀數(shù)據(jù)模型的概念和機(jī)制,以求全面了解數(shù)據(jù)庫(kù)技術(shù)的發(fā)展。網(wǎng)狀模型的缺點(diǎn):編寫應(yīng)用程序比較復(fù)雜,程序員必須1702.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種記錄結(jié)構(gòu)(PCR,SET),關(guān)系模型跳出這一限制,定義清晰,結(jié)構(gòu)簡(jiǎn)單,操作方便。關(guān)系模型是以集合論中的關(guān)系概念為基礎(chǔ)發(fā)展起來的數(shù)據(jù)模型。2.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種171關(guān)系模型(relactiondatamodel)的主要特征是用表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。與層次模型和網(wǎng)狀模型相比,關(guān)系模型比較簡(jiǎn)單,容易為初學(xué)者接受。關(guān)系模型是由若干個(gè)關(guān)系模式組成的集合。每個(gè)關(guān)系實(shí)際上是一張表格,記錄之間聯(lián)系是通過各個(gè)關(guān)系模式的鍵體現(xiàn)的。

關(guān)系模型(relactiondatamodel)的172PART模式(P#,PNAME,COLOR,WEIGHT)PROJECT模式(J#,JNAME,DATE)SUPPLIER模式(S#,SNAME,SADDR)P_P模式(J#,P#,TATOL)P_S模式(P#,S#,QUANTITY)

關(guān)系模型的例子關(guān)系模型的層次、網(wǎng)狀模型的最大差別是用鍵而不是用指針導(dǎo)航數(shù)據(jù),其表格簡(jiǎn)單,用戶易懂,用戶只需用簡(jiǎn)單的查詢語句就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,并不涉及存儲(chǔ)結(jié)構(gòu)、訪問技術(shù)等細(xì)節(jié)。PART模式(P#,PNAME,COLOR,WEIG1732.3.1基本概念及定義1.屬性和域?qū)傩?-----用來描述事物特征。例如:學(xué)生的姓名、學(xué)號(hào)、性別、出生年月等。屬性的域------屬性的取值范圍。例如:姓名的取值范圍是合法姓名的集合。學(xué)號(hào)的域是若干位數(shù)字組成的字符串的集合。性別的域是{男},{女},……2.3.1基本概念及定義174注意:①關(guān)系數(shù)據(jù)模型中,所有的屬性都應(yīng)是不可再分的原子數(shù)據(jù)(atomicdata)的集合---1NF。②關(guān)系數(shù)據(jù)模型中,允許某些屬性值為空,即NULL。空值不是值,而是一個(gè)標(biāo)記,表明該屬性值空缺。例如:手機(jī)號(hào)碼,E_mail等。

注意:1752.關(guān)系和元組設(shè)有一關(guān)系R,R上有屬性:A1,A2,……,An其對(duì)應(yīng)域分別為:D1,D2,……,Dn則關(guān)系R可表示為:R=(A1/D1,A2/D2,……,An/Dn)其中:n為關(guān)系R的屬性個(gè)數(shù),也稱為關(guān)系的目。

同一關(guān)系中,不允許有同名屬性,但不同屬性可有相同的域。2.關(guān)系和元組176關(guān)系R的值可表示r或r(R):r={t1,t2,……tm}

每個(gè)元組t可表示為:t=<v1,v2,……vn>,vi∈Di,1≤i≤n即ti∈D1*D2*…*Dn,1≤i≤n例如:關(guān)于大學(xué)生的關(guān)系模式:STUDENT(學(xué)號(hào),姓名,性別,出生年月,系別,入學(xué)年份)而其中某一個(gè)學(xué)生<9098138,李彤,女,1980,計(jì)算機(jī)系,1998>就是關(guān)系R的一個(gè)元組。所有學(xué)生的值構(gòu)成了R的元組的集合。因此,R的模式相對(duì)穩(wěn)定。R的值相對(duì)變化。關(guān)系R的值可表示r或r(R):例如:關(guān)于大學(xué)生的關(guān)系模式:177另外,在關(guān)系R中,元組的次序無關(guān),但不能允許有相同的二個(gè)元組;屬性的次序無關(guān)。一個(gè)關(guān)系可視為一個(gè)二維表。組成表的所有數(shù)據(jù)項(xiàng)都應(yīng)是不可再分的最小數(shù)據(jù)項(xiàng)。關(guān)系對(duì)應(yīng)表,屬性對(duì)應(yīng)列,元組對(duì)應(yīng)行。學(xué)號(hào)姓名年齡性別系別專業(yè)元組屬性另外,在關(guān)系R中,元組的次序無關(guān),但不能學(xué)號(hào)姓名年齡性1783.鍵鍵(或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論