




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫設(shè)計(jì)和模型2023/7/24第1頁,課件共79頁,創(chuàng)作于2023年2月第五章:實(shí)體–聯(lián)系模型設(shè)計(jì)過程建模約束E-R圖設(shè)計(jì)中的問題弱實(shí)體集擴(kuò)展的E-R特性銀行數(shù)據(jù)庫的設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)的其他問題2023/7/24第2頁,課件共79頁,創(chuàng)作于2023年2月設(shè)計(jì)過程用戶需求規(guī)格說明概念設(shè)計(jì)階段E-R模型功能需求規(guī)格說明邏輯設(shè)計(jì)關(guān)系模式建立物理設(shè)計(jì)定義數(shù)據(jù)庫物理特征
設(shè)計(jì)中主要陷阱冗余不完整性
2023/7/24第3頁,課件共79頁,創(chuàng)作于2023年2月建立模型數(shù)據(jù)庫可以被建模為:實(shí)體集合實(shí)體間的聯(lián)系實(shí)體(entity)
是一個(gè)存在且區(qū)別于其他對象的對象例子:特定的一個(gè)人/公司/事件/工廠實(shí)體有屬性(attributes)例子:人有名字和住址
實(shí)體集(entityset)是具有相同類型,即相同性質(zhì)或?qū)傩缘膶?shí)體集合例子:所有人/公司/樹/假期的集合2023/7/24第4頁,課件共79頁,創(chuàng)作于2023年2月customer和loan實(shí)體集合customer_idcustomer_customer_customer_loan_amount
namestreetcity
number2023/7/24第5頁,課件共79頁,創(chuàng)作于2023年2月聯(lián)系集聯(lián)系(relationship)是一個(gè)幾個(gè)實(shí)體間的關(guān)聯(lián) 例子:
Hayes
depositor
A-102
customer實(shí)體 聯(lián)系集 account實(shí)體聯(lián)系集(relationshipset)是一個(gè)n
2實(shí)體集間的數(shù)學(xué)關(guān)系(這些實(shí)體集不必互異),來源于實(shí)體集 {(e1,e2,…en)|e1E1,e2E2,…,enEn}
這里(e1,e2,…,en)是聯(lián)系例子: (Hayes,A-102)depositor2023/7/24第6頁,課件共79頁,創(chuàng)作于2023年2月聯(lián)系集borrower2023/7/24第7頁,課件共79頁,創(chuàng)作于2023年2月聯(lián)系集(Cont.)屬性可以是一個(gè)聯(lián)系集中的性質(zhì)(property)例如,customer和account實(shí)體集間的depositor聯(lián)系集可以有屬性access-date2023/7/24第8頁,課件共79頁,創(chuàng)作于2023年2月聯(lián)系集的度(degree)指參與一個(gè)聯(lián)系集的實(shí)體集數(shù)目涉及兩個(gè)實(shí)體集的聯(lián)系集叫做二元(binary)(或兩度)。總體上,大多數(shù)數(shù)據(jù)庫系統(tǒng)中的聯(lián)系集是二元的。聯(lián)系集可以涉及兩個(gè)以上的實(shí)體集涉及兩個(gè)以上的實(shí)體集的聯(lián)系集很少見例子:假設(shè)銀行的雇員(employees)可以在多個(gè)支行有工作,在不同支行有不同工作。
于是在實(shí)體集employee、job和branch間存在一個(gè)三元聯(lián)系集2023/7/24第9頁,課件共79頁,創(chuàng)作于2023年2月屬性實(shí)體由屬性集代表,即實(shí)體集所有屬性具有的描述性的性質(zhì)
域(Domain)–每個(gè)屬性允許的取值屬性的類型:簡單(simple)和復(fù)合(composite)屬性單值(Single-valued)和多值(multi-valued)屬性例子:多值屬性phone_numbers派生(Derived)屬性能夠從其他屬性計(jì)算得來例子:給定date_of_birth,得到age例子:
customer=(customer_id,customer_name, customer_street,customer_city)
loan=(loan_number,amount)2023/7/24第10頁,課件共79頁,創(chuàng)作于2023年2月復(fù)合(composite)屬性2023/7/24第11頁,課件共79頁,創(chuàng)作于2023年2月映射基數(shù)約束表示一個(gè)實(shí)體通過一個(gè)聯(lián)系集能夠與多少個(gè)實(shí)體相關(guān)聯(lián)在二元聯(lián)系集中非常有用對二元聯(lián)系集,映射基數(shù)必須是下列類型之一:一對一一對多多對一多對多2023/7/24第12頁,課件共79頁,創(chuàng)作于2023年2月映射基數(shù)(MappingCardinalities)一對一一對多注意:A
和B
中一些元素可以不被映射到另一集合中的任何元素上2023/7/24第13頁,課件共79頁,創(chuàng)作于2023年2月映射基數(shù)(Cont.)多對一多對多注意:A
和B
中一些元素可以不被映射到另一集合中的任何元素上2023/7/24第14頁,課件共79頁,創(chuàng)作于2023年2月碼超碼:唯一標(biāo)識別實(shí)體集中一個(gè)實(shí)體的屬性集候選碼:最小的超碼主碼:被選中的候選碼2023/7/24第15頁,課件共79頁,創(chuàng)作于2023年2月聯(lián)系集的碼參與聯(lián)系的實(shí)體集的主碼的組合形成聯(lián)系集的一個(gè)超碼(customer_id,account_number)是depositor的一個(gè)超碼注意:這意味著實(shí)體集對能在特定的聯(lián)系集中最多有一個(gè)聯(lián)系例子:如果需要對每個(gè)customer訪問每個(gè)account跟蹤所有access_dates,我們不能對每次訪問假定一個(gè)聯(lián)系。但,我們可以使用多值屬性當(dāng)確定候選碼時(shí),必須考慮聯(lián)系集的映射基數(shù)當(dāng)在多于一個(gè)候選碼中選擇主碼時(shí),需要考慮聯(lián)系集的語義2023/7/24第16頁,課件共79頁,創(chuàng)作于2023年2月E-R圖矩形:實(shí)體集菱形:聯(lián)系集線段:將屬性連接到實(shí)體集,將實(shí)體集連接到聯(lián)系集橢圓:屬性雙線:多值屬性虛線:派生屬性下劃線:主碼屬性2023/7/24第17頁,課件共79頁,創(chuàng)作于2023年2月E-R圖:復(fù)合、多值、派生屬性2023/7/24第18頁,課件共79頁,創(chuàng)作于2023年2月具有屬性的聯(lián)系集2023/7/24第19頁,課件共79頁,創(chuàng)作于2023年2月角色一個(gè)聯(lián)系的實(shí)體集不需要是相異的如下,標(biāo)簽“manager”和“worker”叫做角色(roles),它們指定employee實(shí)體如何通過works_for聯(lián)系集交互E-R圖中通過標(biāo)示連接矩形和菱形的線段來表示角色角色標(biāo)簽可選,用來闡明聯(lián)系的語義2023/7/24第20頁,課件共79頁,創(chuàng)作于2023年2月基數(shù)約束(CardinalityConstraints)基數(shù)約束表示為聯(lián)系集和實(shí)體集間的有向或無向線段:
()表示“一”(—)表示“多”一對一聯(lián)系:一個(gè)customer通過聯(lián)系borrower最多與一個(gè)loan關(guān)聯(lián)一個(gè)loan通過聯(lián)系borrower最多與一個(gè)customer關(guān)聯(lián)2023/7/24第21頁,課件共79頁,創(chuàng)作于2023年2月一對多聯(lián)系在一對多聯(lián)系中,一個(gè)customer通過聯(lián)系borrower與多個(gè)(包括零個(gè))loan關(guān)聯(lián),一個(gè)loan通過聯(lián)系borrower最多與一個(gè)customer關(guān)聯(lián)2023/7/24第22頁,課件共79頁,創(chuàng)作于2023年2月多對一聯(lián)系在多對一聯(lián)系中,一個(gè)customer通過聯(lián)系borrower最多與一個(gè)loan關(guān)聯(lián),一個(gè)loan通過聯(lián)系borrower與多個(gè)(包括零個(gè))customer關(guān)聯(lián)2023/7/24第23頁,課件共79頁,創(chuàng)作于2023年2月多對多聯(lián)系一個(gè)customer通過聯(lián)系borrower與多個(gè)loan(包括零個(gè))關(guān)聯(lián)一個(gè)loan通過聯(lián)系borrower與多個(gè)(包括零個(gè))customer關(guān)聯(lián)2023/7/24第24頁,課件共79頁,創(chuàng)作于2023年2月實(shí)體集在聯(lián)系集上的參與全參與(雙線表示):實(shí)體集上每個(gè)實(shí)體參與聯(lián)系集上的至少一個(gè)聯(lián)系例如:loan在borrower上的參與是全參與
每個(gè)loan必須有一個(gè)customer通過borrower與之關(guān)聯(lián)部分參與:某些實(shí)體可以不參與聯(lián)系集中任何聯(lián)系例如:customer在borrower上的參與是部分參與2023/7/24第25頁,課件共79頁,創(chuàng)作于2023年2月基數(shù)約束的另一種表示符號基數(shù)約束也能表示為參與約束2023/7/24第26頁,課件共79頁,創(chuàng)作于2023年2月幾種表示比較2023/7/24第27頁,課件共79頁,創(chuàng)作于2023年2月三元聯(lián)系E-R圖2023/7/24第28頁,課件共79頁,創(chuàng)作于2023年2月三元聯(lián)系的基數(shù)約束我們只允許三元(或更高度數(shù))聯(lián)系最多有一個(gè)箭頭來表示基數(shù)約束如:一個(gè)從works_on到j(luò)ob的箭頭表示每個(gè)雇員在任一支行最多有一個(gè)工作如果有超過一個(gè)箭頭,則有兩種意思解釋:如:一個(gè)A,B和C間的三元聯(lián)系R,箭頭到B和C可以有如下意思: 1.每個(gè)A實(shí)體與B和C中唯一的實(shí)體相關(guān)聯(lián) 2.每個(gè)(A,B)中實(shí)體對與C中唯一實(shí)體關(guān)聯(lián),且每個(gè)(A,C)中實(shí)體對與B中唯一實(shí)體關(guān)聯(lián)上面二者有不同的形式為避免混亂,我們規(guī)定超過一個(gè)箭頭為非法2023/7/24第29頁,課件共79頁,創(chuàng)作于2023年2月設(shè)計(jì)問題實(shí)體集vs.屬性
選擇主要基于建模企業(yè)的結(jié)構(gòu),以及所討論的屬性的語義實(shí)體集vs.聯(lián)系集
可能的指導(dǎo)在于設(shè)計(jì)一個(gè)聯(lián)系集去描述兩個(gè)實(shí)體間的動作二元聯(lián)系集vs.n元聯(lián)系集
盡管可能用多個(gè)互異的二元聯(lián)系集代替任何一個(gè)非二元(n>2)聯(lián)系集,一個(gè)n元聯(lián)系集能夠?qū)⒍鄠€(gè)實(shí)體參與一個(gè)聯(lián)系表現(xiàn)的更清楚聯(lián)系屬性的布局2023/7/24第30頁,課件共79頁,創(chuàng)作于2023年2月實(shí)體集vs.屬性2023/7/24第31頁,課件共79頁,創(chuàng)作于2023年2月實(shí)體集vs.聯(lián)系集2023/7/24第32頁,課件共79頁,創(chuàng)作于2023年2月二元聯(lián)系vs.非二元聯(lián)系有些非二元聯(lián)系表示為二元聯(lián)系更好例子:三元聯(lián)系parents,關(guān)聯(lián)一個(gè)child到他/她的father和mother,該聯(lián)系以兩個(gè)二元聯(lián)系father和mother表達(dá)更好使用兩個(gè)二元聯(lián)系允許部分信息(如:只知道m(xù)other)但一些聯(lián)系是“自然的”非二元例如:works_on思考:民政局要記錄人的家庭(婚姻、親子(血親、非血親))、社會(工作)關(guān)系。提示:一個(gè)實(shí)體“人”。2023/7/24第33頁,課件共79頁,創(chuàng)作于2023年2月非二元聯(lián)系轉(zhuǎn)換為二元形式
總之,通過建立一個(gè)人為的實(shí)體集,任何非二元聯(lián)系能夠被二元聯(lián)系替換。使用實(shí)體集E以及三個(gè)聯(lián)系集,代替A、B和C
間的聯(lián)系
R: 1.RA,關(guān)聯(lián)E和A 2.RB,關(guān)聯(lián)E和B 3.RC,關(guān)聯(lián)E和C為E建立一個(gè)特殊的標(biāo)識屬性如果聯(lián)系集R有屬性,將其賦給實(shí)體集E
對R中每個(gè)聯(lián)系(ai,bi,ci),建立 1.實(shí)體集E中的一個(gè)新的實(shí)體ei
2.增加(ei,ai)到RA 3.增加(ei,bi
)到RB
4.增加(ei,ci)到RC2023/7/24第34頁,課件共79頁,創(chuàng)作于2023年2月非二元聯(lián)系轉(zhuǎn)換為二元形式(Cont.)并需要約束轉(zhuǎn)換轉(zhuǎn)換所有約束也許不可能在轉(zhuǎn)換后的模式的實(shí)例中,可能有的實(shí)例不能與R中任何實(shí)例相對應(yīng)練習(xí):
增加約束到聯(lián)系RA、RB和RC,以確保新建立的實(shí)體對應(yīng)于實(shí)體集A、B和C每個(gè)中嚴(yán)格的一個(gè)實(shí)體我們能夠避免建立標(biāo)識屬性,通過使E成為一個(gè)被三個(gè)聯(lián)系集標(biāo)識的弱實(shí)體集2023/7/24第35頁,課件共79頁,創(chuàng)作于2023年2月聯(lián)系屬性的布局:映射基數(shù)影響E-R設(shè)計(jì)如果每個(gè)帳戶只能有一個(gè)客戶,可以讓access-date成為account的一個(gè)屬性,而不是聯(lián)系的屬性,即是,該從account到customer聯(lián)系是多對一(等價(jià)地,customer到account是一對多)2023/7/24第36頁,課件共79頁,創(chuàng)作于2023年2月弱實(shí)體集(WeakEntitySets)一個(gè)沒有主碼的實(shí)體集稱為弱實(shí)體集(weakentityset)弱實(shí)體集的存在依賴于標(biāo)識實(shí)體集(identifyingentityset)或?qū)僦鲗?shí)體集(ownerentityset)的存在它必須與標(biāo)識實(shí)體集通過一個(gè)從標(biāo)識實(shí)體集到弱實(shí)體集的完全、一對多的聯(lián)系集相連標(biāo)識性聯(lián)系(Identifyingrelationship)使用雙線菱形描畫弱實(shí)體集的分辨符(discriminator)
(或部分碼)是區(qū)分弱實(shí)體集的所有實(shí)體的屬性集合弱實(shí)體集的主碼由弱實(shí)體集存在依賴于的強(qiáng)實(shí)體集的主碼,加上弱實(shí)體集的分辨符組成2023/7/24第37頁,課件共79頁,創(chuàng)作于2023年2月弱實(shí)體集(Cont.)使用雙線矩形描畫弱實(shí)體集使用虛線下劃線描畫弱實(shí)體集的分辨符payment_number–payment實(shí)體集的分辨符payment的主碼–(loan_number,payment_number)
2023/7/24第38頁,課件共79頁,創(chuàng)作于2023年2月弱實(shí)體集(Cont.)注意:強(qiáng)實(shí)體集主碼并不顯式地存儲在弱實(shí)體集中,因?yàn)樗[含在標(biāo)識性聯(lián)系中如果loan_number被顯式存儲,payment應(yīng)該成為強(qiáng)實(shí)體,但這樣payment和loan間的聯(lián)系被一個(gè)隱含聯(lián)系重復(fù)了,該隱含的聯(lián)系被payment和loan共有的屬性loan_number定義了弱實(shí)體集可以參與標(biāo)識性聯(lián)系以外的其他聯(lián)系弱實(shí)體集可以作為屬主參與到與另一個(gè)弱實(shí)體集的標(biāo)識性聯(lián)系中弱實(shí)體集可以與不止一個(gè)標(biāo)識實(shí)體集聯(lián)系如果弱實(shí)體集屬性不多,也沒有參與到標(biāo)識性聯(lián)系以外的其他聯(lián)系,我們可以選擇將弱實(shí)體集表示為屬主實(shí)體集的一個(gè)多值復(fù)合屬性2023/7/24第39頁,課件共79頁,創(chuàng)作于2023年2月更多弱實(shí)體集例子在大學(xué)里,course是強(qiáng)實(shí)體,course_offering能夠被建模為弱實(shí)體course_offering的分辨符可以是semester(包括year)和section_number(如果有超過一個(gè)部分)如果我們建模course_offering為一個(gè)強(qiáng)實(shí)體,我們應(yīng)該建模course_number為一個(gè)屬性。這樣,與course的聯(lián)系應(yīng)該隱含course_number屬性,就重復(fù)了。2023/7/24第40頁,課件共79頁,創(chuàng)作于2023年2月擴(kuò)展的E-R特性:特殊化(Specialization)自上而下(top-down)的設(shè)計(jì)過程。我們在一個(gè)實(shí)體集中設(shè)計(jì)互異的子群這些子群變成低層實(shí)體集,這些實(shí)體集有屬性或參與對高層實(shí)體集不適用的聯(lián)系三角形組件描畫,標(biāo)示為ISA(如:customer“isa”person)屬性繼承–一個(gè)低層實(shí)體集繼承其相連高層實(shí)體集的全部屬性,以及繼承地參與到其高層實(shí)體集參與的聯(lián)系中單繼承:給定低層實(shí)體集參與到一個(gè)ISA聯(lián)系中多繼承:給定低層實(shí)體集參與到一個(gè)以上ISA聯(lián)系中2023/7/24第41頁,課件共79頁,創(chuàng)作于2023年2月特殊化例子2023/7/24第42頁,課件共79頁,創(chuàng)作于2023年2月擴(kuò)展E-R特性:泛化(Generalization)自下而上(bottom-up)設(shè)計(jì)過程–組合共享同樣特性的實(shí)體集到高層實(shí)體集特殊化和泛化是簡單的互逆過程,在E-R圖中以同樣方式描畫術(shù)語特殊化和泛化常被互換地使用2023/7/24第43頁,課件共79頁,創(chuàng)作于2023年2月特殊化和泛化(Cont.)基于不同的特性,實(shí)體集可以有多種特殊化方式如:permanent_employeevs.temporary_employee, 以及officervs.secretaryvs.teller每個(gè)特定的employee應(yīng)該是permanent_employee或temporary_employee的一個(gè)成員同時(shí)也是officer、secretary或teller的一個(gè)成員ISA聯(lián)系也用來指代父類—子類(superclass–subclass)
聯(lián)系2023/7/24第44頁,課件共79頁,創(chuàng)作于2023年2月特殊化/泛化上的約束設(shè)計(jì)判定哪些實(shí)體能夠成為給定低層實(shí)體集的成員條件定義的成員資格的確定基于實(shí)體是否滿足一個(gè)顯式的條件或謂詞例子:所有65歲以上的客戶是senior-citizen的成員,senior-citizenISAperson用戶定義的不是條件判定,而是用戶指派約束或非約束的實(shí)體可以屬于單一泛化中超過一個(gè)低層實(shí)體集分離的(disjoint)一個(gè)實(shí)體只能夠?qū)儆谝粋€(gè)低層實(shí)體集注意E-R圖中在ISA三角旁書寫disjoint
重疊的(overlapping)一個(gè)實(shí)體能夠?qū)儆诔^一個(gè)低層實(shí)體集2023/7/24第45頁,課件共79頁,創(chuàng)作于2023年2月特殊化/泛化上的約束設(shè)計(jì)(Cont.)完全性約束(Completeness
constraint)--指定一個(gè)高層泛化實(shí)體集是否必須屬于至少一個(gè)低層實(shí)體集全部特殊化或泛化:一個(gè)實(shí)體必須屬于低層實(shí)體集中的一個(gè)部分特殊化或泛化:一個(gè)實(shí)體不需要屬于低層實(shí)體集中的一個(gè)2023/7/24第46頁,課件共79頁,創(chuàng)作于2023年2月聚集(Aggregation)考慮前面提到的三元聯(lián)系works_on
假設(shè)我們想要記錄管理者,該管理者管理一個(gè)支行的一個(gè)雇員完成的工作2023/7/24第47頁,課件共79頁,創(chuàng)作于2023年2月聚集(Cont.)聯(lián)系集works_on和manages代表重疊的信息每個(gè)manages聯(lián)系對應(yīng)于一個(gè)works_on聯(lián)系但是,一些works_on聯(lián)系可以不對應(yīng)于任何manages聯(lián)系所以我們不能丟棄works_on聯(lián)系通過聚集可以消除這種冗余允許聯(lián)系間的聯(lián)系把聯(lián)系當(dāng)成一個(gè)抽象實(shí)體對待抽象聯(lián)系成為新實(shí)體不再引入冗余,下面圖形代表:一個(gè)雇員在特定支行的特定工作(job)上工作(workon)一個(gè)雇員(employee)、支行(branch)、工作(job)的組合可以有一個(gè)關(guān)聯(lián)的管理者(manager)2023/7/24第48頁,課件共79頁,創(chuàng)作于2023年2月包含聚集的E-R圖2023/7/24第49頁,課件共79頁,創(chuàng)作于2023年2月E-R圖使用的符號匯總2023/7/24第50頁,課件共79頁,創(chuàng)作于2023年2月符號匯總(Cont.)2023/7/24第51頁,課件共79頁,創(chuàng)作于2023年2月E-R設(shè)計(jì)決定使用屬性或?qū)嶓w集代表一個(gè)對象一個(gè)真實(shí)世界中的概念最好表示為實(shí)體集或聯(lián)系集使用三元聯(lián)系或二元聯(lián)系使用強(qiáng)實(shí)體集或弱實(shí)體集.使用特殊化/泛化–對設(shè)計(jì)中的模塊結(jié)構(gòu)有貢獻(xiàn)使用聚集–能夠?qū)⒕奂瘜?shí)體集當(dāng)成單個(gè)單元對待,而不必關(guān)心其內(nèi)部結(jié)構(gòu)正確的設(shè)計(jì)決定來源于對被建模企業(yè)的深刻理解!
2023/7/24第52頁,課件共79頁,創(chuàng)作于2023年2月銀行數(shù)據(jù)庫設(shè)計(jì)銀行數(shù)據(jù)庫的數(shù)據(jù)需求銀行數(shù)據(jù)庫中的實(shí)體集銀行數(shù)據(jù)庫中的聯(lián)系集銀行數(shù)據(jù)庫中的E-R圖2023/7/24第53頁,課件共79頁,創(chuàng)作于2023年2月銀行數(shù)據(jù)庫的數(shù)據(jù)需求銀行有多個(gè)支行。每個(gè)支行位于某個(gè)城市,由唯一的名字標(biāo)識。銀行監(jiān)控每個(gè)支行的資產(chǎn)。銀行的客戶通過其customer_id值來標(biāo)識。銀行存儲每個(gè)客戶的姓名及其居住的街道和城市??蛻艨梢杂匈~戶,并且可以貸款??蛻艨赡芡硞€(gè)銀行員工發(fā)生聯(lián)系,該員工作為此客戶的貸款負(fù)責(zé)人或私人助理。銀行員工通過其employee_id值來標(biāo)識。銀行的管理機(jī)構(gòu)存儲每個(gè)員工的姓名、電話號碼、親屬姓名及其經(jīng)理的employee_id號碼。銀行還需要知道員工開始工作的日期,由此日期可以推知員工的雇傭期。2023/7/24第54頁,課件共79頁,創(chuàng)作于2023年2月銀行數(shù)據(jù)庫的數(shù)據(jù)需求(Cont.)銀行提供兩類賬戶——支票賬戶和儲蓄存款賬戶。賬戶可以由兩個(gè)或兩個(gè)以上客戶共有,一個(gè)客戶也可以有兩個(gè)或兩個(gè)以上的賬戶。每個(gè)賬戶被賦予唯一的賬戶號。銀行記錄每個(gè)賬戶的余額以及每個(gè)賬戶擁有者訪問該賬戶的最近日期。另外,每個(gè)儲蓄存款賬戶有其利率,而每個(gè)支票賬戶有其透支額。每筆貸款由某個(gè)支行發(fā)放,能被一個(gè)或多個(gè)客戶所共有。一筆貸款用一個(gè)唯一的貸款號標(biāo)識。銀行需要知道每筆貸款所貸金額以及逐次還款情況。雖然貸款的還款號并不能唯一地標(biāo)識銀行所有貸款中的某個(gè)特定的還款,但可以唯一地標(biāo)識對某貸款的所還款項(xiàng)。對每次的還款需要記載其日期和金額。 真實(shí)的銀行中,還應(yīng)像記載對貸款的所還款項(xiàng)那樣來記載每個(gè)儲蓄存款賬戶或支票賬戶中取出或存入的金額。由于這些記載的建模過程類似,并且為了保持示例的簡潔性,在我們的模型中不考慮對存款和取款的記錄。
2023/7/24第55頁,課件共79頁,創(chuàng)作于2023年2月銀行數(shù)據(jù)庫中的實(shí)體集 數(shù)據(jù)需求規(guī)格說明是建造數(shù)據(jù)庫概念模式的出發(fā)點(diǎn)。由前面數(shù)據(jù)需求規(guī)格說明所列舉的特點(diǎn),我們開始標(biāo)識實(shí)體集及其屬性:實(shí)體集branch,具有屬性branch_name、branch_city和assets。實(shí)體集customer,具有屬性customer_id、customer_name、customer_street和customer_city。此外還可以考慮加上屬性banker_name。實(shí)體集employee,具有屬性employee_id、employee_name、telephone_number、salary和manager;此外還包括多值屬性dependent_name,基屬性start_date及其派生屬性employment_length。2023/7/24第56頁,課件共79頁,創(chuàng)作于2023年2月銀行數(shù)據(jù)庫中的實(shí)體集(Cont.)兩個(gè)賬戶實(shí)體——savings_account和checking_account,它們共同的屬性是account_number和balance;此外savings_account還具有屬性interest_rate,checking_account還具有屬性overdraft_amount。實(shí)體集loan,具有屬性loan_number、amount和originating_branch。弱實(shí)體集payment,具有屬性payment_number、payment_date和payment_amount。2023/7/24第57頁,課件共79頁,創(chuàng)作于2023年2月銀行數(shù)據(jù)庫中的聯(lián)系集 在前面的設(shè)計(jì)模式上,我們定義如下聯(lián)系集和映射基數(shù)。在這個(gè)過程中我們還要對前面關(guān)于實(shí)體集屬性的決策進(jìn)一步精化。borrower,是customer和loan間的一個(gè)多對多聯(lián)系集。loan_branch,指明產(chǎn)生貸款的銀行支行的多對一聯(lián)系集。注意這個(gè)聯(lián)系代替了loan實(shí)體集的originating_branch屬性。loan_payment,從loan到payment的一對多聯(lián)系集,表明一筆款項(xiàng)是為某筆貸款而付的。2023/7/24第58頁,課件共79頁,創(chuàng)作于2023年2月銀行數(shù)據(jù)庫中的聯(lián)系集(Cont.)depositor,具有聯(lián)系屬性access_date,是customer和account間的多對多聯(lián)系集,表明某個(gè)客戶擁有某個(gè)賬戶。cust_banker,具有聯(lián)系屬性type的一個(gè)多對一聯(lián)系集,表明一個(gè)客戶可以從一個(gè)銀行員工處獲得建議,而一個(gè)銀行員工可以為一個(gè)或多個(gè)客戶提供建議。注意這個(gè)聯(lián)系集代替了customer實(shí)體集的banker_name屬性。works_for,具有manager角色和具有worker角色的employee實(shí)體之間的聯(lián)系集;其映射基數(shù)表明了一個(gè)員工僅為一個(gè)經(jīng)理工作,而一個(gè)經(jīng)理監(jiān)督一個(gè)或多個(gè)員工。請注意我們用這一聯(lián)系集代替了employee實(shí)體集的manager屬性。2023/7/24第59頁,課件共79頁,創(chuàng)作于2023年2月銀行的E-R圖2023/7/24第60頁,課件共79頁,創(chuàng)作于2023年2月從E-R圖轉(zhuǎn)換到關(guān)系模式主碼允許實(shí)體集和聯(lián)系集一律被表示為數(shù)據(jù)庫的關(guān)系模式一個(gè)符合E-R圖的數(shù)據(jù)庫能夠被模式集所表示對每個(gè)實(shí)體集和聯(lián)系集有一個(gè)唯一的模式,該模式被賦予相應(yīng)實(shí)體集或聯(lián)系集的名字每個(gè)模式有限個(gè)列(總體上對應(yīng)于屬性),每個(gè)列有唯一的名字2023/7/24第61頁,課件共79頁,創(chuàng)作于2023年2月實(shí)體集表示為模式強(qiáng)實(shí)體集轉(zhuǎn)換為具有同樣屬性的模式弱實(shí)體集轉(zhuǎn)換為包含標(biāo)識實(shí)體集主碼的表,如:
payment=
(loan_number,payment_number,payment_date,payment_amount)2023/7/24第62頁,課件共79頁,創(chuàng)作于2023年2月聯(lián)系集表示為模式一個(gè)多對多聯(lián)系集表示為一個(gè)具有(兩個(gè))參與實(shí)體集主碼的模式,并且該模式包含所有該聯(lián)系集的描述性屬性例子:聯(lián)系集borrower的關(guān)系模式:
borrower=(customer_id,loan_number)2023/7/24第63頁,課件共79頁,創(chuàng)作于2023年2月模式中的冗余在多邊全參與的多對一以及一對多聯(lián)系集,能夠被表示為:增加一個(gè)額外的屬性到“多”邊,該屬性包含“一”邊的主碼例子:不是為聯(lián)系集account_branch建立模式,而是增加一個(gè)屬性branch_name到由實(shí)體集account建立的模式中模式account的主碼應(yīng)當(dāng)還是account_number,但應(yīng)當(dāng)增加外碼約束branch_name到模式branch)2023/7/24第64頁,課件共79頁,創(chuàng)作于2023年2月模式中的冗余(Cont.)對一對一聯(lián)系集,任何一邊能夠用來做“多”邊對待即,額外的屬性能夠增加到與任何一個(gè)實(shí)體集相應(yīng)的模式中如果在“多”邊是部分參與,可如前處理,但將造成“多”邊(所增加的屬性)的null值連接弱實(shí)體集和標(biāo)識強(qiáng)實(shí)體集的聯(lián)系集的相應(yīng)模式是冗余的例子:payment模式包含了出現(xiàn)在loan_payment模式中的屬性(即,loan_number和payment_number)2023/7/24第65頁,課件共79頁,創(chuàng)作于2023年2月復(fù)合及多值屬性復(fù)合屬性處理:為每個(gè)組成屬性建立一個(gè)分離的屬性例子:實(shí)體集customer有復(fù)合屬性name,
name包含組成屬性first_name和last_name,則相應(yīng)模式包含兩個(gè)屬性
first_name和last_name實(shí)體E的多值屬性M由單獨(dú)的模式EM表示模式EM有對應(yīng)于E的主碼及多值屬性M
組成的的屬性集例子:employee的多值屬性dependent_names表示為如下模式:
employee_dependent_names=(
employee_id,dname)
每個(gè)多值屬性的值映射到在模式EM上的關(guān)系的一個(gè)單獨(dú)的元組例子:一個(gè)主碼為123-45-6789的employee實(shí)體及親屬Jack和Jane映射到兩個(gè)元組:
(123-45-6789,Jack)and(123-45-6789,Jane)2023/7/24第66頁,課件共79頁,創(chuàng)作于2023年2月特殊化表示為模式方法1:為上層實(shí)體集建立一個(gè)模式為每個(gè)低層實(shí)體集建立一個(gè)模式,包含本地屬性和高層實(shí)體集的主碼
schema
attributes
person name,street,city
customer name,credit_rating
employee name,salary缺點(diǎn):得到關(guān)于的employee的信息需要訪問連個(gè)關(guān)系,分別對應(yīng)于一個(gè)高層已一個(gè)低層模式2023/7/24第67頁,課件共79頁,創(chuàng)作于2023年2月泛化表示為模式(Cont.)方法2:
對每個(gè)實(shí)體集建立模式,該模式包含所有本地和繼承的屬性
schema
attributes
person name,street,city
customer name,street,city,credit_rating
employee name,street,city,salary
如果是全部泛化,泛化的實(shí)體集(person)對應(yīng)的模式不需要存儲信息可以被定義為包含泛化關(guān)系的視圖關(guān)系但因?yàn)橥獯a約束,顯式的模式定義可能依然需要缺點(diǎn):對同時(shí)是客戶和雇員的人,street和city可能被重復(fù)存儲2023/7/24第68頁,課件共79頁,創(chuàng)作于2023年2月聚集表示為模式為表示聚集,建立模式包含如下內(nèi)容:聚集的聯(lián)系集的主碼關(guān)聯(lián)的實(shí)體集的主碼聯(lián)系集的所有描述性屬性例子:為表示聚集works_on和實(shí)體集manager間的聯(lián)系集manages,建立如下模式:
manages(employee_id,branch_name,title,manager_name)2023/7/24第69頁,課件共79頁,創(chuàng)作于2023年2月銀行的關(guān)系模式強(qiáng)實(shí)體集導(dǎo)出的模式多值屬性導(dǎo)出的模式關(guān)聯(lián)強(qiáng)實(shí)體集的聯(lián)系集導(dǎo)出的模式弱實(shí)體集導(dǎo)出的模式ISA聯(lián)系導(dǎo)出的模式外碼約束2023/7/24第70頁,課件共79頁,創(chuàng)作于2023年2月銀行的關(guān)系模式(Cont.)強(qiáng)實(shí)體集導(dǎo)出的模式branch=(branch_name,branch_city,assets)customer=(customer_id,customer_name,customer_street,customer_city)loan
=(loan_number,amount)account
=(account_number,balance)employee
=(employee_id,employee_name,telephone_number,start_date)多值屬性導(dǎo)出的模式dependent_name
=(employee_id,d_name)2023/7/24第71頁,課件共
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 涼山安全咨詢合同范例
- 公司過戶個(gè)人合同范本
- 農(nóng)村置換地合同范例
- 入股買賣合同范本
- 分包合同范例電工
- 借款委托合同范例
- 公司舊廠房租賃合同范例
- 兒童家庭服務(wù)合同范例
- 專家集體跳槽合同范例
- 農(nóng)場租憑合同范例
- 勞務(wù)派遣勞務(wù)外包項(xiàng)目方案投標(biāo)文件(技術(shù)方案)
- 2024年吉安職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2024年蘇州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測試題庫完整版
- 2024年廣州港集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 2024年國家社會科學(xué)基金年度項(xiàng)目申請書;2024年國家社會科學(xué)基金重大項(xiàng)目投標(biāo)書
- 小學(xué)生主題班會 傳承雷鋒精神 爭做時(shí)代新人 課件
- 產(chǎn)品尺寸檢測報(bào)告
- 《小龍蝦工廠化人工繁育技術(shù)規(guī)程》
- 03J111-1輕鋼龍骨內(nèi)隔墻
- SCL-90心理測試試卷
- 法語冠詞總結(jié)
評論
0/150
提交評論