Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤

Similar presentations


Presentation on theme: "第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤"— Presentation transcript:

1 第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤
第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤 6-5 將實體關聯圖轉換成關聯表綱要 6-6 資料庫的邏輯資料模型

2 6-1 資料庫設計的基礎 6-1-1 資料庫系統開發的生命周期 6-1-2 資料庫設計方法論

3 6-1-1 資料庫系統開發的生命周期-圖例

4 6-1-1 資料庫系統開發的生命周期-種類 完整資料庫設計可以分成兩個部分,如下所示:
資料庫設計(Database Design):依照一定的程序、方法和技術,使用結構化方式將概念資料模型轉換成資料庫的過程。 應用程式設計(Application Design):這是建立使用者介面、將商業處理流程轉換成應用程式的執行流程,以便使用者能夠很容易存取資訊,這就是「資料庫程式設計」(Database Programming)。

5 6-1-2 資料庫設計方法論-說明 「資料庫設計方法論」(Database Design Methodology)是使用特定程序、技術和工具的結構化設計方法,這是一種結構化的資料庫設計方法,簡單的說,一種有計劃,按部就班的進行資料庫設計,其優點如下所示: 提供一步一步的指引,可以幫助我們完成整個資料庫設計。 減少或根本不會造成資料庫設計的錯誤。 方便資料庫系統相關文件的整理,以便撰寫資料庫系統的規格書。 當商業流程變更時,容易修改資料庫設計。

6 6-1-2 資料庫設計方法論-三階段 概念資料庫設計(Conceptual Database Design):將資料庫需求轉換成概念資料模型的過程,並沒有針對特定資料庫管理系統或資料庫模型。 邏輯資料庫設計(Logical Database Design):將概念資料模型轉換成邏輯資料模型的過程,邏輯資料庫設計是針對特定的資料庫模型來建立邏輯資料模型。 實體資料庫設計(Physical Database Design):將邏輯資料模型轉換成關聯式資料庫管理系統的一系列SQL指令敘述。

7 6-1-2 資料庫設計方法論-圖例

8 6-1-2 資料庫設計方法論-邏輯資料庫設計的主要工作
邏輯資料庫設計的主要工作有兩項,如下所示: 將實體關聯圖轉換成關聯表綱要。 關聯表的正規化。

9 6-2 實體關聯模型 6-2-1 實體關聯模型的基礎 6-2-2 實體關聯模型與自然語言 6-2-3 實體關聯模型與資料庫設計

10 6-2 實體關聯模型 「實體關聯模型」(Entity-Relationship Model)是1976年Peter Chen開發的資料塑模方法,這是目前資料庫系統分析和設計的基礎,實體關聯模型使用實體(Entities)與關聯性(Relationship)描述資料和資料間的關係,如下圖所示:

11 6-2-1 實體關聯模型的基礎-說明 實體關聯模型(Entity-Relationship Model)是將商業領域的公司或組織的資料以邏輯方式呈現,實體關聯模型相信實體與關聯性是真實世界最自然的資料塑模(Data Model),使用實體和關聯性來描述真實世界的資料。 換個角度來說,實體關聯模型是將真實世界的資料模型化成邏輯關聯資料(Logically Related Data),這就是我們儲存在資料庫的資料。

12 6-2-1 實體關聯模型的基礎-實體與實體型態(1)
實體(Entities)與實體型態(Entity Type) 實體是從真實世界的資料中所識別出的東西,例如:人、客戶、產品、供應商、地方、物件、事件或一個觀念,也稱為實體實例(Entity Instance),其特性如下所示: 實體一定屬於資料庫系統範圍之內的東西。 實體至少擁有一個不是鍵(即關聯表主鍵)的屬性。

13 6-2-1 實體關聯模型的基礎-實體與實體型態(2)
實體(Entities)與實體型態(Entity Type) 我們可以將實體分類成不同的實體型態(Entity Type),表示它們都擁有相同屬性,同一類實體以指定的實體型態名稱(Entity Type Name)來代表。 同一類實例的集合稱為實體集合(Entity Set),也就是一個關聯表。例如:學生陳會安是實體,同一類學生實體可以歸類成實體型態Students,Students是實體型態名稱。

14 6-2-1 實體關聯模型的基礎-關聯與關聯型態 關聯性(Relationships)與關聯型態(Relationship Type)
關聯性(Relationships)是二個或多個實體間所擁有的關係,也稱為關聯實例(Relationship Instances)。 將關聯實例收集起的集合稱為關聯集合(Relationship Set),我們可以將它歸類成關聯型態(Relationship Type)。

15 6-2-1 實體關聯模型的基礎-屬性與屬性型態 屬性(Attributes)與屬性型態(Attribute Type)
屬性的所有可能值稱為「屬性型態」(Attribute Type)或值集合(Value Set),相當於是關聯表的定義域(Domain)。

16 6-2-2 實體關聯模型與自然語言-說明

17 6-2-2 實體關聯模型與自然語言-句型範例1 英文句子需要先進行轉換,如下: B與A是實體型態,has就是關聯型態。一個範例,如下所示:
“There are A in B.”  “B has ….A.” B與A是實體型態,has就是關聯型態。一個範例,如下所示: “There are many employees in every department.” → “Every department has many employees.” employees和department是實體型態,has是關聯型態。 “One employee works for only one company.” employees和company是實體型態,works-for是關聯型態。

18 6-2-2 實體關聯模型與自然語言-句型範例2 英文句型,如下所示:
“The A of B is C.” 英文句型的B是實體,如果C是專有名詞,A是B與C的關聯型態,否則A是B的屬性。一些英文句子的範例,如下所示: “The birthday of the Instructor is 09/03/66.” “The advisor of Tom Chen is Dr. Chen.” 上述第一個英文句子的Instructor是實體型態,因為09/03/66不是專有名詞,所以birthday是屬性。 在第二個英文句子的Tom Chen是學生實體,可以歸類成Student實體形態,Dr. Chen是專有名詞的教授實體,可以歸類成Instructor實體形態,此時的advisor是關聯型態,這是Student和Instructor之間的關聯性。

19 6-2-3 實體關聯模型與資料庫設計 以資料庫設計來說,實體關聯圖可以使用在概念資料庫設計建立概念資料模型,這種圖形化工具可以描述使用者和設計者眼中的真實世界,作為之間的溝通橋樑。 因為實體關聯模型的實體可以對應關聯式資料庫模型的關聯表,關聯性就是外來鍵參考,所以關聯式資料庫的邏輯資料庫設計也可以使用實體關聯圖建立邏輯資料模型,它與概念資料模型的最大差異在於正規化,邏輯資料模型是一個正規化的實體關聯圖。

20 6-3建立實體關聯圖 6-3-1 實體型態 6-3-2 關聯型態 6-3-3 關聯限制條件 6-3-4 屬性 6-3-5 弱實體型態

21 6-3建立實體關聯圖-步驟 實體關聯圖(Entity-Relationship Diagram, ERD)是使用圖形符號表示的實體關聯模型。
實體關聯圖的基本建立步驟,如下所示: Step 1:從系統需求找出實體型態。 Stpe 2:找出實體型態與其他實體型態間的關聯。 Step 3:定義實體型態間的關聯型態種類是:一對一、一對多或多對多關聯型態。 Step 4:定義實體型態的屬性型態與主鍵。

22 6-3建立實體關聯圖-符號

23 6-3建立實體關聯圖-範例

24 6-3-1 實體型態-實體型態 實體型態(Entity Type)是同一類實體的集合,也就是同一類東西,其圖形符號是長方形節點,內為實體型態的名稱,如下圖所示:

25 6-3-1 實體型態-實體集合 每一位學生稱為實體型態的實例(Instances),或簡稱為實體,實例的集合稱為「實體集合」(Entity Set),如下圖所示:

26 6-3-2 關聯型態-關聯型態 關聯型態(Relationship Types)屬於一種結合實體型態(Associate Entity Type),其目的是用來連結一、二個或以上相關的實體型態,圖形符號是使用菱形節點,在菱形端點使用實線與關聯的實體型態連接,如下圖所示:

27 6-3-2 關聯型態-關聯集合 關聯型態也可以建立實例,實例的集合稱為「關聯集合」(Relationship Set),如下圖所示:

28 6-3-2 關聯型態-遞迴 實體型態本身會參與關聯自己的關聯型態,稱為「遞迴」(Recursive),如下圖所示:

29 6-3-3 關聯限制條件-說明 在實體關聯圖中,關聯型態連接的實體型態可以指定限制條件,稱為「關聯限制條件」(Relationship Constraints)。 關聯限制條件有三種,如下: 基數比限制條件 基數限制條件 參與限制條件

30 6-3-3 關聯限制條件-基數比限制條件1 基數比限制條件(Cardinality Ratio Constraints)
基數比限制條件是限制關聯實體型態的實例個數,可以分為三種,如下所示: 一對一關聯性(One-to-one Relationship, 1:1):指一個實體只關聯到另一個實體,例如:一位講師只能是學校的一位員工,如下圖所示:

31 6-3-3 關聯限制條件-基數比限制條件2 一對多關聯性(One-to-many Relationship, 1:N):指一個實體關聯到多個實體,例如:一門課程擁有小考、期中考和期末考等多次考試,如下圖所示:

32 6-3-3 關聯限制條件-基數比限制條件3 多對多關聯性(Many-to-many Relationship, M:N):指多個實體關聯到多個其他實體,例如:學生可以參加多次考試,反過來,考試可以讓多位學生應試,如下圖所示:

33 6-3-3 關聯限制條件-基數限制條件 基數限制條件(Cardinality Constraints)
基數限制條件是在關聯型態更進一步標示實體允許參與關聯性的範圍:(1,N)、(0,N)、(1,1)和(0,1)等,例如:課程Courses關聯型態是以(0,N)範圍參與Has關聯型態,考試Exams關聯型態是(1,1)參與,如下圖所示:

34 6-3-3 關聯限制條件-參與限制條件(說明) 參與限制條件是指實體集合的實例是全部或部分參與關聯型態,可以分為兩種,如下所示:
全部參與限制條件(Total Participation Constraints):所有實體集合的實例都參與關聯性,使用雙線來標示,也稱為「存在相依」(Existence Dependency)。 部分參與限制條件(Partial Participation Constraints):在實體集合只有部分實例參與關聯性,使用單線標示。

35 6-3-3 關聯限制條件-參與限制條件(圖例)

36 6-3-3 關聯限制條件-參與限制條件(雞爪符號)

37 6-3-4 屬性-說明 實體關聯圖的實體與關聯型態可以擁有0到多個屬性(Attributes),屬性是使用橢圓型圖形符號的節點,使用線與實體與關聯型態連接,如下圖所示:

38 6-3-4 屬性-種類1 屬性是一組值的集合,這些值是屬性可能的值,稱為值集合(Value Set)或定義域(Domain)。屬性可以分成很多種,如下所示: 單元值屬性型態(Atomic Attribute Types):這是實體與關聯型態的基本屬性型態,只擁有單元值,例如:Students實體型態的sid、name、GPA、birthday和tel屬性。

39 6-3-4 屬性-種類2 複合屬性型態(Composite Attribute Types):屬性是由多個單元屬性組成,使用樹狀的單元屬性圖形符號來表示,例如:員工Employees實體型態的address複合屬性是由street、city和ZIP單元屬性組成,如下圖所示:

40 6-3-4 屬性-種類3 多重值屬性型態(Multivalued Attribute Types):屬性值不是單元值,而是多重值,使用雙線的橢圓形節點符號來標示,例如:學生Students實體型態的address屬性,這是記錄學生多個通訊地址的多重值屬性,如下圖所示:

41 6-3-4 屬性-種類4 導出屬性型態(Derived Attribute Types):這是一種可以由其他屬性計算出的屬性,使用虛線的橢圓形節點符號來標示,例如:Exams實體型態的numOfStudents屬性是記錄參加考試的學生數,這個屬性值可以從Results關聯型態計算而得,如下圖所示:

42 6-3-4 屬性-種類5 鍵屬性型態(Key Attribute Types):如果屬性是實體型態中用來識別實例的屬性,其角色相當於關聯表的主鍵,鍵屬性型態是在名稱下加上底線來標示,例如:Students實體型態的主鍵是sid屬性,如下圖所示:

43 6-3-5 弱實體型態-說明 弱實體型態(Weak Entity Types)是一種需要依賴其他實體型態才能存在的實體形態,這是沒有主鍵的實體型態,例如:學生家長是一個弱實體,因為只有學生實體存在,家長實體才會存在。 擁有主鍵的實體型態稱為「一般實體型態」(Regular Entity Type)或強實體型態(Strong Entity Type)。 在實體關聯圖的弱實體型態是使用雙框的長方形圖形符號來標示。

44 6-3-5 弱實體型態-圖例 弱實體型態一定關聯到一個強實體型態,以便識別其身份,這個強實體型態稱為「識別實體型態」(Identifying Entity Type),使用的關聯型態稱為「識別關聯型態」(Identifying Relationship Type),使用雙框的菱形圖形符號來表示。

45 6-4 實體關聯圖的常見錯誤 6-4-1 扇形陷阱 6-4-2 斷層陷阱

46 6-4 實體關聯圖的常見錯誤 因錯誤解釋實體間的關聯性造成實體關聯圖的錯誤,稱為「連接陷阱」(Connection Traps)。
實體關聯圖最常見的兩種連接陷阱錯誤,如下所示: 扇形陷阱(Fan Traps)。 斷層陷阱(Chasm Traps)。

47 6-4-1 扇形陷阱-說明1 扇形陷阱(Fan Traps)是指實體間的關聯性令人產生混淆,扇形陷阱通常是產生在實體型態擁有多個一對多的關聯型態,如同扇形散開(名稱的由來),但是關聯到的各實體型態間的關聯性會產生令人混淆的問題。 例如:學生、講師與課程實體型態間擁有3個一對多關聯性,如下所示: 講師可以教多位學生。 講師可以教多門課程。 學生可以選修多門課。

48 6-4-1 扇形陷阱-說明2

49 6-4-1 扇形陷阱-說明3 學生選修多門課程的一對多關聯性並沒有辦法建立在講師與學生和講師與課程的2個一對多關聯性上,如此就會產生混淆,如下圖所示:

50 6-4-1 扇形陷阱-解決方案1 扇形陷阱發生的原因是誤解關聯的意義,關聯正確的解釋應該是以課程建立關聯性的橋樑,如下圖所示:

51 6-4-1 扇形陷阱-解決方案2 學生選修多門課和講師教多門課程的2個一對多關聯性,講師教多位學生的一對多關聯性可以透過講師教多門課,一門課有多位學生,所以講師可以教多位學生,如下圖所示:

52 6-4-2 斷層陷阱-說明1 斷層陷阱(Chasm Traps)是指實體間應該存在的關聯根本不存在,2個實體間並沒有辦法找到一條路徑來連接。例如:一位學生可以修多門課程,每一位學生會購買多本教課書,如下圖所示:

53 6-4-2 斷層陷阱-說明2 但是學生可能不買教課書,而且學生會修多門課,所以我們會發現有些教課書不知道到底是那一門課程的教課書,如下圖所示:

54 6-4-2 斷層陷阱-解決方案1 斷層陷阱(Chasm Traps)的解決方式是新增關聯型態,以此例是在Courses和Textbooks實體型態新增一對多的關聯型態來解決此問題,如下圖所示:

55 6-4-2 斷層陷阱-解決方案2 Courses和Textbooks實體型態間擁有一個新關聯型態Assign,表示課程指定的教課書有那幾本,如下圖所示:

56 6-5 將實體關聯圖轉換成關聯表綱要 6-5-1 將強實體型態轉換成關聯表 6-5-2 將關聯型態轉換成外來鍵 6-5-3 轉換多重關聯型態
6-5-4 多重值屬性轉換成關聯表 6-5-5 弱實體型態轉換成關聯表

57 6-5-1 將強實體型態轉換成關聯表-規則 在實體關聯圖的強實體型態(即一般實體型態)是對應關聯表,也就是將強實體型態轉換成關聯表綱要,其規則如下所示: 建立新關聯表綱要,其名稱是實體型態名稱。 在關聯表綱要包含單元值屬性型態和複合屬性型態。 關聯表綱要不包含多重值屬性型態、外來鍵和導出屬性型態。 將鍵屬性(Key Attribute)指定為關聯表綱要的主鍵。

58 6-5-1 將強實體型態轉換成關聯表-圖例

59 6-5-2 將關聯型態轉換成外來鍵-說明 實體關聯圖的關聯型態可以轉換成關聯表綱要的外來鍵,在關聯表綱要新增參考其他實體型態的外來鍵,可以分為三種: 一對一關聯型態 一對多關聯型態 多對多關聯型態

60 6-5-2 將關聯型態轉換成外來鍵-一對一關聯型態(規則)
一對一關聯型態轉換成關聯表綱要的規則,如下所示: 在參與關聯性的關聯表綱要新增參考到另一個關聯表綱要的外來鍵(FK)。 若關聯型態擁有單元值屬性,也一併加入新增外來鍵的關聯表綱要。

61 6-5-2 將關聯型態轉換成外來鍵-一對一關聯型態(圖例)

62 6-5-2 將關聯型態轉換成外來鍵-一對多關聯型態(規則)
一對多關聯型態轉換成關聯表綱要的規則,如下所示: 在N端的關聯表綱要新增參考到1端關聯表綱要的外來鍵(FK)。 若關聯型態擁有單元值屬性,也一併加入新增外來鍵的關聯表綱要。

63 6-5-2 將關聯型態轉換成外來鍵-一對多關聯型態(圖例)

64 6-5-2 將關聯型態轉換成外來鍵-多對多關聯型態(規則)
多對多關聯型態轉換成關聯表綱要的規則,如下所示: 將關聯型態建立成新的關聯表綱要,名稱為關聯型態名稱,在新關聯表綱要擁有兩個外來鍵(FK),分別參考關聯到的實體型態。 若關聯型態擁有單元值屬性,一併加入新的關聯表綱要。 關聯型態建立的關聯表綱要主鍵是兩個外來鍵的組合鍵,有時,可能需要新增幾個關聯型態的屬性作為主鍵。

65 6-5-2 將關聯型態轉換成外來鍵-多對多關聯型態(圖例)

66 6-5-3 轉換多重關聯型態-規則 關聯型態可能擁有3個或更多實體型態間的關聯性,稱為「多重關聯型態」(Ternary Relationship Type),其轉換規則如下: 將關聯型態建立成新的關聯表綱要,名稱是關聯型態的名稱,關聯表綱要擁有多個外來鍵(FK)分別參考關聯到的實體型態。 若關聯型態擁有單元值屬性,也一併加入新建立的關聯表綱要。 關聯型態建立的關聯表綱要主鍵通常是所有外來鍵的組合鍵,不過,可能需要新增幾個關聯型態的屬性,或部分外來鍵來作為主鍵。

67 6-5-3 轉換多重關聯型態-實體關聯圖

68 6-5-3 轉換多重關聯型態-關聯表綱要

69 6-5-4 多重值屬性轉換成關聯表-規則 多重值屬性轉換成關聯表綱要的規則,如下所示:
建立新的關聯表綱要,名稱可以是屬性名稱或實體與屬性結合的名稱。 在新關聯表綱要新增參考到實體型態主鍵的外來鍵。 新關聯表綱要的主鍵是外來鍵加上多重值屬性,如果多重值屬性是複合屬性,可能需要加上其中一個屬性或是全部屬性。

70 6-5-4 多重值屬性轉換成關聯表-圖例

71 6-5-5 弱實體型態轉換成關聯表-規則 弱實體型態轉換成關聯表綱要,因為弱實體型態一定擁有一個對應的識別實體型態(Identifying Entity Type),所以在轉換上稍有不同,其規則如下所示: 建立新的關聯表綱要,其名稱為弱實體型態的名稱。 新關聯表綱要包含單元值屬性型態。 在新關聯表綱要新增識別實體型態的主鍵作為參考的外來鍵。 將弱實體型態的「部分鍵」(Partial Key)加上外來鍵指定成新關聯表綱要的主鍵。

72 6-5-5 弱實體型態轉換成關聯表-圖例

73 6-6 資料庫的邏輯資料模型-關聯式資料庫綱要
學校School關聯式資料庫綱要,如下所示: Students ( sid, name, birthday, GPA, tel ) Parents ( sid, name, relationship ) Std-Address ( sid, address ) Results ( sid, e_no, grade, date ) Exams ( e_no, title, type, c_no ) Courses ( c_no, title, credits ) Instructors ( eid, department, rank, SSN ) Employees ( SSN, name, cidyt, street, tel ) Classes ( eid, sid, c_no, eid, room, time )

74 6-6 資料庫的邏輯資料模型-外來鍵參考圖


Download ppt "第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤"

Similar presentations


Ads by Google