




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1邏輯數(shù)據(jù)庫設(shè)計–步驟2將ER模型映射為表2目標如何將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ù)庫設(shè)計4步驟2.1創(chuàng)建表為ER模型創(chuàng)建表,表達實體、關(guān)系、屬性和約束
每個表的結(jié)構(gòu)來源于ER所描述的信息,這些信息包括ER圖、數(shù)據(jù)字典和任何其他相關(guān)的文檔
格式:表名稱(屬性1,屬性2,…)主鍵備用鍵外鍵(包括被引用主鍵的表)5StayHomeER模型6如何表達實體對ER模型中的每個實體,創(chuàng)建一個包含實體的所有簡單屬性的表。對復(fù)合屬性,僅包含表中組成復(fù)合屬性的簡單屬性。如果可能,標識每個表中組成主鍵的列。
在某些情況下,還不能標識出組成表的所有列,原因是還要描述實體間的關(guān)系。這意味著在ER模型中沒有表達出關(guān)系之前,不能標識出組成弱實體的主鍵的列。
7實體的初始表結(jié)構(gòu)8如何表達關(guān)系用主鍵/外鍵機制表達
為了決定將外鍵屬性放在那里,首先必須標識關(guān)系中包含的“父”實體和“子”實體
父實體指的是把自己的主鍵拷貝到代表子實體的表中作為外鍵的實體關(guān)系從父實體貢獻外鍵到子實體9如何表達關(guān)系考慮如何標識下列關(guān)系一對多(1:*)二元關(guān)系一對多(1:*)遞歸關(guān)系一對一(1:1)二元關(guān)系一對一(1:1)遞歸關(guān)系多對多(*:*)二元關(guān)系復(fù)雜屬性多值屬性10一對多(1:*)二元關(guān)系關(guān)系“一”端的實體被設(shè)計為父實體,“多”端的實體被設(shè)計為子實體
父實體主鍵的拷貝,被放置在子實體的表中,作為外鍵
關(guān)系中的任何屬性也復(fù)制到“多”端的表中11一對多(1:*)二元關(guān)系12一對多(1:*)遞歸關(guān)系1:*一對多的遞歸關(guān)系的表示類似于1:*一對多的二元關(guān)系父實體和子實體是相同的實體代表實體的表有一個主鍵拷貝,這個拷貝是被重命名(稱為角色名),并且有關(guān)系的其他屬性13一對多(1:*)遞歸關(guān)系14一對一(1:1)二元關(guān)系不能使用元組的數(shù)目來標識一個關(guān)系中的父實體和子實體。而是需要使用參與過程(強制參與還是可選參與)來決定是把實體結(jié)合為一個表來表示關(guān)系好,還是建兩個表由外鍵來表示關(guān)系好。
15一對一(1:1)二元關(guān)系考慮如何建表來表示如下的參與約束1:1關(guān)系的兩邊都是強制參與1:1關(guān)系的一邊都是強制參與1:1關(guān)系的兩邊均為可選參與16兩個實體均是強制參與的1:1關(guān)系將實體組合為一個表,并選擇初始實體中的一個主鍵作為新表的主鍵,其他的主鍵用作備用鍵。
注意僅當兩個實體之間沒有其他關(guān)系的時候,才有可能把兩個實體合并到一張表中。如果還存在其他關(guān)系,則應(yīng)該用主鍵/外鍵機制創(chuàng)建表來描述這些關(guān)系。17兩個實體均是強制參與的1:1關(guān)系
181:1關(guān)系的一邊是強制參與可以使用強制約束來標識1:1關(guān)系的父實體和子實體
關(guān)系中的可選參與的實體被設(shè)計為父實體,關(guān)系中的強制參與的實體被設(shè)計為子實體父實體主鍵的拷貝,被放置在描述子實體的表中191:1關(guān)系的一邊是強制參與201:1關(guān)系的一邊是強制參與211:1關(guān)系的兩邊均為可選參與在這種情況下,父實體和子實體之間的設(shè)計是任意的,除非你可以得到關(guān)于關(guān)系的更多信息來幫助你判斷使用哪個設(shè)計。
221:1關(guān)系的兩邊均為可選參與23一對一(1:1)遞歸關(guān)系遵循上面所描述的對1:1關(guān)系的“參與”規(guī)則但是,在這種特殊的1:1關(guān)系情景中,關(guān)系兩邊的實體是相同的分為以下三種情況兩邊有強制參與的1:1遞歸關(guān)系一邊強制參與的1:1遞歸關(guān)系兩邊是可選參與的1:1遞歸關(guān)系241:1兩邊強制參與一對一遞歸關(guān)系應(yīng)該用主鍵的兩個拷貝來把這個遞歸關(guān)系描述為一個表
主鍵的一個拷貝代表外鍵,并且應(yīng)該將它重新命名來表示它代表的關(guān)系25一邊是強制參與的1:1遞歸關(guān)系方法1:可以用主鍵的兩個拷貝建一個表,以描述遞歸關(guān)系。方法2:也可以創(chuàng)建一個新表來代表關(guān)系,這個新表只有兩個列,都是主鍵的拷貝,主鍵的拷貝作為外鍵,并且必須重新命名來表示在表中的意思。26兩邊是可選參與的1:1遞歸關(guān)系對于兩邊是可選參與的1:1遞歸關(guān)系,應(yīng)該向前面那樣創(chuàng)建一個新表,這個新表只有兩個列,都是主鍵的拷貝,主鍵的拷貝作為外鍵,并且必須重新命名來表示在表中的意思。27多對多(*:*)二元關(guān)系創(chuàng)建一個表達關(guān)系的表,這個表包含關(guān)系的任何屬性。
將參與關(guān)系的實體的主鍵屬性拷貝到新表中,使之作為外鍵。
一個外鍵或全部外鍵將組成新表的主鍵,可能要結(jié)合此關(guān)系的一些屬性。
28多對多(*:*)二元關(guān)系29復(fù)雜關(guān)系創(chuàng)建一個表達關(guān)系的表。將參與復(fù)雜關(guān)系的這些實體的主鍵復(fù)制到新表中,并作為外鍵,此表還包含于關(guān)系相關(guān)的全部屬性。
一個或多個外鍵將組成新表的主鍵,還可以加上關(guān)系中的一些其他屬性。30
復(fù)雜關(guān)系(三元關(guān)系)–ER模型31
復(fù)雜關(guān)系(三元關(guān)系)–對應(yīng)的表32多值屬性遵守1:*關(guān)系中所描述的規(guī)則,在“一”端的實體被指定為父實體,在“多”端的多值屬性被指定為子體。創(chuàng)建一個新的表包含這些多值屬性,并將父實體的主鍵拷貝過來作為外鍵。
除非多值屬性自己本身是父實體的備用鍵,否則新表的主鍵由多值屬性和父實體的原始主鍵組成。33多值屬性–ER模型和對應(yīng)的表34如何將實體、關(guān)系和多值屬性表達為表的總結(jié)實體/關(guān)系/屬性表達為表強實體或弱實體創(chuàng)建包含所有簡單屬性的表;對復(fù)合屬性,僅包含表中組成復(fù)合屬性的簡單屬性。如果可能,標識每個表中組成主鍵的列。
1:*二元關(guān)系將“一”端實體的主鍵復(fù)制到表達“多端”實體的表中,關(guān)系中的任何屬性也復(fù)制到“多端”的表中1:*遞歸關(guān)系兩個實體是一樣的,代表實體的表有一個主鍵拷貝,這個拷貝是被重命名(稱為角色名),并且有關(guān)系的其他屬性*:*二元關(guān)系/復(fù)雜關(guān)系創(chuàng)建表達關(guān)系的表,此表中包含任何與關(guān)系有關(guān)的屬性,將每個父實體中的主鍵復(fù)制到新表中作為外鍵多值屬性創(chuàng)建一個表達多值屬性的表,并將父實體的主鍵復(fù)制到新表中作為外鍵35如何將實體、關(guān)系和多值屬性表達為表的總結(jié)(續(xù)1)實體/關(guān)系/屬性表達為表1:1二元關(guān)系兩端都是強制參與將實體組合為一個表,并選擇初始實體中的一個主鍵作為新表的主鍵,其他的主鍵用作備用鍵。一端是強制參與可選參與實體為父實體,強制參與實體為子實體,將有可選參與的實體的主鍵復(fù)制到表達有強制參與的實體的表中,關(guān)系的屬性也被復(fù)制到該表中。兩端都是可選參與沒有更多的信息,將一個實體的主鍵拷貝到另一個實體中。但如果信息是可獲得的,則將更具有強制參與的實體作為子實體。36如何將實體、關(guān)系和多值屬性表達為表的總結(jié)(續(xù)2)實體/關(guān)系/屬性表達為表1:1遞歸關(guān)系兩端都是強制參與兩個實體是一樣的,代表實體的表有一個主鍵拷貝,這個拷貝是被重命名的,并且有關(guān)系的其他屬性一端是強制參與方法1:同上,方法2:創(chuàng)建一個新表來代表關(guān)系,只有兩列,都是主鍵的拷貝,作為外鍵,必須重新命名來表示在表中的意思。兩端都是可選參與同方法237StayHome
數(shù)據(jù)庫的Branch視圖中的表38步驟2.2用規(guī)范化方法檢查表結(jié)構(gòu)用規(guī)范化方法檢查每個表的組成來避免不必要的數(shù)據(jù)重復(fù)
確保每個表至少是第三范式(3NF)的如果所標識的表不是第三范式的,可能表明ER模型的某部分是錯誤的,或者由模型創(chuàng)建表時產(chǎn)生了錯誤
如果必要的話,可能需要重新構(gòu)建數(shù)據(jù)模型或者表
39步驟2.3檢查表是否支持用戶事務(wù)檢查所建的表是否如用戶需求說明中所要求的那樣,支持用戶所需的事務(wù)。確保在建表的時候,沒有錯誤發(fā)生。檢查表是否支持事務(wù)的一種方法是檢查是否支持事務(wù)的數(shù)據(jù)需求,以確保數(shù)據(jù)在一個或多個表中存在。
如果事務(wù)所需求的數(shù)據(jù)在多個表中,則應(yīng)該檢查這些表是否能夠通過主鍵/外鍵機制連接起來。下表中黑體顯示了事務(wù)所需要的列,必要時還包括了連接表中的列。40StayHome的Branch視圖的更新/刪除事務(wù)所需的表41
StayHome的Branch視圖的查詢事務(wù)所需的表42StayHome的Branch視圖的查詢事務(wù)所需的表(續(xù))43回顧ch09檢查支持用戶事務(wù)描述事務(wù)根據(jù)每個事務(wù)的需求描述,檢查模型中是否提供了事務(wù)所需的所有信息(實體、關(guān)系和屬性)。事務(wù)(o)根據(jù)分公司號,列出每個分公司的每個經(jīng)理的名字。每個經(jīng)理的名字均包含在實體Staff中,而分公司的具體情況包含在實體Branch中,通過這兩個實體之間的關(guān)系Manages,可以完成上述事務(wù)的任務(wù)。44使用路徑(r)按照片名順序列出某分公司指定導(dǎo)演的錄像名稱、種類和租借狀態(tài)導(dǎo)演信息在Director實體中,分公司信息在Branch實體中,從Director實體開始,使用關(guān)系“Directs”找到Video實體,然后通過關(guān)系“IS”找到VideoForRent實體,再通過關(guān)系“IsAllocated”找到Branch實體。即可完成此事務(wù)。45SQL語句(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語句(r)按照片名順序列出某分公司指定導(dǎo)演的錄像名稱、種類和租借狀態(tài)SELECTVideo.*,VideoForRent.*FROMDirectorINNERJOINVideoONDirector.directorNo=Video.directorNoINNERJOINVideoForRentONVideo.catalogNo=VideoForRent.catalogNoINNERJOINBranchONVideoForRent.branchNo=Branch.branchNoWHEREDirector.directorNo='D1001'andBranch.branchNo='B001'/***使用候選鍵(通常是主鍵)/外鍵連接表***/另外一種形式的SQL語句47SQL語句(r)按照片名順序列出某分公司指定導(dǎo)演的錄像名稱、種類和租借狀態(tài)/***使用候選鍵(通常是主鍵)/外鍵連接表***//****簡化形式****/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ù)庫不完整、不準確或不一致的約束
考慮下面幾種的業(yè)務(wù)規(guī)則需要的數(shù)據(jù)列的值域約束實體完整性多樣性參照完整性其他業(yè)務(wù)規(guī)則49步驟2.4檢查業(yè)務(wù)規(guī)則需要的數(shù)據(jù)某些列必須要包含值,即不允許有空值。例如,每個員工必須有一個職位(經(jīng)理,主管、助理)列的值域約束每個列都有一個值域(一組對該列合法的值)。指定數(shù)據(jù)類型。實體完整性實體的主鍵不能為空,且唯一。多樣性表達了數(shù)據(jù)庫中數(shù)據(jù)間的關(guān)系的約束。例如,分公司必須有會員和員工。參照完整性外鍵包含與父表相匹配的主鍵值。外鍵允許為空嗎?如果子表是強制參與的,外鍵就不允許空,如果是可選參與的,就允許為空。50如何保證參照完整性?
應(yīng)該指定存在約束(existenceconstraints),該約束定義了主鍵和外鍵在什么條件下能夠被插入、更新或刪除
下面以1:*關(guān)系BranchHasStaff為例,說明如何保證參照完整性。(branchNo在Staff表中是外鍵)51如何保證參照完整性?考慮如下六種情況.Case1:向子表插入記錄Case2:從子表中刪除記錄Case3:更新子表記錄中的外鍵Case4:向父表中插入記錄Case5:從父表中刪除記錄Case6:更新父表的主鍵52如何保證參照完整性?Case1:向子表(Staff)插入記錄檢查新的Staff外鍵branchNo是為空還是為一個Branch表中已存在的記錄的值。Case2:從子表(Staff)中刪除記錄如果一個子表中的一個記錄被刪除,參照完整性不受影響。Case3:更新子表(Staff)記錄中的外鍵同Case153如何保證參照完整性?Case4:向父表(Branch)中插入記錄向父表中插入記錄并不影響參照完整性。只是分公司沒有成員。Case5:從父表(Branch)中刪除記錄若父表中的一個記錄刪除了,如果有子記錄引用這個被刪除的父記錄,則參照完整性就丟失了??梢钥紤]以下幾種操作:NOACTION
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一建機電紙板課件
- 中醫(yī)護理骨干總結(jié)匯報
- 車棚防水施工方案
- 急救物品管理規(guī)范
- 攜手AI共育未來人工智能科普教育主題活動課件
- 大學(xué)高等數(shù)學(xué)知識點總結(jié)
- 婦幼信息培訓(xùn)課件
- 2025導(dǎo)游證《政策與法律法規(guī)》考前沖刺必會300題-含答案
- 安徽省滁州市2025屆高考化學(xué)三模試卷含解析
- 工程項目安全管理培訓(xùn)
- DB33T 2222-2019 船載寬帶衛(wèi)星通信終端主要技術(shù)參數(shù)要求
- 公路護坡施工合同
- 2025年廣東省財政廳所屬事業(yè)單位公開招聘歷年高頻重點提升(共500題)附帶答案詳解
- 供熱管網(wǎng)施工技術(shù)培訓(xùn)
- 廣東廣州市欖核咨詢服務(wù)有限公司招聘筆試沖刺題2024
- 【MOOC】法說西游記-湖南大學(xué) 中國大學(xué)慕課MOOC答案
- 飯店前廳經(jīng)理工作合同范例
- 手辦聯(lián)名合作協(xié)議
- 節(jié)能管理制度
- 學(xué)生學(xué)習(xí)方法與學(xué)習(xí)策略主題班會
- 大數(shù)據(jù)與會計專業(yè)專業(yè)的實習(xí)報告
評論
0/150
提交評論