數(shù)據(jù)庫(kù)原理課件:將ER模型映射為表_第1頁(yè)
數(shù)據(jù)庫(kù)原理課件:將ER模型映射為表_第2頁(yè)
數(shù)據(jù)庫(kù)原理課件:將ER模型映射為表_第3頁(yè)
數(shù)據(jù)庫(kù)原理課件:將ER模型映射為表_第4頁(yè)
數(shù)據(jù)庫(kù)原理課件:將ER模型映射為表_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)–步驟2將ER模型映射為表2目標(biāo)如何將ER模型映射為表集合

如何使用規(guī)范化方法檢查表結(jié)構(gòu)如何檢查所建的表是否支持用戶需要的事務(wù)

如何定義和存檔完整性約束3步驟2將ER模型映射為表

根據(jù)ER模型創(chuàng)建表,并檢查這些表的結(jié)構(gòu)。步驟2.1創(chuàng)建表步驟2.2用規(guī)范化方法檢查表結(jié)構(gòu)步驟2.3檢查表是否支持用戶事務(wù)步驟2.4檢查業(yè)務(wù)規(guī)則步驟2.5與用戶討論邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)4步驟2.1創(chuàng)建表為ER模型創(chuàng)建表,表達(dá)實(shí)體、關(guān)系、屬性和約束

每個(gè)表的結(jié)構(gòu)來(lái)源于ER所描述的信息,這些信息包括ER圖、數(shù)據(jù)字典和任何其他相關(guān)的文檔

格式:表名稱(屬性1,屬性2,…)主鍵備用鍵外鍵(包括被引用主鍵的表)5StayHomeER模型6如何表達(dá)實(shí)體對(duì)ER模型中的每個(gè)實(shí)體,創(chuàng)建一個(gè)包含實(shí)體的所有簡(jiǎn)單屬性的表。對(duì)復(fù)合屬性,僅包含表中組成復(fù)合屬性的簡(jiǎn)單屬性。如果可能,標(biāo)識(shí)每個(gè)表中組成主鍵的列。

在某些情況下,還不能標(biāo)識(shí)出組成表的所有列,原因是還要描述實(shí)體間的關(guān)系。這意味著在ER模型中沒(méi)有表達(dá)出關(guān)系之前,不能標(biāo)識(shí)出組成弱實(shí)體的主鍵的列。

7實(shí)體的初始表結(jié)構(gòu)8如何表達(dá)關(guān)系用主鍵/外鍵機(jī)制表達(dá)

為了決定將外鍵屬性放在那里,首先必須標(biāo)識(shí)關(guān)系中包含的“父”實(shí)體和“子”實(shí)體

父實(shí)體指的是把自己的主鍵拷貝到代表子實(shí)體的表中作為外鍵的實(shí)體關(guān)系從父實(shí)體貢獻(xiàn)外鍵到子實(shí)體9如何表達(dá)關(guān)系考慮如何標(biāo)識(shí)下列關(guān)系一對(duì)多(1:*)二元關(guān)系一對(duì)多(1:*)遞歸關(guān)系一對(duì)一(1:1)二元關(guān)系一對(duì)一(1:1)遞歸關(guān)系多對(duì)多(*:*)二元關(guān)系復(fù)雜屬性多值屬性10一對(duì)多(1:*)二元關(guān)系關(guān)系“一”端的實(shí)體被設(shè)計(jì)為父實(shí)體,“多”端的實(shí)體被設(shè)計(jì)為子實(shí)體

父實(shí)體主鍵的拷貝,被放置在子實(shí)體的表中,作為外鍵

關(guān)系中的任何屬性也復(fù)制到“多”端的表中11一對(duì)多(1:*)二元關(guān)系12一對(duì)多(1:*)遞歸關(guān)系1:*一對(duì)多的遞歸關(guān)系的表示類似于1:*一對(duì)多的二元關(guān)系父實(shí)體和子實(shí)體是相同的實(shí)體代表實(shí)體的表有一個(gè)主鍵拷貝,這個(gè)拷貝是被重命名(稱為角色名),并且有關(guān)系的其他屬性13一對(duì)多(1:*)遞歸關(guān)系14一對(duì)一(1:1)二元關(guān)系不能使用元組的數(shù)目來(lái)標(biāo)識(shí)一個(gè)關(guān)系中的父實(shí)體和子實(shí)體。而是需要使用參與過(guò)程(強(qiáng)制參與還是可選參與)來(lái)決定是把實(shí)體結(jié)合為一個(gè)表來(lái)表示關(guān)系好,還是建兩個(gè)表由外鍵來(lái)表示關(guān)系好。

15一對(duì)一(1:1)二元關(guān)系考慮如何建表來(lái)表示如下的參與約束1:1關(guān)系的兩邊都是強(qiáng)制參與1:1關(guān)系的一邊都是強(qiáng)制參與1:1關(guān)系的兩邊均為可選參與16兩個(gè)實(shí)體均是強(qiáng)制參與的1:1關(guān)系將實(shí)體組合為一個(gè)表,并選擇初始實(shí)體中的一個(gè)主鍵作為新表的主鍵,其他的主鍵用作備用鍵。

注意僅當(dāng)兩個(gè)實(shí)體之間沒(méi)有其他關(guān)系的時(shí)候,才有可能把兩個(gè)實(shí)體合并到一張表中。如果還存在其他關(guān)系,則應(yīng)該用主鍵/外鍵機(jī)制創(chuàng)建表來(lái)描述這些關(guān)系。17兩個(gè)實(shí)體均是強(qiáng)制參與的1:1關(guān)系

181:1關(guān)系的一邊是強(qiáng)制參與可以使用強(qiáng)制約束來(lái)標(biāo)識(shí)1:1關(guān)系的父實(shí)體和子實(shí)體

關(guān)系中的可選參與的實(shí)體被設(shè)計(jì)為父實(shí)體,關(guān)系中的強(qiáng)制參與的實(shí)體被設(shè)計(jì)為子實(shí)體父實(shí)體主鍵的拷貝,被放置在描述子實(shí)體的表中191:1關(guān)系的一邊是強(qiáng)制參與201:1關(guān)系的一邊是強(qiáng)制參與211:1關(guān)系的兩邊均為可選參與在這種情況下,父實(shí)體和子實(shí)體之間的設(shè)計(jì)是任意的,除非你可以得到關(guān)于關(guān)系的更多信息來(lái)幫助你判斷使用哪個(gè)設(shè)計(jì)。

221:1關(guān)系的兩邊均為可選參與23一對(duì)一(1:1)遞歸關(guān)系遵循上面所描述的對(duì)1:1關(guān)系的“參與”規(guī)則但是,在這種特殊的1:1關(guān)系情景中,關(guān)系兩邊的實(shí)體是相同的分為以下三種情況兩邊有強(qiáng)制參與的1:1遞歸關(guān)系一邊強(qiáng)制參與的1:1遞歸關(guān)系兩邊是可選參與的1:1遞歸關(guān)系241:1兩邊強(qiáng)制參與一對(duì)一遞歸關(guān)系應(yīng)該用主鍵的兩個(gè)拷貝來(lái)把這個(gè)遞歸關(guān)系描述為一個(gè)表

主鍵的一個(gè)拷貝代表外鍵,并且應(yīng)該將它重新命名來(lái)表示它代表的關(guān)系25一邊是強(qiáng)制參與的1:1遞歸關(guān)系方法1:可以用主鍵的兩個(gè)拷貝建一個(gè)表,以描述遞歸關(guān)系。方法2:也可以創(chuàng)建一個(gè)新表來(lái)代表關(guān)系,這個(gè)新表只有兩個(gè)列,都是主鍵的拷貝,主鍵的拷貝作為外鍵,并且必須重新命名來(lái)表示在表中的意思。26兩邊是可選參與的1:1遞歸關(guān)系對(duì)于兩邊是可選參與的1:1遞歸關(guān)系,應(yīng)該向前面那樣創(chuàng)建一個(gè)新表,這個(gè)新表只有兩個(gè)列,都是主鍵的拷貝,主鍵的拷貝作為外鍵,并且必須重新命名來(lái)表示在表中的意思。27多對(duì)多(*:*)二元關(guān)系創(chuàng)建一個(gè)表達(dá)關(guān)系的表,這個(gè)表包含關(guān)系的任何屬性。

將參與關(guān)系的實(shí)體的主鍵屬性拷貝到新表中,使之作為外鍵。

一個(gè)外鍵或全部外鍵將組成新表的主鍵,可能要結(jié)合此關(guān)系的一些屬性。

28多對(duì)多(*:*)二元關(guān)系29復(fù)雜關(guān)系創(chuàng)建一個(gè)表達(dá)關(guān)系的表。將參與復(fù)雜關(guān)系的這些實(shí)體的主鍵復(fù)制到新表中,并作為外鍵,此表還包含于關(guān)系相關(guān)的全部屬性。

一個(gè)或多個(gè)外鍵將組成新表的主鍵,還可以加上關(guān)系中的一些其他屬性。30

復(fù)雜關(guān)系(三元關(guān)系)–ER模型31

復(fù)雜關(guān)系(三元關(guān)系)–對(duì)應(yīng)的表32多值屬性遵守1:*關(guān)系中所描述的規(guī)則,在“一”端的實(shí)體被指定為父實(shí)體,在“多”端的多值屬性被指定為子體。創(chuàng)建一個(gè)新的表包含這些多值屬性,并將父實(shí)體的主鍵拷貝過(guò)來(lái)作為外鍵。

除非多值屬性自己本身是父實(shí)體的備用鍵,否則新表的主鍵由多值屬性和父實(shí)體的原始主鍵組成。33多值屬性–ER模型和對(duì)應(yīng)的表34如何將實(shí)體、關(guān)系和多值屬性表達(dá)為表的總結(jié)實(shí)體/關(guān)系/屬性表達(dá)為表強(qiáng)實(shí)體或弱實(shí)體創(chuàng)建包含所有簡(jiǎn)單屬性的表;對(duì)復(fù)合屬性,僅包含表中組成復(fù)合屬性的簡(jiǎn)單屬性。如果可能,標(biāo)識(shí)每個(gè)表中組成主鍵的列。

1:*二元關(guān)系將“一”端實(shí)體的主鍵復(fù)制到表達(dá)“多端”實(shí)體的表中,關(guān)系中的任何屬性也復(fù)制到“多端”的表中1:*遞歸關(guān)系兩個(gè)實(shí)體是一樣的,代表實(shí)體的表有一個(gè)主鍵拷貝,這個(gè)拷貝是被重命名(稱為角色名),并且有關(guān)系的其他屬性*:*二元關(guān)系/復(fù)雜關(guān)系創(chuàng)建表達(dá)關(guān)系的表,此表中包含任何與關(guān)系有關(guān)的屬性,將每個(gè)父實(shí)體中的主鍵復(fù)制到新表中作為外鍵多值屬性創(chuàng)建一個(gè)表達(dá)多值屬性的表,并將父實(shí)體的主鍵復(fù)制到新表中作為外鍵35如何將實(shí)體、關(guān)系和多值屬性表達(dá)為表的總結(jié)(續(xù)1)實(shí)體/關(guān)系/屬性表達(dá)為表1:1二元關(guān)系兩端都是強(qiáng)制參與將實(shí)體組合為一個(gè)表,并選擇初始實(shí)體中的一個(gè)主鍵作為新表的主鍵,其他的主鍵用作備用鍵。一端是強(qiáng)制參與可選參與實(shí)體為父實(shí)體,強(qiáng)制參與實(shí)體為子實(shí)體,將有可選參與的實(shí)體的主鍵復(fù)制到表達(dá)有強(qiáng)制參與的實(shí)體的表中,關(guān)系的屬性也被復(fù)制到該表中。兩端都是可選參與沒(méi)有更多的信息,將一個(gè)實(shí)體的主鍵拷貝到另一個(gè)實(shí)體中。但如果信息是可獲得的,則將更具有強(qiáng)制參與的實(shí)體作為子實(shí)體。36如何將實(shí)體、關(guān)系和多值屬性表達(dá)為表的總結(jié)(續(xù)2)實(shí)體/關(guān)系/屬性表達(dá)為表1:1遞歸關(guān)系兩端都是強(qiáng)制參與兩個(gè)實(shí)體是一樣的,代表實(shí)體的表有一個(gè)主鍵拷貝,這個(gè)拷貝是被重命名的,并且有關(guān)系的其他屬性一端是強(qiáng)制參與方法1:同上,方法2:創(chuàng)建一個(gè)新表來(lái)代表關(guān)系,只有兩列,都是主鍵的拷貝,作為外鍵,必須重新命名來(lái)表示在表中的意思。兩端都是可選參與同方法237StayHome

數(shù)據(jù)庫(kù)的Branch視圖中的表38步驟2.2用規(guī)范化方法檢查表結(jié)構(gòu)用規(guī)范化方法檢查每個(gè)表的組成來(lái)避免不必要的數(shù)據(jù)重復(fù)

確保每個(gè)表至少是第三范式(3NF)的如果所標(biāo)識(shí)的表不是第三范式的,可能表明ER模型的某部分是錯(cuò)誤的,或者由模型創(chuàng)建表時(shí)產(chǎn)生了錯(cuò)誤

如果必要的話,可能需要重新構(gòu)建數(shù)據(jù)模型或者表

39步驟2.3檢查表是否支持用戶事務(wù)檢查所建的表是否如用戶需求說(shuō)明中所要求的那樣,支持用戶所需的事務(wù)。確保在建表的時(shí)候,沒(méi)有錯(cuò)誤發(fā)生。檢查表是否支持事務(wù)的一種方法是檢查是否支持事務(wù)的數(shù)據(jù)需求,以確保數(shù)據(jù)在一個(gè)或多個(gè)表中存在。

如果事務(wù)所需求的數(shù)據(jù)在多個(gè)表中,則應(yīng)該檢查這些表是否能夠通過(guò)主鍵/外鍵機(jī)制連接起來(lái)。下表中黑體顯示了事務(wù)所需要的列,必要時(shí)還包括了連接表中的列。40StayHome的Branch視圖的更新/刪除事務(wù)所需的表41

StayHome的Branch視圖的查詢事務(wù)所需的表42StayHome的Branch視圖的查詢事務(wù)所需的表(續(xù))43回顧ch09檢查支持用戶事務(wù)描述事務(wù)根據(jù)每個(gè)事務(wù)的需求描述,檢查模型中是否提供了事務(wù)所需的所有信息(實(shí)體、關(guān)系和屬性)。事務(wù)(o)根據(jù)分公司號(hào),列出每個(gè)分公司的每個(gè)經(jīng)理的名字。每個(gè)經(jīng)理的名字均包含在實(shí)體Staff中,而分公司的具體情況包含在實(shí)體Branch中,通過(guò)這兩個(gè)實(shí)體之間的關(guān)系Manages,可以完成上述事務(wù)的任務(wù)。44使用路徑(r)按照片名順序列出某分公司指定導(dǎo)演的錄像名稱、種類和租借狀態(tài)導(dǎo)演信息在Director實(shí)體中,分公司信息在Branch實(shí)體中,從Director實(shí)體開始,使用關(guān)系“Directs”找到Video實(shí)體,然后通過(guò)關(guān)系“IS”找到VideoForRent實(shí)體,再通過(guò)關(guān)系“IsAllocated”找到Branch實(shí)體。即可完成此事務(wù)。45SQL語(yǔ)句(r)按照片名順序列出某分公司指定導(dǎo)演的錄像名稱、種類和租借狀態(tài)/***使用候選鍵(通常是主鍵)/外鍵連接表***/SELECTVideo.*,VideoForRent.*FROMDirector,Video,VideoForRent,BranchWHERE(Director.directorNo=Video.directorNo)and(Video.catalogNo=VideoForRent.catalogNo)and(VideoForRent.branchNo=Branch.branchNo)and(Director.directorNo='D1001')and(Branch.branchNo='B001')46SQL語(yǔ)句(r)按照片名順序列出某分公司指定導(dǎo)演的錄像名稱、種類和租借狀態(tài)SELECTVideo.*,VideoForRent.*FROMDirectorINNERJOINVideoONDirector.directorNo=Video.directorNoINNERJOINVideoForRentONVideo.catalogNo=VideoForRent.catalogNoINNERJOINBranchONVideoForRent.branchNo=Branch.branchNoWHEREDirector.directorNo='D1001'andBranch.branchNo='B001'/***使用候選鍵(通常是主鍵)/外鍵連接表***/另外一種形式的SQL語(yǔ)句47SQL語(yǔ)句(r)按照片名順序列出某分公司指定導(dǎo)演的錄像名稱、種類和租借狀態(tài)/***使用候選鍵(通常是主鍵)/外鍵連接表***//****簡(jiǎn)化形式****/SELECTVideo.*,VideoForRent.*FROMVideo,VideoForRentWHERE(Video.catalogNo=VideoForRent.catalogNo)and(Video.directorNo='D1001')and(VideoForRent.branchNo='B001')

48步驟2.4檢查業(yè)務(wù)規(guī)則業(yè)務(wù)規(guī)則是用于防止數(shù)據(jù)庫(kù)不完整、不準(zhǔn)確或不一致的約束

考慮下面幾種的業(yè)務(wù)規(guī)則需要的數(shù)據(jù)列的值域約束實(shí)體完整性多樣性參照完整性其他業(yè)務(wù)規(guī)則49步驟2.4檢查業(yè)務(wù)規(guī)則需要的數(shù)據(jù)某些列必須要包含值,即不允許有空值。例如,每個(gè)員工必須有一個(gè)職位(經(jīng)理,主管、助理)列的值域約束每個(gè)列都有一個(gè)值域(一組對(duì)該列合法的值)。指定數(shù)據(jù)類型。實(shí)體完整性實(shí)體的主鍵不能為空,且唯一。多樣性表達(dá)了數(shù)據(jù)庫(kù)中數(shù)據(jù)間的關(guān)系的約束。例如,分公司必須有會(huì)員和員工。參照完整性外鍵包含與父表相匹配的主鍵值。外鍵允許為空嗎?如果子表是強(qiáng)制參與的,外鍵就不允許空,如果是可選參與的,就允許為空。50如何保證參照完整性?

應(yīng)該指定存在約束(existenceconstraints),該約束定義了主鍵和外鍵在什么條件下能夠被插入、更新或刪除

下面以1:*關(guān)系BranchHasStaff為例,說(shuō)明如何保證參照完整性。(branchNo在Staff表中是外鍵)51如何保證參照完整性?考慮如下六種情況.Case1:向子表插入記錄Case2:從子表中刪除記錄Case3:更新子表記錄中的外鍵Case4:向父表中插入記錄Case5:從父表中刪除記錄Case6:更新父表的主鍵52如何保證參照完整性?Case1:向子表(Staff)插入記錄檢查新的Staff外鍵branchNo是為空還是為一個(gè)Branch表中已存在的記錄的值。Case2:從子表(Staff)中刪除記錄如果一個(gè)子表中的一個(gè)記錄被刪除,參照完整性不受影響。Case3:更新子表(Staff)記錄中的外鍵同Case153如何保證參照完整性?Case4:向父表(Branch)中插入記錄向父表中插入記錄并不影響參照完整性。只是分公司沒(méi)有成員。Case5:從父表(Branch)中刪除記錄若父表中的一個(gè)記錄刪除了,如果有子記錄引用這個(gè)被刪除的父記錄,則參照完整性就丟失了。可以考慮以下幾種操作:NOACTION

溫馨提示

  • 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)論