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

下載本文檔

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

文檔簡介

第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.對傳統(tǒng)模型的評價了解傳統(tǒng)模型的不足之處。4.E-R數(shù)據(jù)模型

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

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

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

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

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

EMP領(lǐng)導(dǎo)網(wǎng)狀模型的特點:EMP領(lǐng)導(dǎo)28——引入聯(lián)系記錄EMPLINK1:11:N1:1表示一人擔(dān)任一個領(lǐng)導(dǎo)崗位,系值見下一頁圖?!肼?lián)系記錄EMPLINK1:11:N1:1表示一29E4L1S1E7L2S1E9L3S1E3E5E1E6S2……S2S2E4L1S1E7L2S1E9L3S1E3E5E1E6S2……30一個記錄值不能出現(xiàn)在同一系型的多個系值中,否則不是1:N關(guān)系例如,學(xué)生(S)和課程(C)關(guān)系一個記錄值不能出現(xiàn)在同一系型的多個系值中,否則不是1:N關(guān)系31S1C1C2C3C4S1C5C6S1C1C2C3C4S1C5C632解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN型解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN33S1L1SLL2L3L4L5L6L7S2SLC1C2C3C4C5C6CLCLCLCLCLCL值S1L1SLL2L3L4L5L6L7S2SLC1C2C3C434LINK表示多元關(guān)系零件LINK1工程項目M1N供應(yīng)商1PLINK表示多元關(guān)系零件LINK1工程項目M1N供應(yīng)商135無首系,首記錄可以看成“系統(tǒng)”,例如一個單位的所有部門組成一個無首系。無首系只有一個實例,也稱單值系。無首系,首記錄可以看成“系統(tǒng)”,例如一個單位的所有部門組成一36系的實現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈式實現(xiàn)方式系的實現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈式37約束(1)一個記錄型不能兼任同一系的首記錄和屬記錄;(2)一個記錄不能出現(xiàn)在同一系型的多個系值中;(3)插入一個新記錄時,若它的記錄型是某個系的屬記錄,必須考慮系籍問題(兩種系籍約束):AUTOMATIC(自動的):新的屬記錄插入時自動加入相應(yīng)的系值;MANUAL(人工的):新的屬記錄插入時不自動加入相應(yīng)的系值;約束38(4)對已插入的屬記錄的系籍問題;網(wǎng)狀數(shù)據(jù)模型提供三種留置系籍約束:OPTIMAL(隨意的):對屬記錄的系籍處理比較隨意,屬記錄可以脫離某個系值獨立存在,例如,“系——學(xué)生”系;MANDATORY(強制的):屬記錄不能游離于系值之外,但可以轉(zhuǎn)系值。例如,“部門——職工”系;FIXED(固定的):不能游離,不能轉(zhuǎn)系值,例如,“職工——家屬”系。上述系籍約束都是語義約束。(4)對已插入的屬記錄的系籍問題;39(5)刪除記錄時,刪除首記錄,沒有系籍問題;刪除屬記錄要按照(4)進行處理。OPTIMAL首記錄可以刪除,其屬記錄與系值脫離,仍保留在數(shù)據(jù)庫中;MANDATORY首記錄不能刪除,因為其屬記錄不能游離于系值之外;FIXED可將首記錄連同屬記錄一起刪除。(5)刪除記錄時,刪除首記錄,沒有系籍問題;刪除屬記錄要按照40網(wǎng)狀模型的缺點:編寫應(yīng)用程序比較復(fù)雜,程序員必須熟悉數(shù)據(jù)庫的邏輯結(jié)構(gòu)。在關(guān)系DB以前,網(wǎng)狀DB比層次DB用的要普遍。模擬層次和非層次結(jié)構(gòu)比較自然,目前仍有應(yīng)用實例。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應(yīng)用程序編制復(fù)雜,目前已被關(guān)系系統(tǒng)產(chǎn)品取代。課程只介紹層次和網(wǎng)狀數(shù)據(jù)模型的概念和機制,以求全面了解數(shù)據(jù)庫技術(shù)的發(fā)展。網(wǎng)狀模型的缺點:編寫應(yīng)用程序比較復(fù)雜,程序員必須412.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種記錄結(jié)構(gòu)(PCR,SET),關(guān)系模型跳出這一限制,定義清晰,結(jié)構(gòu)簡單,操作方便。關(guān)系模型是以集合論中的關(guān)系概念為基礎(chǔ)發(fā)展起來的數(shù)據(jù)模型。2.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種42關(guān)系模型(relactiondatamodel)的主要特征是用表格結(jié)構(gòu)表達實體集,用外鍵表示實體間聯(lián)系。與層次模型和網(wǎng)狀模型相比,關(guān)系模型比較簡單,容易為初學(xué)者接受。關(guān)系模型是由若干個關(guān)系模式組成的集合。每個關(guān)系實際上是一張表格,記錄之間聯(lián)系是通過各個關(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ù),其表格簡單,用戶易懂,用戶只需用簡單的查詢語句就可以對數(shù)據(jù)庫進行操作,并不涉及存儲結(jié)構(gòu)、訪問技術(shù)等細節(jié)。PART模式(P#,PNAME,COLOR,WEIG442.3.1基本概念及定義1.屬性和域?qū)傩?-----用來描述事物特征。例如:學(xué)生的姓名、學(xué)號、性別、出生年月等。屬性的域------屬性的取值范圍。例如:姓名的取值范圍是合法姓名的集合。學(xué)號的域是若干位數(shù)字組成的字符串的集合。性別的域是{男},{女},……2.3.1基本概念及定義45注意:①關(guān)系數(shù)據(jù)模型中,所有的屬性都應(yīng)是不可再分的原子數(shù)據(jù)(atomicdata)的集合---1NF。②關(guān)系數(shù)據(jù)模型中,允許某些屬性值為空,即NULL。空值不是值,而是一個標記,表明該屬性值空缺。例如:手機號碼,E_mail等。

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

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

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

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

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

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

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

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

4.一般性完整性約束

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

集合操作

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

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

投影操作(Project)(豎挑)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

除操作雙目運算(二元),用“”表示。設(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示例倉庫號供應(yīng)商號WH1S1WH1S2WH1S3WH2S3WH3S1WH3S2WH5S1WH5S2WH5S4WH6S2倉庫號WH1WH3WH5供應(yīng)商號S1S2=被除關(guān)系(R)除關(guān)系(S)商關(guān)系示例倉庫號供應(yīng)商號WH1S1WH1S2WH1S3WH2S3W85

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

對連接操作的擴展.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

F是以t為變量的布爾表達式。

關(guān)系代數(shù)的幾種基本運算可以用元組表達式表示如下: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è)有兩個關(guān)系模式R(ABC)和S(CDE),r、s分別為其值:R∞S={t(ABCDE)|t[ABC]Randt[CDE]S}

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

值域而不是一個關(guān)系。對關(guān)系GRADE(學(xué)號,課程號,成績),如果要查詢須補1032.4對傳統(tǒng)數(shù)據(jù)模型的評價

傳統(tǒng)數(shù)據(jù)模型有層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型、關(guān)系數(shù)據(jù)模型。特點:●都繼承了文件中的記錄、字段等概念。●物理級也借鑒了文件的索引、散列等存取方法?!裣蛴脩籼峁┝私y(tǒng)一的數(shù)據(jù)模型和相應(yīng)的數(shù)據(jù)庫語言。●都在記錄的基礎(chǔ)上定義了數(shù)據(jù)的基本結(jié)構(gòu)、約束和操作。2.4對傳統(tǒng)數(shù)據(jù)模型的評價傳統(tǒng)數(shù)據(jù)模型有層次數(shù)據(jù)104傳統(tǒng)數(shù)據(jù)模型的不足:●以記錄為基礎(chǔ),不能很好地面向用戶和應(yīng)用。記錄和實體不一定相對應(yīng)?!癫荒芤宰匀坏姆绞奖硎緦嶓w間聯(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)實世界。2.5E-R數(shù)據(jù)模型1976年由P.Chen提出:106E-R數(shù)據(jù)模型用的最成功和最廣泛的是作為數(shù)據(jù)庫概念設(shè)計的數(shù)據(jù)模型。E-R數(shù)據(jù)模型不是面向?qū)崿F(xiàn),而是面向現(xiàn)實世界。其設(shè)計的出發(fā)點是有效自然的模擬現(xiàn)實世界,而不是首先考慮它在機器中的實現(xiàn)問題。E-R數(shù)據(jù)模型是一種有代表性的非傳統(tǒng)數(shù)據(jù)模型。E-R數(shù)據(jù)模型用的最成功和最廣泛的是作為數(shù)據(jù)庫概念設(shè)計的數(shù)據(jù)1072.5.1基本概念

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

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

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

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

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

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

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

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

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

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

例:選課關(guān)系SCI(SNO,CNO,GRADE,CREDIT)其中SNO為學(xué)號,CNO為課程號,GRADE為成績,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個學(xué)生選修,學(xué)分就重復(fù)40次。若調(diào)整了某課程的學(xué)分,相應(yīng)的元組CREDIT值都要更新,有可能會出現(xiàn)同一門課學(xué)分不同。如果計劃開新課,由于沒人選修,沒有學(xué)號關(guān)鍵字,只能等有人選修才能把課程和學(xué)分存入。a.數(shù)據(jù)冗余

b.更新異常

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

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

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

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

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

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

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

注意:關(guān)系S中不能沒有外關(guān)鍵字DNO。否則兩個關(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.對傳統(tǒng)模型的評價了解傳統(tǒng)模型的不足之處。4.E-R數(shù)據(jù)模型

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

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

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

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

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

EMP領(lǐng)導(dǎo)網(wǎng)狀模型的特點:EMP領(lǐng)導(dǎo)157——引入聯(lián)系記錄EMPLINK1:11:N1:1表示一人擔(dān)任一個領(lǐng)導(dǎo)崗位,系值見下一頁圖?!肼?lián)系記錄EMPLINK1:11:N1:1表示一158E4L1S1E7L2S1E9L3S1E3E5E1E6S2……S2S2E4L1S1E7L2S1E9L3S1E3E5E1E6S2……159一個記錄值不能出現(xiàn)在同一系型的多個系值中,否則不是1:N關(guān)系例如,學(xué)生(S)和課程(C)關(guān)系一個記錄值不能出現(xiàn)在同一系型的多個系值中,否則不是1:N關(guān)系160S1C1C2C3C4S1C5C6S1C1C2C3C4S1C5C6161解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN型解決M:N問題的方法——聯(lián)系記錄SLINK1CSLM1CLN162S1L1SLL2L3L4L5L6L7S2SLC1C2C3C4C5C6CLCLCLCLCLCL值S1L1SLL2L3L4L5L6L7S2SLC1C2C3C4163LINK表示多元關(guān)系零件LINK1工程項目M1N供應(yīng)商1PLINK表示多元關(guān)系零件LINK1工程項目M1N供應(yīng)商1164無首系,首記錄可以看成“系統(tǒng)”,例如一個單位的所有部門組成一個無首系。無首系只有一個實例,也稱單值系。無首系,首記錄可以看成“系統(tǒng)”,例如一個單位的所有部門組成一165系的實現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈式實現(xiàn)方式系的實現(xiàn)方法OS1S2S3前向指針后向指針首記錄指針系的鏈式166約束(1)一個記錄型不能兼任同一系的首記錄和屬記錄;(2)一個記錄不能出現(xiàn)在同一系型的多個系值中;(3)插入一個新記錄時,若它的記錄型是某個系的屬記錄,必須考慮系籍問題(兩種系籍約束):AUTOMATIC(自動的):新的屬記錄插入時自動加入相應(yīng)的系值;MANUAL(人工的):新的屬記錄插入時不自動加入相應(yīng)的系值;約束167(4)對已插入的屬記錄的系籍問題;網(wǎng)狀數(shù)據(jù)模型提供三種留置系籍約束:OPTIMAL(隨意的):對屬記錄的系籍處理比較隨意,屬記錄可以脫離某個系值獨立存在,例如,“系——學(xué)生”系;MANDATORY(強制的):屬記錄不能游離于系值之外,但可以轉(zhuǎn)系值。例如,“部門——職工”系;FIXED(固定的):不能游離,不能轉(zhuǎn)系值,例如,“職工——家屬”系。上述系籍約束都是語義約束。(4)對已插入的屬記錄的系籍問題;168(5)刪除記錄時,刪除首記錄,沒有系籍問題;刪除屬記錄要按照(4)進行處理。OPTIMAL首記錄可以刪除,其屬記錄與系值脫離,仍保留在數(shù)據(jù)庫中;MANDATORY首記錄不能刪除,因為其屬記錄不能游離于系值之外;FIXED可將首記錄連同屬記錄一起刪除。(5)刪除記錄時,刪除首記錄,沒有系籍問題;刪除屬記錄要按照169網(wǎng)狀模型的缺點:編寫應(yīng)用程序比較復(fù)雜,程序員必須熟悉數(shù)據(jù)庫的邏輯結(jié)構(gòu)。在關(guān)系DB以前,網(wǎng)狀DB比層次DB用的要普遍。模擬層次和非層次結(jié)構(gòu)比較自然,目前仍有應(yīng)用實例。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應(yīng)用程序編制復(fù)雜,目前已被關(guān)系系統(tǒng)產(chǎn)品取代。課程只介紹層次和網(wǎng)狀數(shù)據(jù)模型的概念和機制,以求全面了解數(shù)據(jù)庫技術(shù)的發(fā)展。網(wǎng)狀模型的缺點:編寫應(yīng)用程序比較復(fù)雜,程序員必須1702.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種記錄結(jié)構(gòu)(PCR,SET),關(guān)系模型跳出這一限制,定義清晰,結(jié)構(gòu)簡單,操作方便。關(guān)系模型是以集合論中的關(guān)系概念為基礎(chǔ)發(fā)展起來的數(shù)據(jù)模型。2.3關(guān)系數(shù)據(jù)模型層次、網(wǎng)狀模型都基于某種171關(guān)系模型(relactiondatamodel)的主要特征是用表格結(jié)構(gòu)表達實體集,用外鍵表示實體間聯(lián)系。與層次模型和網(wǎng)狀模型相比,關(guān)系模型比較簡單,容易為初學(xué)者接受。關(guān)系模型是由若干個關(guān)系模式組成的集合。每個關(guān)系實際上是一張表格,記錄之間聯(lián)系是通過各個關(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ù),其表格簡單,用戶易懂,用戶只需用簡單的查詢語句就可以對數(shù)據(jù)庫進行操作,并不涉及存儲結(jié)構(gòu)、訪問技術(shù)等細節(jié)。PART模式(P#,PNAME,COLOR,WEIG1732.3.1基本概念及定義1.屬性和域?qū)傩?-----用來描述事物特征。例如:學(xué)生的姓名、學(xué)號、性別、出生年月等。屬性的域------屬性的取值范圍。例如:姓名的取值范圍是合法姓名的集合。學(xué)號的域是若干位數(shù)字組成的字符串的集合。性別的域是{男},{女},……2.3.1基本概念及定義174注意:①關(guān)系數(shù)據(jù)模型中,所有的屬性都應(yīng)是不可再分的原子數(shù)據(jù)(atomicdata)的集合---1NF。②關(guān)系數(shù)據(jù)模型中,允許某些屬性值為空,即NULL??罩挡皇侵?,而是一個標記,表明該屬性值空缺。例如:手機號碼,E_mail等。

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論