750 likes | 1.18k Views
第 3 章 資料庫模型與處理架構. 3-1 資料模型的基礎 3-2 資料庫模型 3-3 資料庫系統的種類 3-4 架構的基礎 3-5 集中式處理架構 3-6 分散式處理架構 3-7 中介軟體 3-8 分散式資料庫系統. 3-1 資料模型的基礎- 圖例. 3-1 資料模型的基礎- 圖例說明 2. 概念資料庫設計( Conceptual Database Design ): 沒有使用特定資料庫種類建立的概念綱要。 邏輯資料庫設計( Logical Database Design ): 將概念資料模型轉換成邏輯資料模型的過程
E N D
第3章 資料庫模型與處理架構 • 3-1 資料模型的基礎 • 3-2 資料庫模型 • 3-3 資料庫系統的種類 • 3-4 架構的基礎 • 3-5 集中式處理架構 • 3-6 分散式處理架構 • 3-7 中介軟體 • 3-8 分散式資料庫系統
3-1 資料模型的基礎-圖例說明2 • 概念資料庫設計(Conceptual Database Design):沒有使用特定資料庫種類建立的概念綱要。 • 邏輯資料庫設計(Logical Database Design): • 將概念資料模型轉換成邏輯資料模型的過程 • 實體資料庫設計(Physical Database Design):內部綱要的資料庫設計稱為。 • 將邏輯資料模型轉換成以關聯式資料庫為例的SQL指令敘述來定義資料庫 • 敘述來定義資料庫
3-1-1 概念資料模型-說明 • 概念資料模型最常使用「實體關聯模型」(Entity-Relationship Model,簡稱E-R Model)以圖形方式建立,稱為「實體關聯圖」(Entity-Relationship Diagram),這是1976年由Peter Chen提出,他相信在真實世界中,實體和其關聯是最自然的模型化觀念,換句話說,實體關聯模型的基礎是建構在實體和關聯性之上。
3-1-2 邏輯資料模型-元素 P. 3-3 • 第一個邏輯資料模型(Logical Data Model)是關聯式模型(Relational Model),因為是關聯式資料庫的資料模型,所以本書稱為關聯式資料庫模型(Relational Database Model)。 • 關聯式資料庫模型是由E. F. Codd在1970年所提出,邏輯資料模型主要是由三種元素組成: • 資料結構(Data Structures):資料的組成方式,以關聯式資料庫模型來說,就是欄和列組成的表格。 • 資料操作或運算(Data Manipulation或Operations):資料的相關操作。例如:新增、刪除、更新和查詢。 • 完整性限制條件(Integrity Constraints):維護資料完整性的限制條件,確保資料是合法的資料。
3-1-2 邏輯資料模型-說明 • 資料庫系統演進各年代的資料庫系統中,其使用的資料庫模型就是邏輯資料模型,主要有四種邏輯資料模型,如下所示: • 網路式資料庫模型(Network Database Model)。 • 階層式資料庫模型(Hierarchical Database Model)。 • 關聯式資料庫模型(Relational Database Model)。 • 物件導向式資料庫模型(Object-Oriented Database Model)。
3-1-3 實體資料模型-說明 P. 3-4 • 實體資料模型(Physical Data Model)是針對指定資料庫管理系統建立實際架構的模型,資料模型可以顯示資料是如何實作和儲存在資料庫。 • 關聯表、屬性、資料型態、關聯性、索引
3-2 資料庫模型 P. 3-6 • 3-2-1 網路式資料庫模型 • 3-2-2 階層式資料庫模型 • 3-2-3 物件導向式資料庫模型 • 3-2-4 物件關聯式資料庫模型
3-2-1 網路式資料庫模型-說明 P. 3-6 • 網路式資料庫和階層式資料庫系統約在同一個年代開發,早於關聯式資料庫系統,不過網路式資料庫模型(Network Database Model)是在關聯式資料庫模型出現後才出現的資料模型(這是參考關聯式資料庫模型所導出),資料模型採用網路圖形來連結資料。 • 網路式資料庫模型支援多對多關聯性(Relationship),這是依據1971年由CODASYL DBTG(Conference on Data Systems Languages Database Task Group)組織所提出的報告,或稱為DBTG模型,Database Task Group從1960年代後期就開始發展的網路式資料庫系統。
3-2-1 網路式資料庫模型-資料結構(說明) • 網路式資料庫模型是將資料組織成網路狀圖形,資料間連接可以擁有迴圈。網路式資料庫模型的兩種基本型態,如下所示: • 記錄型態(Record Type):記錄型態是由一組屬性所組成,每一個記錄型態的成員稱為記錄,資料是一組記錄的集合。 • 連接型態(Link Type):它是連接兩個記錄型態的型態,屬於一對多關聯性(Relationship),這是從稱為「擁有者型態」(Owner Type)關聯到多個「成員型態」(Member Type)。
3-2-1 網路式資料庫模型-資料結構(圖例) • 網路式資料庫模型是建立在兩種「集合結構」(Set Structures),也就是一組記錄型態的記錄集合(A Set of Records)和一組連接型態的連接集合(A Set of Links),如下圖所示:
3-2-2 階層式資料庫模型-說明 P. 3-8 • 階層式資料庫模型(Hierarchical Database Model)類似網路式資料庫模型,只是使用樹狀結構來組織資料,記錄資料間是以父子關係來建立鏈結,子記錄只能擁有一個父記錄。 • 在1960年代後期階層式資料庫模型的資料庫管理系統非常的普遍,直到1970年代,最著名的階層式資料庫系統是1968年IBM公司開發的「IMS」(Information Management System),這也是最早商用的資料庫管理系統。
3-2-2 階層式資料庫模型-資料結構(說明) • 階層式資料庫模型的資料結構一定擁有一個「樹根」(Root),然後使用「父子關聯性」(Parent-child Relationships)來鏈結記錄集合,將資料建立成階層的樹狀結構。階層式模型也擁有兩種基本型態,如下所示: • 記錄型態(Record Type):記錄型態是由一組欄位屬性組成。每一個記錄型態的成員稱為記錄,資料是一組記錄的集合。 • 父子關聯型態(Parent-child Relationship Type):兩個記錄型態間的連接型態,屬於一對多關聯性(Relationship),這是從稱為「父記錄型態」(Parent Record Type)關聯到多個「子記錄型態」(Child Record Type)。
3-2-2 階層式資料庫模型-資料結構(圖例) • 階層式資料庫模型是由多個記錄型態,然後使用父子關聯型態將它連接起來,如下圖所示:
3-2-3 物件導向式資料庫模型-說明 P. 3-11 • 「物件導向式資料庫模型」(Object-Oriented Database Model)是在物件導向程式語言新增資料庫功能,換句話說,就是使用物件導向方式來模擬關聯式資料庫的功能,例如:在C++和Java物件導向程式語言新增全功能的資料庫程式設計能力。 • 物件導向式資料庫模型的主要目的是統一應用程式和資料庫開發的資料模型和語言環境,物件導向式資料庫模型讓程式設計和資料庫統一使用物件導向方式進行設計。
3-2-3 物件導向式資料庫模型-物件 • 物件是物件導向技術的關鍵,它是電腦用來模擬現實生活的東西或事件,也是組成整個程式的元件。物件是資料與相關處理資料的程序和函數結合在一起的組合體,資料就是變數,程序和函數,其中程序與函數稱為方法,如下圖所示:
3-2-3 物件導向式資料庫模型-物件特點 • 狀態(State):物件所有屬性(Attributes)目前的狀態值,屬性是儲存物件的狀態,可以簡單的只是一個布林值變數,也可能是另一個物件。 • 例如:車子的車型、排氣量、色彩和自排或手排等屬性,以程式來說,也就是資料部分的變數。 • 行為(Behavior):行為是物件可見部分提供的服務,也就是塑模所抽象化的操作,可以作什麼事,使用方法來實作行為。 • 例如:車子可以發動、停車、加速和換擋等。 • 識別字(Identity):識別字是用來識別不同的物件,每一個物件都擁有獨一無二的識別字。
3-2-3 物件導向式資料庫模型-類別 • 類別是一種分類,將擁有相同特性的物件集合歸類在同一類別,在前面我們建立摸擬各種車輛的Car、Car1、Car2、Car3…等物件,各物件擁有相同屬性和行為,只是狀態不同。 • 簡單的說,這些物件屬於同一類,反過來看,我們可以建立一個範本來建立這些物件,如同工廠依照藍圖製造車輛,這個範本就是類別,屬於同一類別的物件即該類別的「實例」(Instance)。
3-2-3 物件導向式資料庫模型-繼承 • 繼承(Inheritance)是物件導向程式設計的重要觀念,繼承是宣告的類別繼承現存類別的部分或全部的成員資料和方法、新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法或資料。
3-2-3 物件導向式資料庫模型-類別架構 • 類別的繼承關係可以建立「類別架構」(Class Hierarchy),如下圖所示:
3-2-3 物件導向式資料庫模型-資料庫的類別 • 物件導向式資料庫(Object-oriented Database)使用物件導向式資料模型,以物件導向程式語言定義資料庫的結構,以Java語言來說就是類別(Class),一個類別相當於關聯式資料庫的一個關聯表,例如:使用Java語言定義Book類別,如下所示: class Book { public String b_no; public String title; public float price; public Author getAuthor() { …… } public Publisher getPublisher() { …… } }
3-2-3 物件導向式資料庫模型-資料庫圖例 • 物件導向式資料庫是物件導向程式設計和資料庫技術的聯姻,如下圖所示:
3-2-4 物件關聯式資料庫模型-說明 P. 3-17 • 「物件關聯式資料庫模型」(Object-relational Database Model)是一種結合物件導向式和關聯式資料庫模型,擴充關聯式資料庫模型的功能,所以其基本的觀念仍然是關聯式資料庫模型,只是新增結構化屬性(Structured Attributes),能夠自行定義資料型態(User-defined Type)。 • 國際標準組織(International Standards Organization, ISO)在新版的標準SQL語言新增物件關聯式模型的觀念,稱為SQL 99或SQL 3,在SQL:99新增物件觀念,可以擴充資料型態儲存複雜的資料,但是仍相容於關聯式資料庫,也就是與舊版SQL語言相容。
3-2-4 物件關聯式資料庫模型-巢狀關聯表 • 物件關聯式資料庫模型支援「巢狀關聯表」(Nested Relations),也就是說,資料型態不只可以使用關聯式資料庫的基本型態,還可以使用自訂型態的物件,相當於是另一個關聯表。例如:在Authors關聯表新增名為address的新型態,如下圖所示:
3-2-4 物件關聯式資料庫模型-物件關聯式資料庫 • 物件關聯式資料庫的關聯表和巢狀關聯表,如下圖所示:
3-3 資料庫系統的種類 P.3-18 • 3-3-1 使用者數來區分 • 3-3-2 範圍來區分 • 3-3-3 位置來區分 • 3-3-4 資料庫模型來區分
3-3-1 使用者數來區分 P. 3-18 • 資料庫系統以使用者人數來區分可以分為單人使用和多人使用的資料庫系統,如下所示: • 單人使用(Single-user)。 • 多人使用(Multi-user)。
3-3-2 範圍來區分 P. 3-19 • 資料庫系統以使用範圍(Scope)區分,如下: • 桌上型(Desktop)。 • 工作群組(Workgroup)。 • 企業級(Enterprise)。
3-3-3 位置來區分 P. 3-19 • 資料庫系統以位置來區分,資料庫系統的資料處理可能位在同一台主機或網路上的其他主機,如下所示: • 集中式資料處理(Centralized Data Processing)。 • 分散式資料處理(Distributed Data Processing)。
3-3-4 資料庫模型來區分 P. 3-20 • 如果資料庫系統使用前述的資料庫模型來區分,資料庫系統可以依使用的資料庫模型進行分類,如下所示: • 網路式資料庫系統。 • 階層式資料庫系統。 • 關聯式資料庫系統。 • 物件導向式資料庫系統。 • 物件關聯式資料庫系統。
3-4 架構的基礎 P. 3-20 • 「架構」(Architecture)這個名詞可以指單獨一台電腦設計,不過對於企業組織來說,通常是指整個公司組織電腦系統的配置,包含實際使用的電腦硬體種類、網路、配置的位置和使用的電腦運算方式。 • 資料庫系統架構可以分成兩種處理架構,如下所示: • 集中式處理架構(Centralized Processing Architectures)。 • 分散式處理架構(Distributed Processing Architectures)。
3-5 集中式處理架構-說明 P. 3-21 • 在早期大型主機(Mainframe)時代,電腦系統主要是使用IBM公司開發的「系統網路架構」(Systems Network Architecture, SNA),這種架構屬於集中式處理架構,擁有一台大型主機,使用多個終端機(Terminals)與主機溝通。 • 以資料庫系統來說,資料庫管理系統和作業系統都在同一台電腦執行,使用者透過終端機將資訊送到主機,例如:資料庫查詢指令,然後從主機取得回應結果,在終端機顯示的結果是由主機產生的資料,終端機只負責顯示取得的資料。
3-6 分散式處理架構-前後台 P. 3-22 • 資料庫系統分成使用者的前台(Frontends)和資料庫的後台(Backends),分別分散執行所需的工作,如下所示: • 前台(Frontend):使用者執行的應用程式,用來執行資料庫查詢等資料處理,然後顯示執行的結果。 • 後台(Backend):執行資料處理的資料庫管理系統。
3-6-1 檔案分享架構-說明 P. 3-23 • 檔案分享架構(File Sharing Architecture)並不是一種主從架構,它是主從架構的前身,早期個人電腦網路都是採用檔案分享架構,主機扮演的角色單純只是檔案伺服器(File Server)。 • 客戶端向檔案伺服器請求資料檔案,然後將檔案下載到客戶端,然後在客戶端電腦啟動資料庫管理系統執行資料處理,真正執行資料處理是在客戶端的個人電腦或工作站,檔案伺服器只是儲存和管理檔案,稱為檔案伺服器模型(File Server Model)。
3-6-2 主從架構的基礎-說明 P. 3-24 • 主從架構的電腦本身並沒有分別,只是扮演不同的角色,分為伺服端(Server)和客戶端(Client),如下所示: • 伺服端(Server):在主從架構中扮演提供服務(Service)的提供者(Provider)角色。 • 客戶端(Client):在主從架構中的角色是提出服務請求(Request)的請求者(Requester)。
3-6-3 二層式主從架構-說明 P. 3-25 • 標準主從架構是二層式主從架構(Two-Tier Client/Server Architecture)。 • 二層式主從架構可以分成兩部分,如下: • 展示層(Presentation Tier):與使用者互動的使用介面,這是實際使用者看到的應用程式,同時負責商業邏輯(Business Logic)和資料處理邏輯(Data Processing Logic)。 • 資料層(Data Tier):負責資料的儲存,以資料庫系統來說,就是管理資料庫的資料庫管理系統。
3-6-3 二層式主從架構-缺點 • 更改商業和資料處理邏輯就需要重新修改、編譯和安裝展示層應用程式。 • 二層式主從架構只傳遞回應資料,但是真正的資料處理是在展示層應用程式,所需的資料仍然需要從資料層傳送到展示層,增加區域網路負載。 • 在從端的每一個展示層應用程式都需要獨立的資料庫連結,並且保持連線狀態,而區域網路最多只能支援大約100人同時建立資料庫連結。 • 複雜客戶端(Flat Client)應用程式的程式碼是使用特定資料庫管理系統的函式庫,如果資料層改用其他廠商的資料庫管理系統,同時也需要修改展示層應用程式的程式碼。
3-6-4 三層式主從架構-說明 P. 3-27 • 擴充二層式主從架構,在之間新增一層「商業邏輯層」(Business Logic Tier),就成為「三層式主從架構」(Three-Tier Client/Server Architecture),將二層式主從架構展示層的資料處理和商業邏輯功能獨立成「應用程式伺服器」(Application Server)。 • 應用程式伺服器(Application Server)如同餐廳中超高效率的服務生,從展示層的前台取得點選的套餐,將它送到後台的資料庫伺服器取得所需的各種餐點,在處理後,送到前台的是一套完整組合的套餐。
3-6-4 三層式主從架構-優點 • 清楚切割使用介面的展示層和商業邏輯層的資料處理與商業邏輯,如此可以重複使用資料處理和商業邏輯的現成軟體元件,加速應用程式的開發。 • 集中管理和維護商業邏輯,如有更改,只需更改商業邏輯層的應用程式伺服器,而不用更改展示層的應用程式。 • 更改資料層的資料庫管理系統,同樣不會影響展示層的應用程式。 • 商業邏輯層和資料層的實際架構可以位在同一台電腦伺服器,或是不同電腦使用高速網路連接,如此可以解決網路資料傳遞的頻寬問題。