770 likes | 909 Views
Chap 3. 資料庫模型與處理架構. 3-1 資料模型的基礎- 說明. 「資料模型」( Data Model )是使用一組整合觀念來描述資料、資料間的關係和資料的限制條件(是否是正確資料),也就是用來描述資料庫中資料的特性。. 3-1 資料模型的基礎- 圖例. 3-1 資料模型的基礎. 概念資料模型 :這是與資料庫管理系統無關,即沒有使用特定資料庫種類來建立資料模型,以概念方式描述大多數使用者認知的資料。 邏輯資料模型 :使用特定資料庫種類建立的資料模型,例如:關聯式資料模型,這是用來描述 ANSI/SPARC 三層資料庫架構中,位在概念層以上的概念和外部層資料。
E N D
Chap 3 資料庫模型與處理架構
3-1 資料模型的基礎-說明 • 「資料模型」(Data Model)是使用一組整合觀念來描述資料、資料間的關係和資料的限制條件(是否是正確資料),也就是用來描述資料庫中資料的特性。
3-1 資料模型的基礎 • 概念資料模型:這是與資料庫管理系統無關,即沒有使用特定資料庫種類來建立資料模型,以概念方式描述大多數使用者認知的資料。 • 邏輯資料模型:使用特定資料庫種類建立的資料模型,例如:關聯式資料模型,這是用來描述ANSI/SPARC三層資料庫架構中,位在概念層以上的概念和外部層資料。 • 實體資料模型:這個資料模型是用來描述ANSI/SPARC三層資料庫架構的內部層資料。
3-1 資料模型的基礎 • 完整的資料庫程式設計,以關聯式資料庫設計為例: • 先收集使用者認知的資料,以概念資料庫設計建立概念資料模型 • 接著將概念資料模型執行關聯表正規化,轉換成邏輯資料模型 • 最後建立實體資料模型的實體資料庫設計
3-1-2 概念資料模型 • 建立概念資料模型的原因,如下所示: • 能夠進一步了解資料範圍。 • 增加與最終使用者的溝通機會。 • 開發與資料庫管理系統無關的資料模型。 • 儘早發現資料庫設計的錯誤。
3-1-2 概念資料模型 • 概念資料模型最常使用「實體關聯模型」(Entity-Relationship Model,簡稱E-R Model)以圖形方式建立,稱為「實體關聯圖」(Entity-Relationship Diagram),這是1976年由Peter Chen提出,他相信在真實世界中,實體和其關聯是最自然的模型化觀念,換句話說,實體關聯模型的基礎是建構在實體和關聯性之上。
3-1-3 邏輯資料模型 • 第一個邏輯資料模型是關聯式模型,因為是關聯式資料庫的資料模型,所以本書稱為關聯式資料庫模型。 • 關聯式資料庫模型是由E. F. Codd在1970年所提出,邏輯資料模型主要是由三種元素組成,如下所示: • 資料結構(Data Structures):資料的組成方式,以關聯式資料庫模型來說,就是欄和列組成的表格。 • 資料操作或運算(Data Manipulation或Operations):資料的相關操作。例如:新增、刪除、更新和查詢。 • 完整性限制條件(Integrity Constraints):維護資料完整性的限制條件,其目的是確保資料是合法的資料。
3-1-3 邏輯資料模型-說明 • 資料庫系統演進各年代的資料庫系統中,其使用的資料庫模型就是邏輯資料模型,主要有四種邏輯資料模型,如下所示: • 網路式資料庫模型(Network Databse Model)。 • 階層式資料庫模型(Hierarchical Database Model)。 • 關聯式資料庫模型(Relational Database Model)。 • 物件導向式資料庫模型(Object-Oriented Database Model)。
3-1-3 邏輯資料模型-圖例 將學校的開課資料的實體關聯圖轉換成邏輯資料模型
3-1-4 實體資料模型 • 實體資料模型(Physical Data Model)是針對指定資料庫管理系統建立實際架構的模型,資料模型可以顯示資料是如何實作和儲存在資料庫。 • 關聯式資料庫管理系統的實體資料模型是建立關聯表的表格、關聯性和定義索引。
3-2 資料庫模型 • 3-2-1 網路式資料庫模型 • 3-2-2 階層式資料庫模型 • 3-2-3 物件導向式資料庫模型 • 3-2-4 物件關聯式資料庫模型
3-2-1 網路式資料庫模型 • 網路式資料庫和階層式資料庫系統約在同一個年代開發,早於關聯式資料庫系統,不過網路式資料庫模型(Network Database Model)是在關聯式資料庫模型出現後才出現的資料模型(這是參考關聯式資料庫模型所導出),資料模型採用網路圖形來連結資料。 • 網路式資料庫模型支援多對多關聯性,這是依據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),也就是一組記錄型態的記錄集合和一組連接型態的連接集合,如下圖所示:
3-2-2 階層式資料庫模型 • 階層式資料庫模型(Hierarchical Database Model)類似網路式資料庫模型,只是使用樹狀結構來組織資料,記錄資料間是以父子關係來建立鏈結,子記錄只能擁有一個父記錄。 • 在1960年代後期階層式資料庫模型的資料庫管理系統非常的普遍,最著名的階層式資料庫系統是1968年IBM公司開發的「IMS」(Information Management System),這也是最早商用的資料庫管理系統。
3-2-2 階層式資料庫模型 • 階層式資料庫模型的資料結構一定擁有一個「樹根」(Root),使用「父子關聯性」來鏈結記錄集合,將資料建立成階層的樹狀結構。 • 記錄型態(Record Type):記錄型態是由一組欄位屬性組成。每一個記錄型態的成員稱為記錄,資料是一組記錄的集合。 • 父子關聯型態(Parent-child Relationship Type):兩個記錄型態間的連接型態,屬於一對多關聯性,這是從稱為「父記錄型態」關聯到多個「子記錄型態」。
3-2-2 階層式資料庫模型 • 階層式資料庫模型是由多個記錄型態,然後使用父子關聯型態將它連接起來,如下圖所示:
3-2-2 階層式資料庫模型 • 多對多關聯性在階層式資料庫模型可以重複記錄型態,如下圖所示:
3-2-2 階層式資料庫模型 • 「虛擬記錄型態」(Virtual Record Type)的記錄只是一個指標,指向其他記錄型態的記錄,如下圖所示:
3-2-3 物件導向式資料庫模型 • 「物件導向式資料庫模型」(Object-Oriented Database Model)是在物件導向程式語言新增資料庫功能,換句話說,就是使用物件導向方式來模擬關聯式資料庫的功能。 • 物件導向式資料庫模型的主要目的是統一應用程式和資料庫開發的資料模型和語言環境,物件導向式資料庫模型讓程式設計和資料庫統一使用物件導向方式進行設計。
3-2-3 物件導向式資料庫模型 • 物件是資料與相關處理資料的程序和函數結合在一起的組合體,資料就是變數,程序和函數,其中程序與函數稱為方法,如下圖所示:
3-2-3 物件導向式資料庫模型 • 狀態(State):物件所有「屬性」的狀態值,屬性是用來儲存物件的狀態,可以簡單的只是一個布林值變數,也可能是另一個物件,例如:車子的車型、排氣量等屬性。 • 行為(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 物件關聯式資料庫模型 • 「物件關聯式資料庫模型」(Object-relational Database Model)是一種結合物件導向式和關聯式資料庫模型,擴充關聯式資料庫模型的功能,所以其基本的觀念仍然是關聯式資料庫模型,只是新增結構化屬性,能夠自行定義資料型態。 • 國際標準組織(International Standards Organization, ISO)在新版的標準SQL語言新增物件關聯式模型的觀念,稱為SQL 99或SQL 3,在SQL:99新增物件觀念,可以擴充資料型態儲存複雜的資料,但是仍相容於關聯式資料庫。
3-2-4 物件關聯式資料庫模型 • 物件關聯式資料庫模型支援「巢狀關聯表」(Nested Relations),也就是說,資料型態不只可以使用關聯式資料庫的基本型態,還可以使用自訂型態的物件,相當於是另一個關聯表。例如:在Authors關聯表新增名為address的新型態,如下圖所示:
3-2-4 物件關聯式資料庫模型 • 物件關聯式資料庫的關聯表和巢狀關聯表,如下圖所示:
3-3 資料庫系統的種類 • 資料庫系統以使用者人數來區分: • 單人使用 • 多人使用 • 資料庫系統以使用範圍(Scope)區分: • 桌上型(Desktop) • 工作群組(Workgroup) • 企業級(Enterprise) • 資料庫系統以位置來區分,資料庫系統的資料處理可能位在同一台主機或網路上的其他主機: • 集中式資料處理(Centralized Data Processing) • 分散式資料處理(Distributed Data Processing)
3-3 資料庫系統的種類 • 如果資料庫系統使用前述的資料庫模型來區分,資料庫系統可以依使用的資料庫模型進行分類,如下所示: • 網路式資料庫系統。 • 階層式資料庫系統。 • 關聯式資料庫系統。 • 物件導向式資料庫系統。 • 物件關聯式資料庫系統。
3-4 架構的基礎 • 「架構」(Architecture)這個名詞可以指單獨一台電腦設計,不過對於企業組織來說,通常是指整個公司組織電腦系統的配置,包含實際使用的電腦硬體種類、網路、配置的位置和使用的電腦運算方式。 • 資料庫系統架構可以分成兩種處理架構,如下所示: • 集中式處理架構(Centralized Processing Architectures)。 • 分散式處理架構(Distributed Processing Architectures)。
3-5 集中式處理架構 • 在早期大型主機(Mainframe)時代,電腦系統主要是使用IBM公司開發的「系統網路架構」(Systems Network Architecture, SNA),這種架構屬於集中式處理架構,擁有一台大型主機,使用多個終端機與主機溝通。 • 以資料庫系統來說,資料庫管理系統和作業系統都在同一台電腦執行,使用者透過終端機將資訊送到主機,例如:資料庫查詢指令,然後從主機取得回應結果,在終端機顯示的結果是由主機產生的資料,終端機只負責顯示取得的資料。
3-6 分散式處理架構-前後台 • 資料庫系統分成使用者的前台(Frontends)和資料庫的後台(Backends),分別分散執行所需的工作,如下所示: • 前台(Frontend):使用者執行的應用程式,用來執行資料庫查詢等資料處理,然後顯示執行的結果。 • 後台(Backend):執行資料處理的資料庫管理系統。
3-6-1 檔案分享架構 • 「檔案分享架構」並不是一種主從架構,它是主從架構的前身,早期個人電腦網路都是採用檔案分享架構,主機扮演的角色單純只是「檔案伺服器」(File Server)。 • 客戶端向檔案伺服器請求資料檔案,然後將檔案下載到客戶端,然後在客戶端電腦啟動資料庫管理系統執行資料處理,真正執行資料處理是在客戶端的個人電腦或工作站,檔案伺服器只是儲存和管理檔案,稱為「檔案伺服器模型」。
3-6-2 主從架構的基礎 • 主從架構的電腦本身並沒有分別,只是扮演不同的角色,分為伺服端(Server)和客戶端(Client),如下所示: • 伺服端(Server):在主從架構中扮演提供服務(Service)的提供者(Provider)角色。 • 客戶端(Client):在主從架構中的角色是提出服務請求(Request)的請求者(Requester)。
3-6-3 二層式主從架構 • 標準主從架構是二層式主從架構(Two-Tier Client/Server Architecture)。 • 二層式主從架構可以分成兩部分,如下: • 展示層(Presentation Tier):與使用者互動的使用介面,這是實際使用者看到的應用程式,同時負責商業邏輯(Business Logic)和資料處理邏輯(Data Processing Logic)。 • 資料層(Data Tier):負責資料的儲存,以資料庫系統來說,就是管理資料庫的資料庫管理系統。
3-6-3 二層式主從架構 • 缺點 • 更改商業和資料處理邏輯就需要重新修改、編譯和安裝展示層應用程式。 • 二層式主從架構只傳遞回應資料,但是真正的資料處理是在展示層應用程式,所需的資料仍然需要從資料層傳送到展示層,增加區域網路負載。 • 在從端的每一個展示層應用程式都需要獨立的資料庫連結,並且保持連線狀態,而區域網路最多只能支援大約100人同時建立資料庫連結。 • 客戶端應用程式的程式碼是使用特定資料庫管理系統的函式庫,如果資料庫管理系統更改時,展示層應用程式的程式碼也須修改。
3-6-4 三層式主從架構 • 擴充二層式主從架構,在之間新增一層「商業邏輯層」(Business Logic Tier),就成為「三層式主從架構」(Three-Tier Client/Server Architecture),將二層式主從架構展示層的資料處理和商業邏輯功能獨立成「應用程式伺服器」(Application Server)。 • 應用程式伺服器(Application Server)如同餐廳中超高效率的服務生,從展示層的前台取得點選的套餐,將它送到後台的資料庫伺服器取得所需的各種餐點,在處理後,送到前台的是一套完整組合的套餐。