數據庫系統原理-第四章高級數據庫模型_第1頁
數據庫系統原理-第四章高級數據庫模型_第2頁
數據庫系統原理-第四章高級數據庫模型_第3頁
數據庫系統原理-第四章高級數據庫模型_第4頁
數據庫系統原理-第四章高級數據庫模型_第5頁
已閱讀5頁,還剩44頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章高級數據庫模型

4.1E/R模型4.2設計原則4.3E/R模型中的約束4.5從E/R圖到關系設計Page1一個新數據庫建立過程是從設計階段開始,提出并回答存儲什么信息,信息元素之間如何關聯,假定有什么樣的約束,諸如鍵或者參考的完整性,等等。思考高級設計關系數據庫模式關系DBMSPage2主要設計方法:E/RUMLODL:將數據庫描述為類與對象的集合。Page34.1E/R模型在實體-聯系(entity-relationshipmodel,或E/R模型)中,數據的結構用圖形化方式表示,即“實體-聯系圖”。元素類型:實體集屬性聯系Page44.1.1實體集(1)實體(Entity)

客觀存在并可相互區別的事物稱為實體,可以是具體的人、事、物或抽象的概念。(2)實體集(EntitySet)

相似實體的集合稱為實體集。實體-聯系圖中,矩形表示實體集。例4.1考慮電影數據庫的設計。每個電影是實體,所有電影的集合構成一個實體集。同樣,影星是實體,影星的集合也是一個實體集。電影公司是實體,電影公司集合是第三個實體集。Page54.1.2屬性實體集中實體所具有的某一特性稱為屬性。一個實體可以由若干個屬性來刻畫。例如,實體集Movies可能有title或length等屬性。屬性用橢圓表示。Page64.1.3聯系現實世界中事物內部或者事物之間的聯系,在信息世界中反映為實體集內部或實體集之間的聯系。實體集內部的聯系通常是指組成實體的各屬性之間的聯系;實體集之間的聯系通常是指不同實體集之間的聯系;聯系用菱形表示。Page74.1.4實體-聯系圖E/R圖是描述實體集、屬性和聯系的圖示。圖中每種元素都用節點表示,并且使用特殊形狀的節點來表示特定的類別:實體集:用矩形表示屬性:用橢圓表示聯系:用菱形表示Page8MoviesStarstitleyearlengthfilmtypenameaddressPage9MoviestitleyearlengthfilmtypeStars-inOwnsStarsStudiosnameaddressnameaddressPage104.1.5E/R圖實例數據庫實例:用E/R圖描述的數據庫包含特定的數據。Page114.1.5E/R圖實例對每個實體集,數據庫實例有一個特定的有限實體集合。實體集中的每個實體對每個屬性都有特定的值。連接n個實體集E1,E2,…,En的聯系R的一個實例由元組(e1,e2,…,en)的有限集構成,其中每個ei都是從實體集Ei的當前實例中選出。這樣的元組集叫做R的聯系集。Page124.1.5E/R圖實例Movies StarsStarwarsCarriefisherStarwarsMarkHamillMightyducksEmilioEstcvezMightyducksEmilioEstcvezWayne’sworldMikeMeyersPage134.1.6二元E/R聯系的多樣性實體集A和B的聯系多樣性:一對一(one-one):實體集中的一個實體最多可以與另一個實體集中的一個實體聯系。Page144.1.6二元E/R聯系的多樣性一對多(one-many):實體集中的一個實體最多可以與另一個實體集中的多個實體聯系。Page154.1.6二元E/R聯系的多樣性多對多(many-many):實體集中的任意一個實體可以與另一個實體集中的多個實體聯系。Page164.1.6二元E/R聯系的多樣性多樣性:1.箭頭可用來表示E/R圖中聯系的多樣性。2.A到B是多對一聯系,箭頭指向B。箭頭辨明實體集A中每個實體與實體集中的最多一個實體聯系。Page174.1.6二元E/R聯系的多樣性例:假設一個經理只管理一家電影公司,一家電影公司只有一個經理,那么經理和電影公司之間的聯系是一對一的,可以用兩個箭頭分別指向兩個實體。關于箭頭不得不說的話:以后還會有其他形式的箭頭,這里的箭頭暫時都還是指尖箭頭。Page18studiospresidentsRuns4.1.7多路聯系有時,我們需要描述多于兩個實體集之間的聯系,通常采用多路聯系。多路聯系是由聯系菱形到它所涉及的每個實體集的連線表示。MoviesStarsStudiosContractsPage194.1.7多路聯系Contracts是一個多路聯系(三路聯系)。這個聯系可以用一個三元組表示(studio,star,movie)MoviesStarsStudiosContractsPage204.1.8聯系中的角色Page21如果在一個聯系中同一個實體集出現兩次或多次,則該實體集與聯系間的每一條連線命名稱為角色。例4.6分析,一個由實體集Movies和它本身組成的聯系Sequel-of。例4.7分析,按照教材內容理解有箭頭指向和沒有箭頭指向含義的區別。4.1.11E/R模型中的子類子類=特例實體例如:Cartoons是movies的一種。并不是所有的movie都是cartoon,但有一部分是。Cartoons除了具有movies共同的屬性和聯系外,還有一個額外的聯系是voices,它給出了不演定影的配音影星的集合。Page22Isa聯系連接實體集和它的子類。用三角形表示,邊與子類相連,與此邊相對的一角與父類相連。MoviestitleyearlengthfilmtypeCartoonsisaStarsVoicesPage234.2設計原則忠實性避免冗余簡單性選擇正確的元素種類Page244.2.1忠實性首要的也是最重要的設計應當忠實于應用的具體要求實體集和它們的屬性應當反映現實Page254.2.2避免冗余應當小心對每件事只說一次。冗余會造成空間浪費和更新異常。Page26GooddesignMoviestitleyearlengthfilmtypeOwnsStudiosnameaddressThisdesigngivestheaddressofeachstudioexactlyonce.Page27BaddesignMoviestitleyearlengthstudioOwnsStudiosnameaddressfilmtypeThisdesignstatesthestudioofamovietwice:asanattributeandasarelatedentity.Page28BaddesignMoviestitleyearlengthstudioNamefilmtypestudioAddThisdesignrepeatsthestudio’saddressonceforeachmovieandlosestheaddressiftherearetemporarilynomoviesforastudio.Page294.2.3簡單性除非有絕對需要,不要在你的設計中添加更多成分。Holding

meanstheownershipofamovie.It’saunnecessaryentitysetwithoutanyattribute.MoviesHoldingStudiosRepresentOwnPage304.2.4選擇正確的聯系實體集可以用多種聯系連接起來,如果把每種可能的聯系加到設計中,會容易造成冗余、更新異常和刪除異常。“right”?Morereasonable,morenatural,simpler,closertorequirementPage314.2.5選擇正確的元素種類屬性,還是實體集?如果A包含的信息大于其名稱本身,則用實體集如果A對設計的作用只是其名稱就可實現,則用屬性。當用屬性可以實現的,盡量不要用實體集。Page32Example:GoodBeersManfsManfBynameManfsdeservestobeanentitysetbecauseofthenonkeyattributeaddr.Beersdeservestobeanentitysetbecauseitisthe“many”ofthemany-onerelationshipManfBaddrPage33Example:GoodBeersnameThereisnoneedtomakethemanufactureranentityset,becausewerecordnothingaboutmanufacturersbesidestheirname.manfPage34Example:BadBeersManfsManfBynameSincethemanufacturerisnothingbutaname,andisnotatthe“many”endofanyrelationship,Page354.3E/R模型中的約束4.3.1E/R模型中的鍵4.3.2E/R模型中鍵的表示4.3.3引用完整性4.3.4度約束Page364.3.1E/R模型中的鍵實體集E的鍵(Key)是由一個或多個屬性的集合K,對來自于E的不同實體e1和e2,他們對鍵K中的屬性沒有完全相同的值。如果K是由多個屬性組成,那么對于e1和e2雖然它們可以部分相同,但絕不會全部相同。Page374.3.2E/R模型中鍵的表示在E/R圖中,一個實體集鍵的屬性用下劃線標出。Page38簡單說,引用完整性要求被“引用”的實體必須存在。擴展E/R圖中的箭頭標記,使用圓箭頭來表示引用完整性。實現過程中保證引用完整性的措施:禁止被引用實體的刪除操作;被引用實體刪除,則同時刪除所有引用它的實體新增實體時,它所引用的實體必須存在引用目標變化時,新的引用實體必須存在4.3.3引用完整性Page39引用完整性在ER圖中的表示假設R是實體集E到F的聯系,可用圓箭頭指向F表示不僅是多對一或一對一,而且要求與E實體對應的F實體必須存在(注意不可空)。P88例4.19。圓箭頭分別表示:每部電影必須被一個已經存在的電影公司所擁有;每個經理必須經營一家已經存在的電影公司。注意尖箭頭表示電影公司可以在特定階段沒有經理(圓則必有)。教材從另一角度分析:如果刪除箭頭所指實體集中的某個實體,則(從邏輯關系上分析)聯系另一方是否也應刪除相應實體?是則圓否則尖。Page404.3.4度約束在E/R模型中,可以在連接一個聯系到一個實體的邊上加一個數字,表示相關實體集中任一實體可被聯系到的實體數目的約束。MoviestitleyearlengthfilmtypeStarsinStarsnameaddress{20-240}<=10Page414.5從E/R圖到關系設計實體集到關系的轉化聯系到關系的轉化關系組合Page424.5.1實體集到關系的轉化實體集(entityset)->關系(relation).屬性(attributes)->屬性(attributes)MoviestitleyearlengthfilmtypeStars-inOwnsStarsStudiosnameaddressnameaddressPage43基本規則對于聯系R涉及的每一個實體集,它們的鍵屬性或鍵屬性集都是R關系模式的一部分;如果這個聯系本身有屬性,則它們也是R關系中的屬性;如果一個實體集在聯系中有多個角色,則它的鍵屬性出現的次數等于角色的次數,轉換為關系時為避免重名需重新命名;如果R本身的屬性和與其相連的實體集的鍵屬性有同名,則要重命名。4.5.2E/R聯系到關系的轉化Page44幾個例子例4.25和4.26。關系的屬性是由聯系相關的實體集的鍵屬性組成的。

Owns(title,year,studioName)Stars-In(title,year,starName)例4.27。注意多個角色時該實體集的鍵屬性也要出現多次,同時要避免重名。

Contracts(starName,title,year,studioOfStar,producingOfStudio)4.5.2E/R聯系到關系的轉化Page45Relationship->RelationDrinkersBeersLikesLikes(drinker,beer)FavoriteFavorite(drinker,beer)MarriedhusbandwifeMarried(husband,wife)nameaddrnamemanfBuddies12Buddies(name1,name2)Page464.5.3關系組合提出背景:有時從實體集和聯系轉化而來的關系不一定是最優的。如果存在E到F的多對一聯系R,則按照前面講的轉化規則直接轉化后關系模式E(由實體集轉化)和R(由聯系轉化)都含有實體集E的鍵屬性,這是E和R合并的基礎;關系模式E中還包含實體集E的非鍵屬性,關系模式R中包含F的鍵屬性和聯系R中的所有屬性,這是E和R合并時要分別保留的內容;但由于是多對一,所以E的鍵屬性就能確定以上屬性,所以兩個關系的元組合并時不會冗余。Page47E和R的組合組合后的模式包括E的所有屬性、F的鍵屬性和R的所有屬性;根據多對一定義,E中實體e可能找不到相連的F的實體,這種情況下用空值。例:Drinkers(name,addr)andFavorite(drinker,beer)combinetomakeDrinker1(name,addr,favBeer)注意其中的Favorite(drinker,beer)是聯系關系而不是實體集關系Page48E到F的多對一聯系R,E和R合并的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論