680 likes | 905 Views
Ch01 資料庫系統理論. 資料庫管理. 大綱. 資料庫 資料庫模型 資料庫管理系統. 資料庫的定義 - 定義. 資料庫正式的定義有很多種,比較通用的定義,如下所示: 定義:資料庫( Database )是一個儲存資料的電子文件檔案櫃( An Electronic Filing Cabinet )。 以現代的企業或組織來說,資料庫是讓企業或組織能夠正常運作的重要元件,想想看!如果銀行沒有帳戶和交易記錄的資料庫,客戶存款和提款需要如何運作。每家航空公司都需要依賴訂票系統的資料庫,才能讓各旅行社訂機票,旅客才知道班機是否已經客滿。. 資料庫的定義 - 長存資料.
E N D
Ch01 資料庫系統理論 資料庫管理
大綱 • 資料庫 • 資料庫模型 • 資料庫管理系統
資料庫的定義-定義 • 資料庫正式的定義有很多種,比較通用的定義,如下所示: 定義:資料庫(Database)是一個儲存資料的電子文件檔案櫃(An Electronic Filing Cabinet)。 • 以現代的企業或組織來說,資料庫是讓企業或組織能夠正常運作的重要元件,想想看!如果銀行沒有帳戶和交易記錄的資料庫,客戶存款和提款需要如何運作。每家航空公司都需要依賴訂票系統的資料庫,才能讓各旅行社訂機票,旅客才知道班機是否已經客滿。
資料庫的定義-長存資料 • 在企業或組織資料庫儲存的大量資料並非短暫儲存的暫時資料,而是長時間存在的資料,稱為「長存資料」(Persistent Data),長存資料是維持企業或組織正常運作的重要資料,如下: • 在組織中的資料需要一些操作或運算來維護資料。例如:當公司員工有人離職或是新進,員工資料需要新增和刪除操作來進行維護。 • 資料之間是有關係的。例如:員工資料和出勤資料擁有關係,一位員工擁有一份多筆的出勤資料。 • 資料不包含輸出資料、暫存資料或任何延伸資訊。例如:員工平均出勤資料、年齡和居住地分佈資料等並不屬於長存資料,因為這些資料都可以透過資料運算而得,亦稱為導出資料(Derived Data)。
資料庫的定義-範例 • 資料庫(Database)這個名詞是一個概念,這是一種資料儲存單位,一些經過組織的資料集合。事實上,有很多現成擁有或一些常常使用的資料集合,都可以稱為資料庫,如下所示: • 在Word文件中編輯的通訊錄資料。 • 使用Excel管理的學生成績資料。 • 在應用程式提供相關功能來維護和分析儲存在大型檔案的資料。 • 銀行的帳戶資料和交易資料。 • 醫院的病人資料。 • 大學的學生、課程、選課和教授資料。 • 電信公司的帳單資料。
資料庫-範例(以ACCESS為例) • Access資料庫的資料是儲存在「資料表」(Tables)物件,每一個資料表使用「欄位」(Fields)分類成很多群組,每一個群組是一筆「記錄」(Records),例如:通訊錄資料原來是使用表格儲存,如下表所示:
資料庫的說明 • 一般來說,我們所泛稱的資料庫正確的說是「資料庫系統」(Database System)的一部分,資料庫系統是由「資料庫」(Database)和「資料庫管理系統」(Database Mangement System,簡稱DBMS)所組成。
邏輯關聯資料 • 在資料庫儲存的是一種擁有關係的資料,這些資料使用關聯性(Relationships)建立與其它資料的邏輯關聯,所以稱為「邏輯關聯資料」(Logically Related Data)。 • 關聯性是一個術語,如果使用口語方式來說,可以將它視為一種資料間的連結,在資料庫儲存的是一種「完全連結」(Fully Connected)的資料,完全連結是指資料庫儲存的資料間擁有連結方式,這個連結允許從一個資料存取其它的資料。例如:前述的員工資料和出勤資料擁有關係,一位員工擁有一份多筆的出勤資料,換一個角度來說,就是在資料之間擁有連結方式,以便可以將員工資料連接到出勤資料。
使用Access資料庫管理系統儲存資料 • Access可以將上述表格轉換成【通訊錄資料.mdb】檔案,這是一個資料庫,內含上述表格的通訊資料,【通訊錄】是表格名稱,順理成章成為資料表物件的名稱,表格的每一列是一筆記錄的群組,這個群組分成欄位:姓名、地址、電話、生日和電子郵件地址。 • 換一個角度來看,我們使用資料庫儲存資料的目的是為了能夠快速排序和查詢,或是輸出報表,所以資料庫管理系統提供有各種排序和查詢功能,只需透過資料庫管理系統就能夠輕鬆取出資料庫所需的資料且產生所需的報表,這也是我們建立資料庫的目的。
資料庫模型 • 「資料庫模型」(Database Model)是使用一組整合觀念來描述資料與資料間的關係和資料的限制條件(檢查是否是儲存正確資料的條件),也就是用來描述資料庫中資料的關聯性。 • Access是一套關聯式資料庫系統,這是指它是一套使用關聯式資料庫模型(Relational Database Model)的資料庫管理系統。
大型檔案資料庫模型-說明 • 「大型檔案資料庫模型」(Flat-File Database Model)是直接使用檔案(通常是文字檔案)儲存資料庫的資料。 • 早期在沒有資料庫管理系統的年代,大部分公司都是直接使用COBOL程式語言設計系統,以文字檔案儲存資料,每一個檔案是一個資料表,檔案中的每一列是一筆記錄,使用固定欄寬或特殊的分隔字元儲存欄位資料。
大型檔案資料庫模型-範例1 • 資料庫的每一個文字檔案就是一個資料表,在檔案中的每一列是一筆記錄,使用固定欄寬或特殊分隔字元來儲存欄位資料,例如:【學生】資料表,如下圖所示:
大型檔案資料庫模型-範例2 • 如果資料庫很龐大,需要使用多個資料表來儲存資料時,每一個資料表就是一個檔案,例如:新增【選課】資料表,如右圖所示:
關聯式資料庫模型-說明 • 「關聯式資料庫模型」(Relational Database Model)是1970年由IBM研究員E. F. Codd博士開發的資料庫模型,其理論基礎是數學的集合論(Set Theory),不同於階層和網路式模式使用低階指標連結資料,關聯式資料庫模型是使用「資料值」(Data Value)建立關聯,支援一對一、一對多和多對多關聯性。
關聯式資料庫模型-資料結構 • 關聯式資料庫模型可以視為一個儲存記錄的二維表格,其資料結構是「關聯表」(Relations),如下圖所示:
關聯式資料庫模型-關聯性 • 關聯式資料庫模型建立的關聯是以資料值(Data Values),而不是使用連接結構(Links Structures),如下圖所示:
關聯式資料庫模型-優缺點 • 關聯式資料庫模型的優缺點,如下表所示:
資料庫系統的種類 • 使用者數來區分 • 範圍來區分 • 位置來區分 • 資料庫模型來區分
使用者數來區分 • 資料庫系統以使用者人數來區分可以分為單人使用和多人使用的資料庫系統,如下所示: • 單人使用(Single-user):單人使用的資料庫系統,資料庫系統只有專屬的使用者,從早期大型主機的資料庫系統和一些小型資料庫系統都屬於此類。 • 多人使用(Multi-user):資料庫系統允許多位使用者同時使用,目前大部分資料庫系統都屬於多人使用的資料庫系統。
範圍來區分 • 桌上型(Desktop):桌上型資料庫系統是指在個人電腦上執行的資料庫系統,通常屬於個人使用,適用在個人或中小企業的資料庫應用。 • 工作群組(Workgroup):在公司部門或組織中以工作群組方式區分的資料庫系統。例如:業務、會計和倉庫管理等各工作群組使用的資料庫系統,巿面上眾多現成的進銷存、會計和客戶管理等資料庫系統都屬此類。 • 企業級(Enterprise):跨部門或分公司的大型資料庫系統,屬於大型企業使用的資料庫系統,因為分公司可能分佈在世界各地,大多是使用分散式資料庫系統(Distributed Database System)。
位置來區分 • 集中式資料處理(Centralized Data Processing):指使用單一大型主機(Mainframe),將資料處理、儲存都集中在這台電腦,使用「終端機」(Terminals)連接主機執行資料處理,換句話說,資料庫系統就是安裝在這台主機上。 • 分散式資料處理(Distributed Data Processing):電腦是分散在公司和組織的不同位置,使用網路連接電腦,此時的資料庫系統可以安裝在任何一台電腦執行所需的資料處理。
資料庫模型來區分 • 資料庫系統如果使用資料庫模型來區分,資料庫系統可以依使用的資料庫模型分類成數種,例如: • 網路式資料庫系統。 • 階層式資料庫系統。 • 關聯式資料庫系統。
資料庫管理系統-ANSI/SPARC三層資料庫系統架構 • 目前大部分巿面上的資料庫系統都是使用ANSI/SPARC三層資料庫系統架構,這是由「ANSI」(American National Standards Institute)和「SPARC」(Standards Planning And Requirements Committee)制定的資料庫系統架構。 • 雖然ANSI/SPARC三層資料庫系統架構從未正式成為官方的標準規格,不過它是目前被廣泛接受的資料庫系統架構。
ANSI/SPARC三層資料庫系統架構-概念層(說明) 概念層(Conceptual Level) • 在概念層看到的是整個資料庫儲存的資料,這是資料庫管理師觀點所看到的完整資料庫。因為是概念上的資料庫,所以並不用考量資料實際的儲存結構,因為這部分屬於內部層(Internal Level)的問題。 • 以Access資料庫來說,在概念層看見的是【資料表】物件的清單和【資料工作表】以二維表格方式顯示的記錄資料。
ANSI/SPARC三層資料庫系統架構-概念層(範例) • 例如:Access資料庫的【學生】資料表,如下圖所示:
ANSI/SPARC三層資料庫系統架構-外部層(說明) 外部層(External Level) • 在外部層看到的是使用者觀點(User Views)的資料,代表不同使用者在資料庫系統所看見的資料,通常只有部分資料庫的資料。對於資料庫系統的使用者來說,其面對的是外部層,包含多種不同觀點的資料。例如:一所大學或技術學院,可以提供多種不同使用者觀點,如下所示: 使用者觀點1:學生註冊資料 使用者觀點2:學生選課資料 使用者觀點3:學生成績單資料
ANSI/SPARC三層資料庫系統架構-外部層(範例) • 例如:Access的【查詢1980年前出生的學生資料】查詢物件就只顯示學生資料表的部分資料,如下圖所示:
ANSI/SPARC三層資料庫系統架構-外部層 內部層(Internal Level) • 內部層是以實際儲存觀點所呈現的資料,這是實際儲存在磁碟等儲存裝置的資料,內部層在三層架構中扮演資料庫管理系統與作業系統的介面。
資料庫綱要 • ANSI/SPARC三層資料系統架構是探討資料庫管理系統的角度,針對不同使用觀點來說明其管理的資料。 • 現在轉換主題到資料庫本身,在資料庫管理系統看到的資料是儲存在資料庫的資料,除了資料本身外,還包含描述資料的定義,稱為「綱要」(Schema)。
資料庫綱要的基礎-說明 • 「資料庫綱要」(Database Schema)是指整個資料庫的描述,即描述整個資料庫儲存資料的定義資料,如下所示: • 綱要(Schema):資料描述的定義資料,對比程式語言的變數就是資料型態(Data Type)。例如:VB語言宣告成整數的age年齡變數,如下圖所示: Dim age As Integer • 資料(Data):資料本身,也就是程式語言的變數值。例如:年齡為25,如下所示: age = 25
三層資料庫綱要-概念綱要 概念綱要(Conceptual Schema) • 概念綱要是描述概念層的完整資料庫,所以資料庫只擁有一個概念綱要來定義資料表的欄位和資料類型。以Access來說,這就是【資料表】物件設計檢視的欄位定義,如下圖所示:
三層資料庫綱要-外部綱要 外部綱要(External Schema) • 外部綱要源於概念綱要,主要是描述外部層顯示的資料,每一個外部層綱要只描述資料庫的部分資料,隱藏其它部分的資料。換句話說,每一個外部層使用者觀點的資料都需要一個外部綱要,在一個資料庫允許擁有多個外部綱要。
三層資料庫綱要-內部綱要 內部綱要(Internal Schema) • 內部綱要是描述內部層實際儲存觀點的資料,定義資料的儲存結構和哪些資料需要建立索引,如同概念綱要,資料庫只擁有一個內部綱要。例如:使用C語言宣告學生Student的結構,如下所示: struct Student { char no[5]; char name[15]; char address[40]; int telephone; struct Date birthday; struct Student *next; };
資料庫管理系統-說明 • 資料庫管理系統從字面來說是一套管理資料庫的軟體工具,它是由一組程式模組負責組織、管理、儲存和讀取資料庫的資料,使用者對於資料庫的任何操作,都一定需要透過資料庫管理系統來處理。 • 目前巿面上大部分的資料庫管理系統都屬於「關聯式資料庫管理系統」(Relational Database Management System,簡稱RDBMS),這是用來管理關聯式資料庫模型(Relational Database Model)的關聯式資料庫(Relational Database)。
資料庫管理系統-圖例 • 資料庫管理系統在眾多的電腦軟體系統架構中,是位在作業系統和應用程式開發工具之間,如下圖所示:
資料庫管理系統的系統架構-說明 • 在討論三層資料庫系統架構是資料庫管理系統的抽象觀點(Abstract View),以資料庫儲存資料的角度來說明整個資料庫管理系統。 • 換一種方式,從軟體角度出發,資料庫管理系統是由多種不同的程式模組所組成,雖然各家廠商的資料庫管理系統擁有不同的系統架構,不過,基本資料庫管理系統的系統架構都擁有四大模組。
資料庫管理系統的系統架構-儲存管理 • 儲存管理(Storage Manager)對於簡單的資料庫管理系統來說,就是作業系統的檔案管理,不過為了效率考量,資料庫管理系統通常都會自行配置磁碟空間,將資料存入儲存裝置的資料庫。例如:硬式磁碟機,或從資料庫讀取資料。 • 儲存管理可以再分為:檔案管理(File Manager)實際配置磁碟空間後將資料存入磁碟,和緩衝區管理(Buffer Manager)負責電腦記憶體的管理。
資料庫管理系統的系統架構-查詢處理模組 • 目前的資料庫管理系統大多提供第4代語言(4GL),可以讓使用者定義、查詢或存取資料,資料庫管理系統語言(DBMS Languages)主要分成兩大類,如下所示: • 資料定義語言DDL(Data Definition Language):DDL是用來建立資料庫綱要(Database Schema),我們使用它來定義概念綱要、內部綱要和外部綱要。 • 資料操作語言DML(Data Manipulation Language):這個語言的指令敘述可以讓使用者存取和操作資料庫的資料,它是使用者與資料庫管理系統間溝通的語言,可以查詢、新增、刪除和更新資料庫的資料。
資料庫管理系統的系統架構-交易管理 • 資料庫系統通常都會支援商業用途,而商業系統架構的基礎是商業交易,這些商業交易的操作需要一併執行,視為一個無法分割的單位,整個過程對於資料庫來說是一個「交易」(Transaction)。 • 交易管理(Transaction Manager)主要分為:同名的交易管理子系統,負責處理資料庫的交易,保障資料庫商業交易的操作需要一併執行;「鎖定管理」(Lock Manager)也稱為「並行控制管理」(Concurrency-Control Manager)子系統來負責資源鎖定。
資料庫管理系統的系統架構-回復管理 • 資料庫在運作中可能碰到系統當機、斷電或磁碟損壞等突發狀況,所以,資料庫管理系統需要提供備份和回復管理(Backup and Recover Management),以保障資料的完整或一致性。 • 回復管理(Recovery Manager)主要分為:「記錄管理」(Log Manager)子系統,負責記錄資料庫的所有操作,包含交易記錄,以便同名的回復管理子系統能夠執行回復處理來回復資料庫系統。
常見的資料庫管理系統-說明 • 目前巿場主流的資料庫管理系統是關聯式資料庫管理系統,有相當多廠商開發相關的資料庫產品,有些軟體公司的主力產品就是資料庫,例如:甲骨文公司的Oracle。 • 隨著「開放原始碼」(Open Source)的大力推展,一些免費的資料庫管理系統產品也可以從網路上免費取得,換句話說,如果公司或組織的軟體採購經費不足,也可以選擇免費的資料庫管理系統來建構公司的資料庫系統。
常見的資料庫管理系統-商用的資料庫管理系統1常見的資料庫管理系統-商用的資料庫管理系統1 • SQL Server:微軟SQL Server是微軟公司針對企業級巿場的主力資料庫產品,使用SQL結構化查詢語言,稱為Transact-SQL。第一個版本約在1989年推出,這是OS/2作業系統的版本,SQL Server是源於UNIX和VMS作業系統的Sybase SQL Server 4.0,Sybase和微軟最後分道揚鑣分別獨立開發其產品,其網址:http://www.microsoft.com。 • Access:繼Xbase資料庫系統DBASE和FoxPro等之後,微軟開發針對個人電腦使用的資料庫管理系統,屬於微軟Office家族的一員,提供圖形使用介面,在不需要設計程式的情況下,就可以建立應用程式,通常是用來建立搭配其他資料庫管理系統的「前台」(Frontends)應用程式。
常見的資料庫管理系統-商用的資料庫管理系統2常見的資料庫管理系統-商用的資料庫管理系統2 • DB2:IBM公司主力的資料庫產品,也是使用SQL語言,DB2不只是一套關聯式資料庫系統,從技術上來說,它還是一套物件關聯式資料庫系統,其網址:http://www.ibm.com。 • Oracle:甲骨文公司(Oracle Corporation)開發與公司同名的著名資料庫產品Oracle,這是一套巿佔率很高的資料庫產品,使用名為PL/SQL資料庫語言,Oracle是一套強力支持Java語言的資料庫產品,如同IBM DB2,它不只是一套關聯式資料庫系統,還是一套物件關聯式資料庫系統,其網址:http://www.oracle.com.。
常見的資料庫管理系統-商用的資料庫管理系統3常見的資料庫管理系統-商用的資料庫管理系統3 • INGRES:源於加州大學柏克萊分校的關聯式資料庫研究計劃,在1982年成立Ingres公司開發商用資料庫產品,後來被組合國際(Computer Associates)購併,稱為Ingres Enterprise Relational Database,這是一套高效能和高擴充性的關聯式資料庫管理系統,事實上,目前巿面上各家的資料庫管理系統,有很多都是源於Ingres研究計劃,其網址:http://www.ca.com。 • Sybase:賽具斯公司開發的資料庫管理系統,原名Sybase SQL Server,後來更名為Sybase Adaptive Server,以避免與微軟Microsoft SQL Server混淆,Sybase是最早使用Ingres系統開發資料庫管理系統,早於Informix,其網址:http://www.sybase.com/home。
常見的資料庫管理系統-商用的資料庫管理系統4常見的資料庫管理系統-商用的資料庫管理系統4 • Informix:Informix公司擁有20年關聯式資料庫管理系統開發經驗,Informix公司是最早使用Ingres系統開發資料庫系統的廠商之一,在2001 年被IBM公司購併,IBM將其資料庫技術使用在DB2,稱為DB2 Arrowhead,其相關開發工具的軟體公司改名為Ascential軟體公司。 • InterBase:Borland公司的關聯式資料庫管理系統,InterBase不同於其他公司的資料庫管理系統,這是一套很小的產品,幾乎不需任何管理,一樣提供多層架構,其網址:http://www.borland.com。