歐陽芳泉 ouyang@cyu.edu.tw 清雲科技大學資訊管理系 第1章 資料處理與資料庫 歐陽芳泉 ouyang@cyu.edu.tw 清雲科技大學資訊管理系
第1章 檔案處理與資料庫 1-1 資料與資料處理 1-2 資料庫 1-3 檔案處理與資料庫系統 1-4 資料庫系統發展的歷史演進 第1章 檔案處理與資料庫 1-1 資料與資料處理 1-2 資料庫 1-3 檔案處理與資料庫系統 1-4 資料庫系統發展的歷史演進 1-5 資料庫技術的發展趨勢
1-1 資料與資料處理 1-1-1 資料 1-1-2 資訊 1-1-3 資料處理 1-1-4 資料階層
1-1-1 資料-定義 「資料」(Data)是指收集但是沒有經過整理和分析的原始數值、文字或符號,它是資訊的原始型態。「ANSI」(American National Standards Institute)定義的資料,如下: 資料是使用正規方式所代表的事實、概念或指令,可以適用人類或程式間進行通訊、解釋和處理。 資料可以代表一些特性或數量,換句話說,我們可以針對資料執行一些操作來轉換成資訊,這就是「資料處理」(Data Processing)。
1-1-1 資料-範例 資料本身並沒有意義,需要經過處理後,才會成為有意義的資料,也就是資訊。資料可以是一堆文件或報紙,整個公司的員工記錄、多種不同的開會記錄、整個醫院病歷資料或整班學生的成績資料。例如:整班學生必修課的一疊成績資料,如下圖所示:
1-1-2 資訊 「資訊」(Information)是經過處理的資料,在 經過整理和分析後,就可以成為有用或可供決策 的資訊。換句話說,資料是資訊的原始型態,資 訊是處理後的有意義資料,如下圖所示:
1-1-3 資料處理 「資料處理」(Data Processing)是使用!特定方法將資料轉換成資訊的過程,我們需要將資料進行搜尋、排序、分類、計算、收集、選取或結合等操作,以便產生所需的資訊,如下圖所示:
1-1-4 資料階層-說明 資料階層一共分成六個階層:位元、位元組、欄位、記錄、檔案和資料庫,如下圖所示:
1-1-4 資料階層-位元(Bits) 電腦的資料是使用二進位的0或1,每一個0 或1是最小的儲存單位,也就是位元。
1-1-4 資料階層-位元組(Bytes) 位元組是組合8個位元,或稱為字元(Character),這是一般電腦記憶體的最小單位,也是電腦檔案儲存資料的最小單位。
1-1-4 資料階層-欄位(Fields) 欄位是由1或多個位元組或字元組成,屬於相同性質資料組成的資料項目,以欄位名稱來識別。例如:一組字元組成的字串"Joe"和"Chen",可以使用欄位名稱"姓名"來識別,或數值33、29,可以使用欄位名稱"年齡"來識別等。
1-1-4 資料階層-記錄(Records) 在欄位之後是記錄,記錄是相關欄位的集 合,記錄的欄位是儲存「實體」(Entity) 的一些「屬性」(Attributes)值,實體是用 來描述真實世界的東西。例如:學生實體, 欄位是學生的屬性,即前述的欄位階層。 記錄則為學生的詳細資料。 例如:姓名、年齡、地址等欄位的值。
1-1-4 資料階層-檔案(Files) 如果記錄是欄位的集合,檔案就是相關聯記錄的集合,檔案是以檔案名稱儲存在電腦周邊裝置的磁碟。程式設計者可以撰寫電腦程式使用檔案名稱來開啟和存取檔案內容的記錄,其相關操作如下所示: 讀取記錄。 更新記錄。 新增記錄。 刪除記錄。
1-1-4 資料階層-資料庫(Database) 最後一階的資料階層是本書的主題:資料 庫,資料庫是相關檔案的集合,使用「資 料庫管理系統」(Database Management System)集中管理資料庫中儲存的資料。
1-2 資料庫 1-2-1 資料庫的定義 1-2-2 資料塑模(Data Modeling) 1-2-3 資料庫資料的三個層次
1-2 資料庫-說明 資料庫系統是由「資料庫」(Database)和「資料庫管理系統」(Database Mangement System,DBMS)所組成,如下圖所示:
1-2 資料庫-其儲存的資料 資料庫儲存的資料包括:資料和資料本身的定義,這是資料本身的描述資料,稱為「中繼資料」(Meta-data,The data about data)。 通常這些資料是使用不同檔案來分開儲存,所以在資料階層的資料庫是一個相關聯檔案的集合。
1-2-1 資料庫的定義-範例 「資料庫」(Database)這個名詞是一個概念,在資料階層是一種資料儲存方式,一些組織的資料集合。有很多我們現成擁有或一些常常使用的資料集合,都可以稱為資料庫,如下所示: 在Word文件中的通訊錄資料。 使用Excel管理的學生成績資料。 一個將資料儲存在大型檔案的應用程式,在應用程式提供相關功能來維護和分析資料。 銀行的帳戶資料和交易資料。 醫院的病人資料。 大學的學生、課程、選課和教授資料。 電信公司的帳單資料。
1-2-1 資料庫的定義-通用定義 資料庫正式的定義有很多種,比較通用的定義,如下所示: 定義1.1:資料庫(Database)是一個儲存資料的電子文件檔案櫃(An Electronic Filing Cabinet)。 電子文件檔案櫃用來儲存的資料是: 結構化(Structured) 整合的(Integrated) 相關聯(Interrelated) 共享(Shared) 可控制(Controlled)
1-2-1 資料庫的定義-長存資料(Persistent Data) 通常組織中的資料需要一些操作或運算來維護資料,例如:公司員工有人離職或新進員工,所以員工資料一定需要新增、刪除操作來維護資料。 資料是相關聯的,例如:員工資料和出勤資料是相關聯的,一位員工擁有一份出勤資料。 資料不包含輸出資料、暫存資料或任何延伸資訊,例如:員工平均出勤資料、年齡和居住地分佈資料等並不屬於長存資料,因為這些資料都可以由操作資料運算而得。
1-2-2 資料塑模-說明 資料庫儲存是結構化收集的「實體」(Entity)資料,實體是現實生活中存在的東西,只是將它塑模(Modeling),如下圖所示:
1-2-2 資料塑模-過程 「資料塑模」(Data Modeling)是將真實東西轉換成模型,這是一種分析客戶需求的技術,其目的是建立客戶所需資訊和商業處理的正確模型,將需求使用圖形方式來表示,其塑模的過程,如下圖所示:
1-2-2 資料塑模-目的 將真實東西塑模,其目的是使用模型來解釋真實東西、事件和其關聯性。以資料庫來說,塑模的主要目的是定義資料的結構,也就是後面說明的邏輯關聯資料。
1-2-2 資料塑模-邏輯關聯資料 資料庫是將真實東西轉換成模型定義的資料結構。例如:塑模一間大學或技術學院,也就是從大學或技術學院儲存的資料中識別出: 實體 屬性 關聯性
1-2-2 資料塑模-邏輯關聯資料 實體(Entities) 在真實世界識別出的東西。例如:從大學和技術學院可以識別出學生、指導老師、課程和員工等實體,如下圖所示:
1-2-2 資料塑模-邏輯關聯資料 屬性(Attributes) 每一個實體擁有的特性。例如:學生擁有學號、姓名、地址和電話等屬性,如下圖所示:
1-2-2 資料塑模-邏輯關聯資料 關聯性(Relationships) 二個或多個實體間所擁有的關係,以基數比限制條件(Cardinality Ratio Constraints)來說,主要分為三種,如下所示: 一對一(1:1):指一個實體只關聯到另一個實體。例如:指導老師是一位學校員工,反過來,此員工就是指這位指導老師。 一對多(1:N):指一個實體關聯到多個實體。例如:學生寫論文時可以找一位指導老師,但是,一位指導老師可以同時收多位學生。 多對多(M:N):指多個實體關聯到多個其他實體。例如:一位學生可以選修多門課程,反過來,同一門課程可以讓多位學生來選修。
1-2-2 資料塑模-邏輯關聯資料
1-2-3 資料庫資料的三個層次 在資料庫儲存的資料是使用模型找出的實體和屬性所轉換成的資料,可以分成三個層次,如下: 資料模型(Data Model):將真實東西轉換成資料模型的實體、屬性和關聯性,使用圖形化的高階模型來描述這些資料,通常使用在資料庫設計階段來分析資料庫儲存的資料。 中繼資料(Meta-data):這是用來描述資料庫儲存的是什麼樣的資料,定義資料列(Rows)或記錄(Record)型態,也就是定義各資料欄(Columns)或資料項目(Data Item)的型態。 資料(Data):資料庫實際儲存的資料列(Rows),或稱為記錄(Records)。
1-3 檔案處理與資料庫系統 1-3-1 檔案處理方式 1-3-2 檔案處理系統的問題 1-3-3 資料庫方式
1-3 檔案處理與資料庫系統 「檔案系統」(File System)是一種非常原始的資料庫,不論是UNIX/Linux檔案系統,Windows作業系統的NTFS檔案系統,資料都是使用相同觀念,以檔案方式儲存,我們可以撰寫應用程式處理檔案儲存的資料,稱為「檔案處理系統」(File Processing System)。
1-3-1 檔案處理方式-架構
1-3-1 檔案處理方式-資料檔案的內容 檔案管理系統的程式是處理邏輯檔案的資料,邏輯檔案的每一列是一筆記錄,第一列是欄位名稱的資料定義。 不過實際儲存的檔案內容並沒有第一列的欄位名稱,只有學生資料,檔案可以使用固定欄寬(例如:前4個字元是學號,第5~15個字元是姓名等,以此類推)或以特殊分隔字元儲存欄位資料,如下所示: S001:江小魚:中和景平路1000號:02-22222222:1978/2/2 S002:劉得華:桃園巿三民路1000號:03-33333333:1982/3/3 S003:郭富成:台中巿中港路三段500號:04-44444444:1978/5/5 S004:張學有:高雄市四維路1000號:05-55555555:1979/6/6
1-3-2 檔案處理系統的問題-1 結構與資料相依(Structural and Data Dependence) 因為檔案處理系統與檔案結構和儲存的資料相關,如果更改,將花費相當大程式設計的時間與成本,如下所示: 結構相依(Structural Dependence):因為檔案儲存的資料結構是由程式碼定義,如果需要更改邏輯檔案結構,就需要更改所有使用此檔案的程式碼,例如:更改分隔符號。 資料相依(Data Dependence):在程式碼同時也定義記錄的欄位,如果更改記錄的欄位定義,我們需要更改所有程式的資料管理模組,例如:更改欄位順序或將學生資料的電話欄改為電子郵件。
1-3-2 檔案處理系統的問題-2 資料分隔與孤立(Data Separation and Isolation) 檔案處理系統的資料是儲存在不同檔案,造成: 資料沒有集中管理:資料是分散儲存在不同的檔案,如果需要跨檔案查詢,就會十分的困難,例如:上一節跨課程與學生資料檔查詢學生的連絡資料。 檔案格式不相容:資料使用不同的檔案格式儲存,因為公司各部門可能使用不同檔案格式儲存資料,更進一步,有可能使用不同的程式語言撰寫程式來管理資料,將造成資訊分享的困難,這是資料重複和不一致的主要原因。 更新系統困難:因為檔案處理系統擁有多種檔案格式,或各種不同程式語言所開發的程式,在更新或建立新系統時,都會十分困難。
1-3-2 檔案處理系統的問題-3 資料重複與不一致(Data Redundancy and Inconsistency) 檔案處理系統的資料是儲存在不同的檔案,如果沒有好好控制,資料就可能重複出現在不同的檔案中,而且在新增和更新資料時,造成資料的不一致,增加資料維護的成本。
1-3-2 檔案處理系統的問題-4 多使用者問題(Multiple Users Problems) 檔案處理系統如果是單人使用的系統,就不用考量並行(Concurrency)問題。 如果同時有多位使用者存取檔案處理系統的資料,系統需要處理並行更新的問題,例如:帳戶原有10000元,銀行客戶陳會安和江小魚同時從此帳戶提款3000和4000元,如果沒有同步更新保護,最後的餘額可能是3000、7000或6000元。
1-3-2 檔案處理系統的問題-5 安全問題(Security Problems) 基於資料安全上的考量(大多是人為因素),如果屬於多人使用的檔案處理系統,需要指定不同使用者的權限,即使用者授權存取那些檔案的資料,例如:總機小組不能存取業務資料,就可以免重要業務機密外流,人事管理人員只能存取員工資料等。
1-3-2 檔案處理系統的問題-6 資料完整性問題(Data Integrity Problems) 資料完整性是指檔案儲存的資料需要符合一些條件,例如:銀行帳戶餘額不能為負值,課程的學分不可為0或負值。換句話說,檔案處理系統的程式需要額外新增檢查資料格式的程式碼,相對的,如果更改條件,同時也需要更改程式碼,增加更改條件的困難度。
1-3-3 資料庫方式-架構
1-3-3 資料庫方式-目的 在資料庫管理系統擁有多種程式模組:查詢處理模組、交易管理和回復處理等,可以進行資料庫的資料管理,將實際資料庫結構和存取都隱藏在資料庫管理系統之後,如此可以達到: 多人使用,資料共享。 資料一致和最少的資料重複。 資料獨立(相反的是資料相依)。 改進資料完整性問題。 更佳的資料安全管理。 同步與交易管理。 資料備份與回復。
1-4 資料庫系統發展的歷史演進 1-4-1 1960年代: 1-4-2 1970年代: 1-4-3 1980年代: 網路與階層式資料庫模型 1-4-2 1970年代: 關聯式資料庫模型與實體關聯模型 1-4-3 1980年代: 關聯式資料庫與SQL結構化查詢語言 1-4-4 1990年代: 物件導向式資料庫模型與主從架構
1-4 資料庫系統發展的歷史演進
1-4-1 1960年代:網路與階層式資料庫模型 1960年代是資料庫系統開始萌芽的年代,隨著磁碟的出現,檔案也從循序索引(Indexed-sequential)的循序存取轉變成「集合導向記錄模型」(Set-oriented Record Model)的直接存取。 1961年:Bachman替GE(General Electric)奇異設計第一套資料庫管理系統IDS(Integrated Data Store),1964年才廣泛的使用,這是一套使用「網路式資料庫模型」(Network Database Model)的資料庫。 1965年:IBM公司開發「IMS」(Information Management System)是使用「階層式資料庫模型」(Hierarchical Database Model)的資料庫。
1-4-2 1970年代:關聯式資料庫模型與實體關聯模型1 1970年代是資料庫技術快速起飛的年代,資料庫管理系統已經成為大學學科和研究領域,眾多使用網路式和階層式資料庫模型的商用資料庫大量出現在巿面。 1970年:IBM研究科學家E. F. Codd博士發表「關聯式資料庫模型」(Relational Database Model)的重要論文。 1976年:Peter Chen定義資料庫設計的「實體關聯模型」(Entity-Relationship Model),這是目前資料庫系統分析和設計的基礎。 1978年:ANSI定義ANSI/SPARC三層資料庫系統架構。
1-4-2 1970年代:關聯式資料庫模型與實體關聯模型2 1970年代的後期,有二個主要的關聯式資料庫研究計劃開始進行,如下所示: INGRES:加州大學柏克萊分校的研究計劃,最後成立Ingres公司,這個研究計劃開發的資料庫系統使用QUEL查詢語言,它是Informix、Sybase和SQL Server資料庫系統的前身。 System R:IBM公司的研究計劃,最後成為IBM的DB2和Oracle資料庫的前身,使用的SEQUEL查詢語言就是第四篇SQL結構化查詢語言的前身。 資料庫查詢語言(Query Language)隨著上述研究計劃,在1970年代開始發展,例如:QUEL、SEQUEL、SQL和QBE查詢語言。
1-4-3 1980年代:關聯式資料庫與SQL結構化查詢語言 1980年代是商用關聯式資料庫大放異彩的年代,網路和階層式資料模型已經不再發展,不過直到現在仍有一些系統在使用。80年代初期已經開發超過100個ANSI/SPARC關聯式資料庫系統,例如:DB2、Oracle、Sybase和Informix等。 1980年代中期:「SQL」(Structure Query Language)成為ISO標準的資料庫查詢語言,IBM DB2也成為IBM公司最重要的資料庫產品。 在1980年代後期:專家系統(Expert Database System)、物件導向資料庫管理系統(Object-Oriented Database Management System)和主從架構分散式系統逐漸成為資料庫系統的未來趨勢。
1-4-4 1990年代:物件導向式資料模型與主從架構1 1990年代關聯式資料庫的相關技術仍然持續的發展,隨著1990年代中期程式設計技術進入物件導向分析和設計,應用物件導向觀念的資料庫模型也逐漸成形,如下所示: 物件導向式資料庫模型(Object-Orient Database Model):這是使用物件(Object)觀念代替記錄儲存資料,以繼承減少資料重複,因為程式語言也支援物件導向,所以資料庫與程式語言可以使用一致的資料模型。 物件關聯式資料庫模型(Object-Relational Database Model):這是由Won Kim和Michael Stonebraker博士研究的資料庫模型,將物件導向的觀念整合至關聯式資料庫模型,強調這不是革命(Revolution),而是進化(Evolution)。
1-4-4 1990年代:物件導向式資料庫模型與主從架構2 隨著Internet與WWW的興起和個人電腦的普及,集中處理的資料庫系統已經改為分散式主從架構(Client/Server)資料庫系統,將系統區分成兩個部分,如下所示: 客戶端(Client):從端的應用程式負責使用者的資料輸入和顯示輸出的結果。 伺服端(Server):主端的資料庫系統是負責回應從端的請求,將查詢結果傳回從端的應用程式。 再加上平行資料庫處理(Parallel Database Processing)應用在關聯式資料庫上,可以將表格的資料水平或重直分割成多個資料庫且並行的進行資料處理,即「分散式資料庫系統」(Distributed Database System)。
1-5 資料庫技術的發展趨勢