1、資料庫(DB)ch061第6章 資料庫設計與實體關聯模型6-1 資料庫設計的基礎6-2 實體關聯模型6-3 建立實體關聯圖6-4 實體關聯圖的常見錯誤6-5 將實體關聯圖轉換成關聯表綱要6-6 資料庫的邏輯資料模型資料庫(DB)ch0626-1-1 資料庫系統開發的生命周期-圖例資料庫(DB)ch0636-1-1 資料庫系統開發的生命周期-種類完整資料庫設計分成2個部分:1.資料庫設計(Database Design):u依照一定的程序、方法和技術u使用結構化方式將概念資料模型轉換成資料庫的過程2.應用程式設計(Application Design):u建立使用者介面u將商業處理流程轉換成應用
2、程式的執行流程u以便使用者能夠很容易存取資訊,這就是資料庫程式設計(Database Programming)資料庫(DB)ch0646-1-2 資料庫設計方法論-說明資料庫設計方法論(Database Design Methodology):u使用特定程序、技術和工具的結構化設計方法u一種結構化的資料庫設計方法u一種有計劃,按部就班的進行資料庫設計u優點:1.一步一步的指引,幫助我們完成整個資料庫設計2.減少或根本不會造成資料庫設計的錯誤3.方便資料庫系統相關文件的整理以便撰寫資料庫系統的規格書4.當商業流程變更時,容易修改資料庫設計資料庫(DB)ch0656-1-2 資料庫設計方法論-三階
3、段資料庫設計方法論的三階段:1.概念資料庫設計(Conceptual Database Design):F將資料庫需求轉換成概念資料模型的過程F沒有針對特定資料庫管理系統或資料庫模型F實體關聯圖(Entity Relationship Diagram)目前最廣泛使用的概念資料模型 2.邏輯資料庫設計(Logical Database Design):F將概念資料模型轉換成邏輯資料模型的過程F針對特定的資料庫模型來建立邏輯資料模型F將實體關聯圖轉換成關聯表綱要F使用關聯表綱要的外來鍵參考圖建立邏輯資料模型 3.實體資料庫設計(Physical Database Design):F將邏輯資料模型轉
4、換成關聯式資料庫管理系統的一系列SQL指令敘述F用來描述實際的基底關聯表、檔案組織、索引設計和額外的完整性限制條件 資料庫(DB)ch0666-1-2 資料庫設計方法論-圖例實體關聯圖關聯表綱要的外來鍵參考圖SQL的指令敘述資料庫(DB)ch0676-1-2 資料庫設計方法論-邏輯資料庫設計的主要工作邏輯資料庫設計主要工作有2項:1.將實體關聯圖轉換成關聯表綱要2.關聯表的正規化資料庫(DB)ch0686-2 實體關聯模型實體關聯模型(Entity-Relationship Model):u1976年Peter Chen開發的資料塑模方法u目前資料庫系統分析和設計的基礎u將商業領域的公司或組織
5、的資料以邏輯方式呈現u使用實體(Entities)和關聯性(Relationship)F描述真實世界的資料,且描述資料和資料間的關係u將真實世界的資料模型化成邏輯關聯資料(Logically Related Data),儲存在資料庫資料庫(DB)ch0696-2-1 實體關聯模型的基礎-實體與實體型態(1)實體(Entities):u實體是從真實世界的資料中所識別出的東西u例如:人、客戶、產品、供應商、地方、物件、事件或一個觀念u也稱為實體實例(Entity Instance)u特性:F實體一定屬於資料庫系統範圍之內的東西F實體至少擁有一個不是鍵(即關聯表主鍵)的屬性實體型態(Entity T
6、ype):u將實體分類成不同的實體型態(Entity Type)F它們都擁有相同屬性u同一類實體以指定的實體型態名稱(Entity Type Name)來代表u同一類實例集合稱為實體集合(Entity Set)F也就是一個關聯表F例如:學生陳會安是實體同一類學生實體可歸類成實體型態StudentsStudents是實體型態名稱資料庫(DB)ch06106-2-1 實體關聯模型的基礎-關聯與關聯型態關聯性(Relationships):u二個或多個實體間所擁有的關係,也稱為關聯實例(Relationship Instances)關聯型態(Relationship Type):u將關聯實例收集的集
7、合稱為關聯集合(Relationship Set)u可歸類成關聯型態(Relationship Type)資料庫(DB)ch06116-2-1 實體關聯模型的基礎-屬性與屬性型態屬性(Attributes):u實體所擁有的特性u例如:學生實體擁有學號、姓名、地址和電話等屬性屬性型態(Attribute Type):u屬性的所有可能值稱為屬性型態(Attribute Type)或值集合(Value Set)u相當於是關聯表的定義域(Domain)資料庫(DB)ch06126-2-2 實體關聯模型與自然語言-說明資料庫(DB)ch06136-2-2 實體關聯模型與自然語言-句型範例1轉換英文句子:
8、u“There are A in B.” “B has .A.”FB與A是實體型態,has就是關聯型態例:u“There are many employees in every department.” “Every department has many employees.”Femployees和department是實體型態Fhas是關聯型態例:u“One employee works for only one company.”Femployees和company是實體型態Fworks-for是關聯型態資料庫(DB)ch06146-2-2 實體關聯模型與自然語言-句型範例2英文句型:u
9、“The A of B is C.”The A of B is C.”FB是實體,如果C是專有名詞,A是B與C的關聯型態F否則,如果C不是專有名詞,A是B的屬性例:u“The birthday of the Instructor is 09/03/66.”The birthday of the Instructor is 09/03/66.”FInstructor是實體型態F09/03/66不是專有名詞,所以birthday是屬性u“The advisor of Tom Chen is Dr. Chen.”“The advisor of Tom Chen is Dr. Chen.”FTom C
10、hen是專有名詞的學生實體,可歸類成Student實體型態FDr. Chen是專有名詞的教授實體,可歸類成Instructor實體形態FDr. Chen是專有名詞,所以advisor是關聯型態,是Student和Instructor之間的關聯性例如:陳惠安是專有名詞 Students 是普通名詞資料庫(DB)ch06156-2-3 實體關聯模型與資料庫設計實體關聯模型:u圖形化工具描述使用者和設計者眼中的真實世界,作為之間的溝通橋樑F實體對應關聯式資料庫模型的關聯表F關聯性就是外來鍵參考實體關聯圖(Entity-Relationship Diagram, ERD):u使用圖形符號表示的實體關聯
11、模型u使用在概念資料庫設計建立概念資料模型及邏輯資料庫設計邏輯資料模型與概念資料模型的最大差異:u正規化F邏輯資料模型是一個正規化的實體關聯圖資料庫(DB)ch06166-3 建立實體關聯圖-步驟實體關聯圖的基本建立步驟:Step 1:從系統需求找出實體型態Stpe 2:找出實體型態與其他實體型態間的關聯Step 3:定義實體型態間的關聯型態種類:1)一對一2)一對多3)多對多Step 4:定義實體型態的屬性型態與主鍵資料庫(DB)ch06176-3 建立實體關聯圖-符號資料庫(DB)ch06186-3 建立實體關聯圖-範例資料庫(DB)ch06196-3-1 實體型態-實體型態實體型態(En
12、tity Type):u同一類實體的集合,也就是同一類東西u圖形符號是長方形節點,內為實體型態的名稱資料庫(DB)ch06206-3-1 實體型態-實體集合實體型態的實例(Instances):u每一位學生稱為實體型態的實例(Instances),或簡稱為實體,實例的集合稱為實體集合(Entity Set)資料庫(DB)ch06216-3-2 關聯型態-關聯型態關聯型態(Relationship Types):u屬於一種結合實體型態(Associate Entity Type)u目的:F用來連結一、二個或以上相關的實體型態F圖形符號使用菱形節點,在菱形端點使用實線與關聯的實體型態連接資料庫(D
13、B)ch06226-3-2 關聯型態-關聯集合關聯集合(Relationship Set):u關聯型態也可建立實例,實例的集合稱為關聯集合資料庫(DB)ch06236-3-2 關聯型態-遞迴遞迴(Recursive):u實體型態本身會參與關聯自己的關聯型態資料庫(DB)ch06246-3-3 關聯限制條件-說明關聯限制條件(Relationship Constraints):u實體關聯圖中,關聯型態連接的實體型態可指定限制條件,稱為關聯限制條件關聯限制條件有3種:1.基數比限制條件(Cardinality Ratio Constraints)2.基數限制條件(Cardinality Const
14、raints)3.參與限制條件( Participation Constraints)資料庫(DB)ch06256-3-3 關聯限制條件-基數比限制條件11.基數比限制條件(Cardinality Ratio Constraints):u限制關聯實體型態的實例個數,分為3種:1)一對一關聯性(One-to-one Relationship, 1:1):一個實體只關聯到另一個實體例如:一位講師只能是學校的一位員工資料庫(DB)ch06266-3-3 關聯限制條件-基數比限制條件22.一對多關聯性(One-to-many Relationship, 1:N):一個實體關聯到多個實體例如:一門課程有
15、小考、期中考和期末考等考試資料庫(DB)ch06276-3-3 關聯限制條件-基數比限制條件33.多對多關聯性(Many-to-many Relationship, M:N):多個實體關聯到多個其他實體例如:學生可參加多次考試,反過來,考試可讓多位學生應試資料庫(DB)ch0628基數限制條件(Cardinality Constraints):u標示實體允許參與關聯性的範圍:F(1,N)、(0,N)、(1,1)和(0,1)等u例如:F課程Courses關聯型態是以(0,N)範圍參與Has關聯型態F考試Exams關聯型態是(1,1)參與6-3-3 關聯限制條件-基數限制條件資料庫(DB)ch06
16、296-3-3 關聯限制條件-參與限制條件(說明)參與限制條件( Participation Constraints):u實體集合的實例是全部或部分參與關聯型態u分為兩種:1)全部參與限制條件(Total Participation Constraints):所有實體集合的實例都參與關聯性雙線來標示,也稱為存在相依(Existence Dependency)2)部分參與限制條件(Partial Participation Constraints):在實體集合只有部分實例參與關聯性單線標示資料庫(DB)ch06306-3-3 關聯限制條件-參與限制條件(圖例)Courses實體只部分參與關聯,因
17、為課程可能沒有考試Exams實體是全部參與關聯,因為如果課程有考試,就一定存在考試實體資料庫(DB)ch06316-3-3 關聯限制條件-參與限制條件(雞爪符號)資料庫(DB)ch06326-3-4 屬性-說明屬性:u實體關聯圖的實體與關聯型態可擁有0到多個屬性(Attributes)u屬性使用橢圓型圖形符號的節點,使用線與實體與關聯型態連接資料庫(DB)ch06336-3-4 屬性-種類1屬性:u一組值的集合u這些值是屬性可能的值,稱為值集合(Value Set)或定義域(Domain)u屬性分成很多種:1.單元值屬性型態(Atomic Attribute Types):實體與關聯型態的基本
18、屬性型態,只擁有單元值例如:Students實體型態sid、name、GPA、birthday和tel屬性name資料庫(DB)ch06346-3-4 屬性-種類22.複合屬性型態(Composite Attribute Types):屬性由多個單元屬性組成使用樹狀的單元屬性圖形符號來表示例如:address複合屬性:由street、city和ZIP單元屬性組成3.多重值屬性型態(Multivalued Attribute Types):屬性值不是單元值,而是多重值雙線的橢圓形節點符號來標示例如:若學生有多個通訊地址,則address屬性為多重值屬性學生有多個興趣,則hobby屬性為多重值屬性
19、資料庫(DB)ch06356-3-4 屬性-種類3hobby資料庫(DB)ch06366-3-4 屬性-種類44.導出屬性型態(Derived Attribute Types):由其他屬性計算出的屬性使用虛線的橢圓形節點符號來標示例如:Exams實體型態的numOfStudents屬性記錄參加考試的學生數,可從Results關聯型態計算而得例如: age(年齡)屬性可由生日推導出來age資料庫(DB)ch06376-3-4 屬性-種類55.鍵屬性型態(Key Attribute Types):用來識別實例的屬性,相當於關聯表的主鍵鍵屬性型態是在名稱下加上底線來標示例如:Students實體型態
20、的主鍵是sid屬性資料庫(DB)ch0638弱實體型態(Weak Entity Types):u依賴其他實體型態才能存在的實體形態,沒有主鍵的實體型態u使用雙框的長方形圖形符號來標示F例如:parent(學生家長)是一個弱實體只有學生實體存在,家長實體才會存在一般實體型態(Regular Entity Type):u擁有主鍵的實體型態u或稱強實體型態(Strong Entity Type)6-3-5 弱實體型態-說明parentsstudents資料庫(DB)ch06396-3-5 弱實體型態-圖例識別實體型態(Identifying Entity Type):u弱實體型態一定關聯到一個強實體
21、型態,以便識別其身份u這個強實體型態稱為識別實體型態u使用的關聯型態稱為識別關聯型態(Identifying Relationship Type)u使用雙框的菱形圖形符號表示此強實體型態稱為識別實體型態此關聯型態稱為識別關聯型態弱實體型態資料庫(DB)ch0640練習:利用dia 軟體畫出實體關聯圖資料庫(DB)ch0641練習:成績單實體關聯圖 (E-R diagram)n請根據下列成績單畫出其實體關聯圖 (E-R diagram),假設每個科目皆由一個老師來授課,每個科目只在一間教室上課。 資料庫(DB)ch06426-4 實體關聯圖的常見錯誤連接陷阱(Connection Traps):
22、u錯誤解釋實體間的關聯性造成實體關聯圖的錯誤,稱為連接陷阱實體關聯圖最常見的2種連接陷阱錯誤:1.扇形陷阱(Fan Traps)2.斷層陷阱(Chasm Traps)資料庫(DB)ch06436-4-1 扇形陷阱-說明1扇形陷阱(Fan Traps):u通常產生在實體型態擁有多個一對多的關聯型態u如同扇形散開(名稱的由來)u關聯到的各實體型態間的關聯性會產生令人混淆的問題u有兩個實體類型: EA與 EBF在實體-關係圖中可找到一條路徑將它們聯繫起來F但,卻存在某個屬於EAEA的實體聯繫到兩個以上屬於EBEB的實體便產生了扇形陷阱扇形陷阱(Fan Trap)(Fan Trap) 例如:u學生、講
23、師與課程實體型態間擁有3個一對多關聯性:F講師可以教多位學生F講師可以教多門課程F學生可以選修多門課 學生到底修了哪門課?資料庫(DB)ch06446-4-1 扇形陷阱-說明2例如:u許多學生(Students) 受教於(Teach) 一位老師(instructors)u而一位老師(instructors) 則教授(Teach) 多門課程u問題討論:F兩位同學受教於張三老師F但,張三老師教授了資料結構 與 資料庫系統這兩門課 F問題:到底這兩位同學所修的課是資料結構 ,還是資料庫系統呢?或是兩門都修?沒有人知道! F原因: 不應該將(instructors) 拿來作為(Students) 與(
24、Courses) 之間的橋樑因為ERD 中的對應關係為n.1.1.m資料庫(DB)ch06456-4-1 扇形陷阱-說明3扇形陷阱問題:u學生選修多門課程的一對多關聯性F沒有辦法建立在講師與學生和講師與課程的2個一對多關聯性上,如此就會產生混淆資料庫(DB)ch06466-4-1 扇形陷阱-解決方案扇形陷阱解決方案:u扇形陷阱發生的原因是誤解關聯的意義u關聯正確的解釋應該是以課程建立關聯性的橋樑資料庫(DB)ch06476-4-1 扇形陷阱-解決方案(續)u學生選修多門課和講師教多門課程的2個一對多關聯性F講師教多位學生的一對多關聯性可透過講師教多門課,一門課有多位學生,所以講師可以教多位學生
25、資料庫(DB)ch06486-4-2 斷層陷阱-說明斷層陷阱(Chasm Traps):u實體間應存在的關聯根本不存在,2個實體間沒辦法找到一條路徑來連接u有兩個實體類型: EA與 EB F在實體-關係圖中可找到一條路徑將它們聯繫起來F但,卻存在某個屬於EA中的實體無法聯繫到屬於EB的任何一個實體便產生了斷層陷阱(Chasm Trap) u例如:一位學生可修多門課程,每一位學生會購買多本教課書資料庫(DB)ch06496-4-2 斷層陷阱-說明(續)斷層陷阱的問題:u學生可能不買教課書u學生會修多門課, 會買多本教課書F有些教課書不知道到底是那一門課程的教課書?資料庫(DB)ch06506-4
26、-2 斷層陷阱-解決方案斷層陷阱(Chasm Traps)解決方案:u新增關聯型態u在Courses和Textbooks實體型態新增一對多的關聯型態來解決資料庫(DB)ch06516-4-2 斷層陷阱-解決方案(續)uCourses和Textbooks實體型態間擁有一個新關聯型態AssignF表示課程指定的教課書有那幾本資料庫(DB)ch06526-4-2 斷層陷阱-補充範例例如: u一個科系(Department)有(Contain)多位老師(Teacher)u而一位老師(Teacher)掌管(Manage)許多的財產設備(Property) TeacherContainDepartment
27、ManageProperty資料庫(DB)ch06536-4-2 斷層陷阱-補充範例(續)何時會出現問題? u若系上任何財產設備都一定會由某位老師掌管F這樣設計是沒有問題的F只要找出老師就可找到所有的設備u但若系上某些設備並不是由老師來掌管,那麼就會出現問題F例如:書櫃屬於資管系(MIS)的財產,但沒有老師掌管以.代表掌管老師為虛值問題:當透過老師去統計系上的財產設備時,將會遺漏掉書櫃這樣財產!解決方式:另外建立科系(Department) 與財產設備(Property) 之間的關係 資料庫(DB)ch06546-4-2 斷層陷阱-補充範例(續)TeacherContainDepartment
28、ManagePropertyOwnN1資料庫(DB)ch06556-5 將實體關聯圖轉換成關聯表綱要6-5-1 將強實體型態轉換成關聯表6-5-2 將關聯型態轉換成外來鍵6-5-3 轉換多重關聯型態6-5-4 多重值屬性轉換成關聯表6-5-5 弱實體型態轉換成關聯表資料庫(DB)ch06566-5-1 將強實體型態轉換成關聯表-規則1.強實體型態轉換成關聯表:u強實體型態(即一般實體型態)對應關聯表F將強實體型態轉換成關聯表綱要u規則如下:1)建立新關聯表綱要,名稱是實體型態名稱2)關聯表綱要包含:單元值屬性型態複合屬性型態3)關聯表綱要不包含:多重值屬性型態外來鍵導出屬性型態4)將鍵屬性(K
29、ey Attribute)指定為關聯表綱要的主鍵資料庫(DB)ch06576-5-1 將強實體型態轉換成關聯表-圖例age資料庫(DB)ch06586-5-2 將關聯型態轉換成外來鍵-說明2.關聯型態轉換成外來鍵:u關聯型態可轉換成關聯表綱要的外來鍵u關聯表綱要新增參考其他實體型態的外來鍵,分為3種:1)一對一關聯型態2)一對多關聯型態3)多對多關聯型態資料庫(DB)ch06596-5-2 將關聯型態轉換成外來鍵:一對一關聯型態(規則)1)一對一關聯型態轉換成關聯表綱要的規則:u參與關聯性的關聯表綱要F新增參考到另一個關聯表綱要的外來鍵(FK)u若關聯型態擁有單元值屬性F一併加入新增外來鍵的關
30、聯表綱要資料庫(DB)ch06606-5-2 將關聯型態轉換成外來鍵:一對一關聯型態(圖例)rankrank外來鍵SSN為身份證字號, 當主鍵 資料庫(DB)ch06616-5-2 將關聯型態轉換成外來鍵:一對多關聯型態(規則)2)一對多關聯型態轉換成關聯表綱要的規則:u將1端關聯表綱要的主鍵(PK)F加到N端的關聯表綱要當作外來鍵(FK)u若關聯型態擁有單元值屬性:F一併加入新增外來鍵的關聯表綱要資料庫(DB)ch06626-5-2 將關聯型態轉換成外來鍵:一對多關聯型態(圖例)外來鍵主鍵資料庫(DB)ch06636-5-2 將關聯型態轉換成外來鍵:多對多關聯型態(規則)3)多對多關聯型態轉
31、換成關聯表綱要的規則:u關聯型態:F建立成新的關聯表綱要,名稱為關聯型態名稱F新關聯表綱要擁有兩個外來鍵(FK):分別參考關聯到的實體型態的主鍵F若關聯型態擁有單元值屬性:一併加入新的關聯表綱要F主鍵:兩個外來鍵組合的複合主鍵有時,可能需要新增幾個關聯型態的屬性作為主鍵資料庫(DB)ch06646-5-2 將關聯型態轉換成外來鍵-多對多關聯型態(圖例)外來鍵外來鍵主鍵主鍵複合主鍵資料庫(DB)ch06656-5-3 轉換多重關聯型態-規則3.轉換多重關聯型態:u多重關聯型態(Ternary Relationship Type):F關聯型態擁有3個或更多實體型態間的關聯性,稱為多重關聯型態u轉換
32、規則:F關聯型態:建立成新的關聯表綱要,名稱是關聯型態的名稱關聯表綱要擁有多個外來鍵(FK):分別參考關聯到的實體型態的主鍵若關聯型態擁有單元值屬性一併加入新建立的關聯表綱要主鍵:所有外來鍵組合的複合主鍵可能需要新增幾個關聯型態的屬性,或部分外來鍵來作為主鍵資料庫(DB)ch06666-5-3 轉換多重關聯型態-實體關聯圖rankrankSSN為身份證字號 ,參考PPT p56此三個欄位皆是外來鍵Classes複合主鍵主鍵主鍵主鍵資料庫(DB)ch06676-5-4 多重值屬性轉換成關聯表-規則4.多重值屬性轉換成關聯表綱要的規則:u多重值屬性:F建立新的關聯表綱要F名稱 :可為屬性名稱或實體
33、與屬性結合的名稱F新增外來鍵將參考到的實體型態主鍵, 新增為外來鍵F主鍵:外來鍵加上多重值屬性若多重值屬性是複合屬性:可能需要加上其中一個屬性或是全部屬性資料庫(DB)ch06686-5-4 多重值屬性轉換成關聯表-圖例複合主鍵外來鍵主鍵資料庫(DB)ch06696-5-5 弱實體型態轉換成關聯表-規則5.弱實體型態轉換成關聯表:u弱實體型態轉換成關聯表綱要 :F因為弱實體型態一定擁有一個對應的識別實體型態(Identifying Entity Type)u弱實體型態:F建立新的關聯表綱要,名稱為弱實體型態的名稱F新關聯表綱要包含單元值屬性型態F新增外來鍵 :將對應的強實體型態的主鍵, 新增為外來鍵F主鍵:將弱實體型態的部分鍵(Partial Key)加上外來鍵資料庫(DB)ch06706-5-5 弱實體型態轉換成關聯表-圖例複合主鍵外來鍵主鍵資料庫(DB)ch0671討論區:將下列實體關聯圖轉成關聯表及外來鍵參考圖