第10章 資料庫設計
1.請說明資料庫系統之演化過程及應用的情形。
【參考答案】:
圖一是資料庫系統的演化歷程,早期在1960年左右,電子資料處理時期,檔案主要是應用在企業的物料、薪資與會計等資訊系統,1970年代起,階層式與網狀資料庫被發展出來,主要是應用在生產、行銷、薪資、財務與會計等作業,1980年代,取而代之是關聯式資料庫,也是目前資料庫的主流,有集中式、主從式資料庫、平行處理資料庫、異質性資料庫或是分散式資料庫系統。同時,資訊處理的作業方式也延伸至網際網路之作業環境,從1990年代起,物件資料庫開始被應用,此時已經從文字、數字的資料型態增加圖片、聲音或影片等多媒體資料,資料庫之應用範圍也擴大至醫療、科學研究與衛星定位系統。
圖一:資料庫系統的演化歷程
如以上所云,早期的資料庫系統的應用以商業性用途居多,例如企業的薪資、會計、人事、物料與生產方面的資訊處理是主要的應用對象。基本上,資料庫系統提供資料的建檔、更新、刪除、資料搜尋或資料倉儲的功能,資料庫適合的應用場合包括:多人共用的資訊服務、大量資料的儲存與更新、資訊安全的重要程度要求相當高、作業不允許中斷的業務為主要對象,例如生產自動化系統、金融商品服務系統、行動電話作業系統或電子商務等。目前,資料庫的應用已經延伸至下列用途﹕(1)工程科學方面太空科學發展計劃、飛機、輪船與汽車設計、生物科技應用性研究之應用等,(2)醫療方面病歷與檢驗資料、X光或核子共振照片、生命跡象之監控系統等,(3)通訊方面無線通訊、影像傳輸系統與電傳會議等,(4)地理及氣象應用方面氣象預測、衛星定位系統或地理資訊系統等,(5)產業經濟方面產業資訊、金融自動化與經濟預測等,與(6)電子商務方面網路購物、網路金融與宅急便的配送服務等。預測未來資料庫的應用將逐漸朝向個人化之行動資訊系統,例如工作行事曆、網路會議、通訊、學習、音樂與信用交易等,屆時資料庫與個人的日常生活將密不可分,關係更為密切。
2.何謂「檔案」? 檔案設計的目標爲何?
【參考答案】:
所謂「檔案」(File)是指:「一群相同資料格式的資料記錄(Data Record)組合而成的一個集合。」換言之,檔案是由若干個具有相同資料格式之邏輯資料記錄所形成的一個集合,因此,檔案又稱之為「資料集」(Data Set)。一般而言,一個檔案是若干個資料記錄(Data Record)所組成,而每一個資料記錄是由若干個資料欄位(Data Field)所組合而成。
一般而言,檔案設計的目標如下﹕(1)良好的作業效率,(2)資料的正確性,(3)檔案處理的穩定性,(4)減少資料處理的成本,(5)增加資料的再用性,與(6)檔案擴充的彈性。
3.傳統檔案的主要缺點爲何?
【參考答案】:
一般而言,使用傳統資料檔案的缺點茲敘述如下:(1)資料重複的情形相當普遍許多相同的資料紀錄重複出現在不同的檔案,浪費了許多儲存的空間;(2)資料的一致性差由於資料檔案彼此相關性高以及處理的順序關係,經常造成資料不完整的現象;(3)資料的隱私性與安全性不佳由於缺乏軟體控制系統,而且沒有安全保護措施,許多重要資料無法集中管制,因而產生資料安全管理的問題;(4)系統維護作業不易而且成本高由於資料檔案欄位的重複性,當資料發生異動時,各個相關之資料檔都必須逐一加以更新,既費時又費力;(5)使用者自行設計檔案的情形相當少作業單位的需求報表必須倚賴專業資訊人員進行程式的撰寫,使用者自行設計檔案的機會很少,尤其是高階主管決策所需之決策資訊往往涵蓋許多業務部門,因此,決策支援系統必須對各部門之檔案進行讀取動作,處理的手續也是相當繁雜;(6)程式撰寫困難且程式設計的生產力較低,由於每一個資訊系統擁有獨立性質之資料檔,若檔案的資料結構稍有變動時,必須進行相關程式的修改作業。
4.何謂「資料庫」? 資料庫的特性為何?
【參考答案】:
所謂「資料庫」(Database)是指:「一群相關資料的集合體,它是用以描述某一個實體的特性,亦是一種整合性的資料儲存體。」每一個資料庫系統允許多個實體檔案,而每一檔案是由多個屬性所組成。基本上,資料庫最大的優點是資料結構之獨立性(Structural Independency),其意義是應用程式不因資料庫內容與結構的改變必須進行變更的作業。為了達到此一要求,資料庫的結構有邏輯結構(Logical Structure)與實體結構(Physical Structure)的區分。
茲將資料庫具有以下幾個特性說明如下:
(一) 一群相關資料集的組合體
資料庫是一群相關資料集的組合體系,而所謂「資料集」(Data Set)即是檔案。換言之,資料庫係將一些相互發生關係的資料集,做有效的組合並加以運用,例如人事資料庫即包含人事基本資料檔、差假資料檔、訓練資料檔,獎懲資料檔、考勤資料檔、加班資料檔、薪資檔及儲金資料檔等。
(二) 以最有效率方式提供多人使用
資料庫好比是一個大型的「資料銀行」(Data Bank),可以提供不同的使用者存取相關的資料,資料銀行能夠將這些不同來源的資料集中並做有系統的處理以最有效率的方式提供給不同使用單位人員使用。
(三) 存取資料有一定的方法
資料庫的檔案與應用程式之間資料的交換作業,欲達到有效的管理目標,必須有一套專門控制資料取存的系統,不僅可減少使用者程式設計上的困擾,而且資料庫檔案的一致性亦比較好,達到資料統一管理與資料共同分享之目的。
5.資料庫具有哪些優點?
【參考答案】:
基本上,資料庫具有下列優點:
(一) 避免資料的重複
資料庫系統為了減少傳統檔案彼此互相重複的缺點,採取檔案集中管理的方式。例如採購系統的購案資料與會計系統的應付帳報資料,皆包含廠商的會計科目代號及付款相關資料,如果能夠建立一個涵蓋採購與會計資料之資料庫系統,即可免除資料重複的缺點,由採購系統直接將付款資料傳送給會計系統取代傳票資料,而達到檔案集中管理的目的。
(二) 維持良好資料的一致性
由於資料庫係採取檔案集中管理的方式,不同程式在執行資料記錄的更新(Update)、新增(Insert)及刪除(Delete)過程,能夠維持資料的一致性。但是由於傳統檔案設計的方式,檔案是分散在不同資訊的系統當中,如欲更新資料檔案必須全部予以修正,否則就會產生資料不一致的現象。
(三) 增加應用程式開發的生產力
由於資料庫系統提供程式開發的工具例如結構化查詢語言,使用者或程式設計師不必考慮資料檔案的結構,諸如索引型順序檔案(Indexed Sequential Access Method, ISAM)或直接檔案(Direct Access Method, DAM)等,由於程式設計師不必了解資料庫系統究竟是如何讀取與存放資料,即可以簡化程式設計工作,提升應用程式開發生產力,使程式設計工作趨於簡單化、效率化與標準化。
(四) 確保資料的保密性及安全性
為了保持資料的保密性及安全性,資料庫系統必須採取嚴密的控制方式,對於使用者的使用權力區分等級,並且將異動資料利用交易記錄檔予以保存下來,萬一資料庫發生毀損的情形,資料庫管理系統可以進行資料庫的檔案回復(Recovery)工作,將資料庫回復至毀損以前的狀態,以確保資料的保密性及安全性。
(五)支援多人同時進行線上交易處理
為了解決多人同時擷取或更新同一筆紀錄的問題,資料庫管理系統提供了同步處理機制與鎖定管理等嚴密的控制方式。同時,在執行交易過程中良好的執行效率,可以支援多人同時進行線上交易處理。
(六)多人同時分享檔案的能力
由於資料庫系統將檔案予以集中管理,同時,資料庫系統亦提供視界(View)、鎖定管理(Locking Management)等做法。因此,它可以提供多人同時分享檔案的能力。
(七)不同型態的資料交換與資料整合
由於國際標準協會制定了關連式資料庫應用的作業標準,不同型態的資料可以進行轉換,對資訊整合工作是具有相當程度的助益。
(八)資料庫的擴充彈性
當使用者或是資料量不斷增加時,必須更新資料庫版本或是轉換至新的作業平台時,大部分的資料庫系統均提供效用程式(Utility Program),使資料庫的擴充具有良好的彈性。
(九)資料獨立性
使用資料庫系統不會因資料結構的改變必須修改原來的應用程式,對於資訊系統的維護工作具有相當大的助益。
6.請詳細說明一個資料庫系統的架構。
【參考答案】:
圖二是資料庫系統的架構,它涵蓋以下五個部分:
圖二:資料庫系統的架構
(一) 使用者層(Users Layer)
一般而言,資料庫系統的主要使用者有一般使用者、高階主管、專案經理、系統分析師、程式設計師 與資料庫管理師等。
(二) 應用工具層(Application Tools Layer)
資料庫的主要應用工具包括:應用程式(Applications)、應用程式介面(Application Interface)、查詢工具(Query Tools)、資料定義語言(Data Definition Language, DDL)、資料操作語言(Data Manipulation Language, DML)與監督工具(Monitoring Tools)。
(三) 查詢處理層(Query Processing Layer)
茲將查詢處理層之主要模組說明如下:
查訊剖析器(Query Parser)處理DML語言的指令敘述,在檢查與法正確後,轉換成為低階指令。
查詢最佳化模組(Query Optimizer)利用資料庫管理系統之最佳化查詢技術,同時,參考系統目錄的資料字典即所謂彙總資料(Metadata)進行查詢轉換(Query Transformation),可以將外部綱目(External Schema)的查詢程式轉換為內部綱目(Internal Schema)的指令,或使用索引來增加資料的查詢速度,最後產生一些執行計畫(Execution Plan)方案。
DDL編譯器(DDL Complier)將DDL語言的指令編譯為資料庫綱目(Database Schema)的彙總資料以後,存入系統目錄。
程式碼產生器(Code Generator)使用資料庫管理系統所提供的演算法可以自動產生程式碼,做為執行查詢之用途。
執行引擎(Execution Engine)待查詢指令經過最佳化處理後,即可交由執行引擎來進行資料查詢,以便存取實體資料檔案,如果是進行交易工作則交由交易管理來處理。
(四) 檔案管理層(File Management Layer)
回復管理者(Recover Manager)負責將資料庫回復至最後穩定的狀態,主要是利用備份資料及交易紀錄來執行資料庫回復的程序。
記錄管理者(Log Manager)負責記錄資料庫系統執行的每一項操作,這些紀錄是透過緩衝區管理者(Buffer Manager)存入磁碟當中。
存取管理(Access Module)在轉換成低階的檔案系統指令後,透過緩衝區管理者存取資料庫的資料。
緩衝區管理者(Buffer Manager)主要工作是負責電腦主記憶體管理,作業系統會配置一個資料庫緩衝區(Database Buffer)的記憶空間來對應磁碟儲存的區塊。因此,資料庫的資料必須透過緩衝區管理者來存取,如果是屬於更新資料庫之交易處理,相關資料是暫時存放在資料庫之緩衝區,在完成交易時,才正式寫入資料庫。
檔案管理者(File Management)本來這一項工作是作業系統的功能,但是為了效率的考量,操作系統允許檔案管理者自行負責配置磁碟空間,將資料存入指定的實體資料庫。
鎖定管理者(Lock Manager)負責保證各交易能夠分開和獨立執行,它主要是提供鎖定功能,鎖定正在執行更新動作的資料,當資料被鎖定後,只允許一個交易的操作可以存取這些資料,如果發現其他交易同時存取已經鎖定的資料時,鎖定管理者會拒絕此一請求,一直到被鎖定的交易完成為止。
交易管理者(Transaction Manger)負責配合紀錄管理者與鎖定管理者理理資料庫的交易活動,當交易管理負責送出SQL指令,最後以交付(COMMIT)或撤回(ROLLBACK)指令完成交易,避免死結(Deadlock)的情形發生,而死結發生的原因是因為兩個交易同時存取對對方鎖定的資料導致的結果。為了確保整個交易過程的成功,須滿足以下四個條件即所謂「ACID」:
(1)不可分割性(Atomicity)對資料庫而言,在一個交易過程中,若不是所有運算皆被正確執行,就是任何運算皆未執行。
(2)一致性(Consistency)一筆交易在隔離下執行,若沒有其他交易同時執行時,一定可以確保資料庫的一致性。
(3)隔離性(Isolation)當多筆交易同時執行時,對每一組交易Tj及Ti而言,若不是Tj在Ti 開始前執行完畢,就是Tj在Ti執行完成後才開始。因此,每一筆交易並不知道系統中存在同時執行的其他交易。
(4)耐久性(Durability)在成功的完成一筆交易行為以後,該交易對資料庫所產生的改變是持久的。
(五) 資料層(Data Layer)
一般而言,資料層主要有下列資料:
資料檔(Data Files)資料庫之實體檔案為主。
系統目錄(System Catalog)儲存資料庫之資料字典即描述資料庫的資料結構例如資料庫綱目等。
交易紀錄(Transaction Log)儲存所有交易的資料。
索引(Indexes)提供快速存取的資料檔。
備份檔(Backup Files)將備份資料送入此一區域加以儲存。
7.請比較四種主要類型邏輯資料庫結構的特性與優缺點。
【參考答案】:
表一是各種類型資料庫之比較表,關聯式資料庫的功能相當完整而且使用容易,是目前產業界最重要的一種資料庫,預期未來資料庫類型將逐漸朝向物進資料庫系統發展。
表一:各種類型資料庫之比較表
類型 階層式資料庫 網狀資料庫 關聯式資料庫 物件導向資料庫
特性 階層式結構亦稱「樹狀結構」(Tree Structure),它是將一個資料記錄分成數個「段」(Segment),然後按其相互間從屬關係,排成樹狀結構圖。 網狀結構的基本資料單位是資料項目(Data Item),一個或數個資料項目即可組成一個記錄(Record),它與前述的段(Segment)相似。網狀結構就是利用指標(Pointer)將彼此有關的資料予以相互連接起來 表格通常是由資料列與欄所組成的二維矩陣(Two Dimensions Matrix)。
基本上,表格是各自獨立,表格內資料欄位之名稱是不允許重複,沒有資料鏈結,而且主鍵不可為虛無值(Null)。 結合物件導向特性(e.g., 封裝、多型與再用, etc.)與資料庫特性(e.g., 完整性、安全性、耐久性、異動管理、同步控制、備份、回復、調校, etc.)的一種資料庫。」
它主要是利用物件導向資料庫模式與物件導向語言程式的類別(Class)來定義資料庫的結構,類別如同關聯式資料庫的關聯表用來定義資料庫的檔案結構。
優點 概念之簡單性
資料庫的安全性
資料獨立性
資料完整性
良好效率 概念之簡單性
處理多關聯表
資料存取彈性
資料庫完整性
資料獨立性
標準化 概念之簡單性
結構獨立性
設計、實作與管理十分容易
即興式查詢能力強
強大資料庫管理系統(DBMS) 語意能力表達能力佳
良好的視覺表達能力
資料庫完整性
良好的再用性
支援動態行為處理的能力
缺點 實作困難度高
管理不易
缺乏結構獨立性
應用程式設計過於複雜
實務應用的限制
缺乏作業標準
處理語意能力弱 系統複雜性
缺乏結構獨立性
處理語意能力弱
耗用較多的硬體與軟體成本
設計門檻較高,不良設計經常造成資訊作業效能不佳的現象
容易造成資訊孤島後遺症
語意處理能力不佳 缺乏作業標準
資料存取複雜
進入門檻高學習時間較長
系統效能不佳
8.請問物件資料庫的適用對象爲何? 請舉一個實例加以說明。
【參考答案】:
物件資料庫的適用對象為大量使用者與多媒體資料、基本上,物件資料庫的適用場合如下﹕(1)需要支援複雜的資料結構的資訊系統,(2)具有不同資料型態的交換能力,(3)支援即興式的查詢作業,與(4)將個人、工作站與大型資料庫進行整合。醫療資訊系統是一個適合的應用場合,因為該系統需要多媒體資料支援包括大量病患之病歷、檢驗或領藥的資料、檢驗影像資料(X光與MRI資料)以及診療資料等。
9.以實體結構而言,資料庫有哪三種類型?
【參考答案】:
以資料庫的實體結構而言,最常用的有以下三種:
(一) 順序式組織(Sequential Organization)
此一類型的儲存方式是按照記錄鍵(Record Key)的順序依次放在儲存媒體內,如果欲存取其中一筆資料,必須從檔案開頭找起,直到找到該筆資料為止,此種資料結構適合於對大量資料進行順序式處理。
(二) 直接式組織(Direct Organization)
此一類型的儲存方式是將資料記錄依其位址儲存,當存取資料時,只需找出其位址,即可直接存取該筆資料記錄、而不須經過在該筆資料之前的所有資料記錄。至於位址的設定方法有「直接定址法」、「索引定址法」及「隨機計算法」三種。「直接定址法」係直接以記錄值作為位址,「索引定址法」係以記錄鍵從索引表中找出位址,至於「隨機計算法」係將記錄鍵值經過某一個隨機變數產生器的公式計算以後,即可找出其儲存位址的方法。
(三) 串列式組織(List Organization)
此一類型之資料檔案的組織係以指標(Pointer)來表示資料記錄之間的連接關係,此一連接關係即為存取資料庫相關資料的主要依據,使用指標即可以迅速找到所需的資料,但是指標的維護亦是一項相當複雜的工作。
10.何謂「資料庫管理系統」(DBMS)? 資料庫管理系統的功能爲何?
【參考答案】:
所謂「資料庫管理系統」(Database Management System, DBMS)是指﹕「一套管理資料庫系統檔案之建立、更新、存取控制等的應用系統。」換言之,資料庫管理系統提供使用者與程式設計師擷取資料庫檔案時、確保資料完整性、控制同步處理、資料庫的備份與建立回復的機制。如圖三所示,DBMS是應用程式與資料檔案的一個中間橋樑,它主要是扮演下列四個功能﹕(1)定義資料庫的邏輯結構與實體結構,(2)儲存、擷取及傳送資料,(3)維持資料的完整性與安全性,與(4)使發生毀損的資料庫重新回復。資料庫管理系統是資料庫系統的核心,使用者須透過它才能取得資料庫的資料,因此,DBMS是使用者與資料庫之間的一個橋樑。
圖三:資料庫管理系統的基本功能
11.請以圖形來說明一個資料庫管理系統的作業流程。
【參考答案】:
茲將DBMS的作業流程說明如下:(見圖四)假設有一個應用程式欲從資料庫讀取一筆資料記錄,資料庫管理系統須執行以下動作:(1)應用程式呼叫DBMS,並宣告欲讀取資料記錄之名稱與鍵值,(2)DBMS接到應用程式之命令後,從「外部綱目」、「概念性綱目」及「內部綱目」中取得應用程式所需資料記錄之位址與內容,(3)DBMS將控制權交回給操作系統(OS),指示讀取所需要的記錄,(4)作業系統從資料庫中讀取資料,並存放在系統緩衝區(System Buffer Area),(5)DBMS將系統緩衝區的資料轉換成應用程式所需的資料型式,並傳送給應用程式使用,與(6)當DBMS完成以上的各項工作以後,即可將執行結果的資訊送回給應用程式。
圖四:資料庫資理系統的作業流程
12.請比較階層式、網狀、關聯式與物件向四種資料庫的適用對象與優缺點。
【參考答案】:
表二是各種類型資料庫之比較表,關聯式資料庫的功能相當完整而且使用容易,是目前產業界最重要的一種資料庫,預期未來資料庫類型將逐漸朝向物進資料庫系統發展。
表二:各種類型資料庫之比較表
類型 階層式資料庫 網狀資料庫 關聯式資料庫 物件導向資料庫
適用對象 階層式資料結構檔案,例如材料表(Bill of Material, BOM) 企業管理資訊系統 企業管理資訊系統 大型資料庫或多媒體資料庫
優點 概念之簡單性
資料庫的安全性
資料獨立性
資料完整性
良好效率 概念之簡單性
處理多關聯表
資料存取彈性
資料庫完整性
資料獨立性
標準化 概念之簡單性
結構獨立性
設計、實作與管理十分容易
即興式查詢能力強
強大資料庫管理系統(DBMS) 語意能力表達能力佳
良好的視覺表達能力
資料庫完整性
良好的再用性
支援動態行為處理的能力
缺點 實作困難度高
管理不易
缺乏結構獨立性
應用程式設計過於複雜
實務應用的限制
缺乏作業標準
處理語意能力弱 系統複雜性
缺乏結構獨立性
處理語意能力弱
耗用較多的硬體與軟體成本
設計門檻較高,不良設計經常造成資訊作業效能不佳的現象
容易造成資訊孤島後遺症
語意處理能力不佳 缺乏作業標準
資料存取複雜
進入門檻高學習時間較長
系統效能不佳
13.請說明資料庫設計的進行步驟。
【參考答案】:
茲將資料庫設計的流程詳述如下(圖五):
步驟一:需求分析
步驟二:概念資料庫設計
步驟三:選擇資料庫管理系統
步驟四:邏輯資料庫設計
步驟五:實體資料庫設計
步驟六:評估與改進
步驟七:完成資料庫設計的文件
圖五:資料庫的設計程序
14.請問資料庫的評估與選擇的重要因素爲何?
【參考答案】:
建議在選擇資料庫管理系統時,須考慮以下幾個基本條件:(1)完整的功能而且使用簡單,(2)完整的復原能力,(3)嚴密的資料庫系統之安全與保密的能力,(4)提供相當完整的公用程式或程式庫,(5)軟體公司的技術支援工程師具有維護資料庫的能力,(6)軟體公司提供各種系統文件與教育訓練的服務,(7)資料庫管理系統架構十分完整且程式設計容易,(8)佔用儲存容量不宜太大,(9)購置或租賃的成本可以符合企業本身的需求,與(10)資料庫的擴充及轉換至不同廠牌電腦之可行性。圖六是資料庫的評估與選擇考慮重要因素,主要的評估構面包括:功能、系統、供應商的支援能力、成本與產品等。
圖六:資料庫的評估與選擇考慮因素
15.請問資料庫管理師的主要工作職責為何?
【參考答案】:
就資料庫管理師的職掌而言,主要有以下工作項目:
(1)定義資料庫的架構主要工作項目包括資料庫系統的評估與選擇、資料庫系統的設計、統一規定資料名稱與格式、設計資料庫定義語言程式、規範資料庫的檔案存取方法與檔案儲存位置的工作。
(2)資料庫的管理主要工作項目包括資料庫的安全系統設計、保密作業程序建立、編寫資料庫管理文件與使用規範、監督評估資料庫的效能、訓練資料庫系統之使用人員等。
(3)資料庫的維護主要工作項目包括資料庫的更新、修改及回復工作,撰寫資料庫系統之維護手冊。
(4)改進資料庫的功能資料庫管理師必須定期檢討資料庫檔案處理的效率,並設法改善資料處理作業的可用性、可靠度與效能。
16.請問資料庫設計的主要原則爲何?
【參考答案】:
茲將設計一個資料庫系統時,必須把握以下幾項原則說明如下:
(1)整體性針對系統的整體需求進行檔案設計工作,將共用性的資料檔案與各次系統的界面定義出來,再進行各次系統的檔案內容的設計工作,減少資料重複以及維持資料的一致性
(2)安全性如何確保檔案的安全性是整個資料庫設計的重點,為了減少資料在處理過程發生失敗的情形,有必要設計一套安全性保護措施,使系統檔案獲得較佳的安全保障
(3)經濟性從成本與效益的觀點,分析設計資料模式與關聯表的優劣點,並以資訊系統維護成本的大小作為調整與修正檔案內容的依據;(4)保密性對於重要性程度較高的檔案必須制訂資料保密等級與管制措施,防止資料被駭客入侵或盜取一些重要資料
(5)同步作業的特性由於即時線上交易處理是資料庫系統的主要作業,因此,同步處理應重視資料更新之安全性與效率,將同步處理的工作荷負減低至最小程度;(5)彈性保留資料庫系統設計的彈性,做為未來資訊系統擴充或修改的用途
(6)重視使用者的功能性資料庫設計的重點在於滿足使用者的需求功能,進行資料庫設計工作以前,建議進行流程簡化與合理化的工作,並針對於使用者需求進行深度化分析,才能充分有效的掌握使用者的需求
(7)一流的資料品質實施品質保證作業程序,嚴格的控管資料的品質例如正確性、可靠性、彈性、效率與效能等。
17.請比較集中式、主從架構與分散式資料庫架構的優缺點。
【參考答案】:
基本上,資料庫的基本架構有下列三種型態:(1)集中式架構由大型電腦主機負責所有資料庫系統之處理作業,(2)主從式架構前台主機是負責資料的檢查、編輯與運算處理作業,而後台主機之資料庫管理系統則負責資料庫的查詢或更新的作業,等待資料處理完畢以後,再將它傳回前台主機,與(3)分散式架構分散式架構是將各種類型之資料庫分散在網際網路上之電腦主機,因此,該架構需要利用分散式資料庫管理系統來處理資料庫之相關作業。表三是三種資料庫架構的比較表。
表三:資料庫架構的比較表
比較基準 集中式架構 主從架構(二層或三層以上) 分散式架構
作法 資料庫存放在大型電腦主機 資料庫存放在後台電腦主機 資料庫存放在網際網路之不同電腦主機
作業環境 LAN LAN 或Internet Internet
適用應用對象 中小型企業資訊系統
CAD系統 企業ERP系統
單一量販店庫存管理
百貨公司資訊系統 企業集團資訊系統
便利超商連鎖店經營
量販店庫存管理系統
優點 資料集中管理
安全性佳 良好的作業效能
成本較低
擴充性與彈性較佳
可靠性與可用性佳
擴充性與彈性較佳
區域自主性且共同資料分享
缺點 長期的租賃成本高
大量的使用者作業效能差 安全性有待加強 安全性有待加強
系統複雜化
成本昂貴
維護不易
缺乏作業標準
18.請說明資料庫安全管理的作業程序。
【參考答案】:
如圖七所示,資料庫安全管理的作業內容主要是針對管理制度、作業、技術與應用等幾個項目,茲將其重點敘述如下:
圖七:資料庫系統安全管理的作業程序
(一)管理制度面
建立安全管理制度主要目的是將資料庫的安全保護措施納入正式作業程序,使資料庫系統安全漏洞的機會減少至最低程度,管理制度的範圍包括安全規劃、控制、標準與分析等。一般而言,一個良好的資料庫系統安全管理制度是建立在簡單化、實用性與標準化的基礎上。至於整體安全規劃的重點是技術、作業制度與加強資訊人員的道德倫理觀念等,安全控制的效果必須落實在自動化與標準作業流程當中,安全標準以符合國際標準為主,至於定期實施資料庫安全分析活動與建立保護的機制等皆是相當重要的工作項目。
(二)作業面
至於作業構面的重點是帳號與密碼控制、存取控制、流程控制、推論控制與資料加密等。一般而言,存取控制的作法有下列三種﹕(1)任意存取控制(Discretionary Access Control, DAC)允許資料擁有者將使用權力授與它人的一種做法,它的優點是作業彈性大,但是容易受到駭客入侵或一些電腦病毒的攻擊,(2)強制存取控制(Mandatory Access Control, MAC)它是一種高規格的機密保護措施,強制要求只有資料擁有者有使用權力,應用程式大部份是利用控制矩陣檢查使用者合法的使用權力,與(3)以角色為基礎控制(Role-based Access Control, RBAC)它是以角色來區分使用權力的一種作法。
推論控制是指利用一些推論規則(Inference Rules)檢查作業的合理性與正確性,流程控制是指針對作業程序的流向實施嚴格控制,資料加密是將傳送資料進行加密動作,至對方後再進行解密,圖八是加密系統的作業流程,明文經過加密處理成為密文,傳送至對方以後,再將密文進行解密處理成為明文。事實上,加密或解密是一種演算法(Algorithm),密碼系統有對稱式密碼系統與非對稱式密碼系統兩種作法,所謂「對稱式密碼系統」(Symmetric Cryptosystem)是屬於一種傳統密碼技術,傳送的一方以秘密金鑰(Secret Key)將所要傳送的訊息進行加密,接收一方再將密文利用相同的一把金鑰對此密文進行解密動作。另一種作法稱為非對稱式密碼系統(Asymmetric Cryptosystem),至於常見的一種作法是「公開金鑰密碼系統」,其作法是預先產生兩把金鑰,一把是公開的金鑰稱之為公開金鑰(Public Key)或加密金鑰(Enciphering Key),另一把金鑰是屬於個人私密的資料,稱之為私密金鑰(Private Key),也稱之為解密金鑰(Deciphering Key)。
圖八:加密系統的作業流程
此外,在執行作業方面可以採用使用者辨識系統、處理程序控制、監視與異動記錄檔的保留等方法。例如啟用資料庫異地備份系統,應用程式必須通過使用權控制(Access Control)的檢查等。有關交易安全方面,可以採用以下五項措施,(1)預防作業登入系統的檢查或使用者鑑別以及磁碟映射等,(2)回復機制業資料庫完整備份或交易資料差異備份,以及資料庫之復原(Restore)程序,(3)交易程序控制兩階段交付或死結防止措施,(4)同步交易控制兩階段鎖定、交易時間戮記順序法、多重版本同步控制法等,或(5)稽核作業定期或不定期實施稽核,防止駭客入侵或是一些非法存取資料庫的情形發生。
(三)技術面
技術的工作重點是密碼學與資訊安全相關技術的運用。至於通訊方面,建議採用SSL或SET的傳輸協定(Protocol),以資料加密作業方式進行傳輸,減少資料被竊取的機會。此外,為了保護資料庫的資料安全性,使用「數位浮水印」(Digital Watermarking)的技術也是一個相當有效的作法,它可以減少智慧財產權的資料被非法複製或散佈的機會。
(四)資料庫應用方面
資料庫應用方面的工作重點是實體控制、標準作業程序、稽核作業、安全教育訓練與資料庫管理手冊之建立等。針對一般日常資料處理工作,採取的管制措施如作業人員的管制、密碼檢查、安全政策的建立、應用程式的控制、定期檢查與稽核。因此,資料庫管理師在資料庫系統建立完成以後,第一項工作就是建立使用資料庫系統之個人帳號與密碼做為身分確認與鑑別之用途。其次,資料庫的拷貝與回復作業程序的建立、資料庫檔案的重整(Reorganization)與資料庫安全管制系統的設計等,必須特別加強才行。
19.解釋名詞
【參考答案】:
(1)主檔
它是一種資料處理的基本資料,其資料記錄必須有唯一的主鍵(Primary Key),通常主檔之資料的保存期限相當長而且變動性較少,例如學生檔或客戶檔是屬於一種主檔的類型。
(2)交易檔
它是一種更新主檔的記錄資料檔,一般在進行批次作業時,交易資料必須先行排序以後才與主檔進行更新的動作。例如收料檔、採購檔、傳票檔與學生的成績紀錄等是屬於交易檔的類型。
(3)表格檔
它是一種作為換算用途的資料檔案,例如飛機航班的時刻表或票價表、高鐵開車的時間表與票價表等。
(4)概念模式
它是一種以整體觀點定義資訊系統的資料結構及企業資料整體架構的詳細模型。基本上,概念性資料模式的主要用途是以高階程度、獨立的觀點描述資料模式的結構,抽象化程度較高。因此,概念性資料模式主要是系統分析師進行系統分析工作時,針對資料模型的內容與使用者溝通的一種重要工具,它也是邏輯資料模式或實體資料模式的基本資料來源。
(5)邏輯模式
它是一種描述資料結構之邏輯模型,主要包括﹕資料表格的欄位元、主鍵與資料欄位的相依性等。邏輯資料模式是根據概念性資料模式展開的資料結構,它須定義資料表之主鍵與複合鍵等屬性並進行正規化的作業,使資料檔案彼此之間保持良好的一致性。
(6)實體模式
它是一種描述資料實體結構的模型,包括﹕資料表格的欄位元、資料類型、欄位長度與一些限制條件等。實體資料模式必須考慮資訊系統的實體資料儲存需求,包括資料表的欄位長度、資料型態、存取方法與各種限制型態等,因此,實體資料模式之抽象化程度最低。
(7)結構獨立性
基本上,資料庫最大的優點是資料結構之獨立性(Structural Independency),其意義是應用程式不因資料庫內容與結構的改變必須進行變更的作業。
(8)DDL
DDL(Data Definition Language)資料定義語言主要是用來定義、修改、以及刪除關聯表之綱要結構或清除關聯表中的資料。一些常用的指令有create table, alter table, drop table, and truncate table。
(9)DML
DML(Data Manipulation Language)資料操作語言主要是用來操作關聯表之的資料包括擷取、插入、刪除與修改等動作。
(10)外部綱要
每一個應用程式或終端機使用者,對資料庫的資料需求往往不太相同,因此對各種資料需求,必須分別使用資料描述語言予以描述,此種描述即稱為「外部綱目」或稱「次綱目」(Sub-Schema),它除了可以描述使用者對資料庫的資料需求以外,又能保護資料庫的安全,檢查應用程式所欲尋取之資料是否合乎外部綱目所描述之範圍。
(11)內部綱要
描述資料在輔助儲存體內之實際儲存方式,如順序式組織、索引順序式組織或直接式組織等,例如IBM公司的DL/1或IMS系統即有HSAM、HISAM、HDAM與HIDM等四種儲存方式,CINCOM公司之TOTAL提供SAM及HSAM等二種儲存方式。
(12)ACID
為了確保整個交易過程的成功,須滿足以下四個條件即所謂「ACID」:
(1)不可分割性(Atomicity)對資料庫而言,在一個交易過程中,若不是所有運算皆被正確執行,就是任何運算皆未執行。
(2)一致性(Consistency)一筆交易在隔離下執行,若沒有其他交易同時執行時,一定可以確保資料庫的一致性。
(3)隔離性(Isolation)當多筆交易同時執行時,對每一組交易Tj及Ti而言,若不是Tj在Ti 開始前執行完畢,就是Tj在Ti執行完成後才開始。因此,每一筆交易並不知道系統中存在同時執行的其他交易。
(4)耐久性(Durability)在成功的完成一筆交易行為以後,該交易對資料庫所產生的改變是持久的。
(13)死結
死結發生的原因是因為兩個交易同時存取對方鎖定的資料導致的異常現象。
(14)COMMIT(被交付)
某一個交易活動T到達交付點(COMMIT POINT)時,即表示所有處理資料庫的運作已經執行成功而且所有在資料庫的交易運作被記錄在Log file當中(圖九)。換言之,交付是用來確保資料庫在異動過程能夠完全順利成功的一種作法。
圖九:移轉圖表示交易活動的過程
(15)ROLLBACK(被撤回)
某一個交易活動T執行並不成功時,所有在資料庫的交易運作必須被還原(undo)。換言之,在交易過程若發生失敗的情形,所有對於資料庫的交易運作必須被停止並還原至未更新以前的狀態。
(16)ODL
物件定義語言(Object Definition Language, ODL)可以用來建立物件資料庫綱要語意(Semantic)之相關結構。
(17)同質異型
所謂「運算子多型」(Operator Polymorphism)即是同一運算動作可以套用在不同型態物件上執行的能力,依據物件的不同特性,在實作時利用後期連結(Late Binging)方式連結一些適當的方法,例如輸出的動作是在印表機時,物件是執行Print動作,輸出是在螢幕時,物件執行Display動作。
(18)鍵值完整性限制
在一個關聯表中,鍵值是不能有虛無值(Null)的情形發生,主要原因是若鍵值是虛無值時,無法唯一識別關聯表之組值的功能,因此,關聯表必須符合鍵值之完整性。
(19)完整性限制
有關於關聯資料庫之完整性限制如下:
(1) 實體完整性限制(Entity Integrity Constraint)規範關聯式資料表的任何一個組值是不能有重複的情形發生,即兩個組值的鍵值屬性不能相同,否則即違反了實體一致性限制。
(2) 參考完整性限制(Referential Integrity Constraint)規範關聯式資料表格之間的關聯(Relationship)之完整性,兩個關聯表彼此之間存在關聯性,其中一個是被參考的關聯稱之為「父關聯」(Parent Relation):而另一個參考關聯的關聯稱之為「子關聯」(Children Relation),由子關聯之外來鍵(Foreign Key)參考父關聯的主鍵(Primary Key)所形成的一個關聯(Relationship)時,而此關聯必須遵循父關聯的主鍵值存在,子關聯的外來鍵值方能存在的限制。
(3) 鍵值完整性限制(Key Integrity Constraint)在一個關聯表中,鍵值是不能有虛無值(Null)的情形發生,主要原因是若鍵值是虛無值時,無法唯一識別關聯表之組值的功能,因此,關聯表必須符合鍵值之完整性。
(4) 使用者自訂的完整性限制(User Defined Integrity Constraint)依據使用者的需求自行定義記錄之新增或更新與刪除之限制條件,例如大學教授的聘用時,必須有教育部審核通過之證書字號才能符合規定的限制。
(20)父關聯
規範關聯式資料表格之間的關聯(Relationship)之完整性,兩個關聯表彼此之間存在關聯性,其中一個是被參考的關聯稱之為「父關聯」(Parent Relation):而另一個參考關聯的關聯稱之為「子關聯」(Children Relation),由子關聯之外來鍵(Foreign Key)參考父關聯的主鍵(Primary Key)所形成的一個關聯(Relationship)時,而此關聯必須遵循父關聯的主鍵值存在,子關聯的外來鍵值方能存在的限制。
(21)組值(Tuple)
每個關聯可以視為一個「表格」或是「資料表格」,它是由一群具有相同資料結構之屬性組合而成的一個集合,關聯的橫向列稱之為列(Row)或紀錄(Record)、組值(Tuple)或實例(Instance)。圖十是客戶基本資料表格,橫軸地部分就是組值(Tuple)。
圖十:客戶基本資料表格
(22)關聯綱要
為了描述關聯的資料結構有所謂「關聯綱要」(Relation Schema),它是指:「一群屬性組合而成的集合。」通常以R(A1,A2,A3,A4,…,An)表示某一個資料庫系統之關聯綱要。例如圖十的客戶基本資料表格若以關聯綱要來表示時,如下所示:
CUSTOMER (Cust_no, Cust_name, Add, Phone, Fax)
(23)定義域
定義域是指某一個屬性的資料允許可能範圍,例如性別是指男、女或陰陽人,人的身高的定義域為6~300公分。至於定義域之表示法如下:每一個屬性Ai是代表定義域Di的名稱,而關聯綱要之定義域D是dom(Ai)的集合,i=1,…,N。
(24)反正規化
由於經過正規化的關聯表可能將資料打散到許多不同的資料表格中,進行查詢時必須在不同表格存取資料及進行比對動作,畢竟是浪費許多資料處理的時間。為了提升資訊處理的效能,有必要進行反正規化工作。茲將反正規化的定義如下:「將一個已經正規化的關聯表分割成若干個實體紀錄或是合併數個關聯表的屬性成為一個實體紀錄,或是分割與合併兩者同時進行的作法。」
(25)水平分割
「水平分割」(Horizontal Partition)是進行反正規化的一種作法,它是指:「以共同的欄位值(Column Values)為基準點,將關聯表分割成數個關聯表。」因此,利用水平分割所產生的每一個檔案均具有相同的紀錄結構。如圖十一所示,將 “地區別” 欄位值以 “N”代表北部地區,“S”代表南部地區,“E”代表北部地區,“W”代表北部地區,經過水平分割以後有四個不同地區客戶基本資料檔。一般而言,水平分割的優點是減少資料處理時間與安全性較佳,其理由是資料經過篩選以後,處理的資料量可以大幅度的減少,或是防止不合法使用者侵入與使用資料庫的情形發生,若是資料庫毀損時,資料回復的時間比較短;其缺點是資料的一致性較差,有可能在更新時不同步的緣故,程式設計的複雜度較高,由於水平分割可能佔用數倍的儲存空間,必須增加一些額外儲存空間與處理的時間。
客戶基本資料檔﹕
客戶編號 客戶編號 地區別 住址 電話 FAX E-MAIL 客戶等級
(一)北部地區之客戶基本資料檔﹕
客戶編號 客戶編號 “N” 住址 電話 FAX E-MAIL 客戶等級
(二)南部地區之客戶基本資料檔﹕
客戶編號 客戶編號 “S” 住址 電話 FAX E-MAIL 客戶等級
(三)東部地區之客戶基本資料檔﹕
客戶編號 客戶編號 “E” 住址 電話 FAX E-MAIL 客戶等級
(四)西部地區之客戶基本資料檔﹕
客戶編號 客戶編號 “W” 住址 電話 FAX E-MAIL 客戶等級
圖十一:水平分割的實例
(26)垂直分割
其次,「垂直分割」(Vertical Partition)也是一種反正規化的作法,其意義為﹕「將一個關聯表的欄位分散到不同的實體紀錄,而在每一筆紀錄中重複儲存主鍵。」如圖十二所示,零件使用紀錄檔可以拆解成以下三個檔案。
零件使用紀錄檔﹕
零件編號 會計 工程 業務
(一)會計使用紀錄檔﹕
零件編號 會計
(二)工程零件使用紀錄檔﹕
零件編號 工程
(三)業務零件使用紀錄檔﹕
零件編號 業務
圖十二:垂直分割的實例
(27)表格合併
「表格合併」(Table Combination)也是一種反正規化的作法,其意義為﹕「將數個關聯表進行合併為一個關聯表。」茲將進行反正規化作業,表格合併的狀況說明如下
(狀況一):1對1關係的兩個實體,若其中一個實體只是選擇性的參與,而大部分情形下,兩個實體均同時存在,建議將兩個關聯表合併為一個。
【正規化的關聯表】
(一)學生檔
學號 姓名 就讀科系
(二)輔修申請資料
核准輔修申請代號 申請日期 申請條件 申請日期 學號
【反正規化後之關聯表】
(一)學生檔
學號 姓名 就讀科系 核准輔修申請代號 申請日期 申請條件 申請日期 學號
(狀況二):聯合實體存在非鍵屬性的多對多關係時,將其中一個實體屬性併入代表多對多關係的紀錄中,其作法是將另一個實體與其主鍵合併成一個複合鍵,目的是減少合併運算(JOIN)的作業。
【正規化的關聯表】
(一)供應商檔
供應商編號 住址 合約
(二)項次檔
零件編號 零件說明
(三)供應商及項次檔(聯合實體)
供應商編號 零件編號 價格
【反正規化後之關聯表】
(一)供應商檔
供應商編號 住址 合約
(二)供應商及項次檔(聯合實體)
供應商編號 零件編號 零件說明 價格
(狀況三):某一個實體是另一個實體的參資料,而這個實體不會參與其他資料庫關係,同時,它也是1對多的關係,而關係基數為1這一邊的實體實例只對應少數幾個關係基數為多的實體實例,此時可以將兩者合併為一個關聯表。
(一)倉庫檔
倉庫編號 位置 倉庫類型
(二)項次檔
零件編號 零件說明 倉庫編號
(三)項次與倉庫檔
零件編號 倉庫編號 位置 倉庫類型 零件說明
(28)磁碟陣列
磁碟陣列的作法就是將檔案等量分配到多個磁碟,同時進行平行I/O的讀取動作。上述作法,可以提升整體I/O執行效能,因而提升整體處理速度,同時,由於磁碟等量分配(Data Striping)的技術,等待貯列(Queue)的長度、搜尋時間旋轉時間大幅度減少,不僅達到較高傳輸速度,也達到磁碟負載平衡的效果。另一方面,磁碟陣列也使用同位元(Parity Bit)錯誤修正碼或是漢明碼(Hamming Code),鏡射(Mirroring)或投影(Shadowing)技術,同一資料寫入兩個完全相同的實體磁碟,當其中一個磁碟發生故障時,另一個磁碟立刻啟動,系統的可靠度亦跟著提高。
(29)資料庫調校
當資料庫的例行性作業例如查詢、交易或更新作業效能逐漸降低的情形,必要時須進行「資料庫的調校」(Database Tuning)工作。在進行調校以前,必須蒐集資料庫管理系統之相關資料,例如表格的大小、索引、某一段期間特定查詢與交易性執行次數、查詢和交易在不同的處理階段所需時間等,或是監控資料庫系統活動和過程的資訊,例如儲存空間的統計資料、I/O的效能、查詢或交易處理之效能、鎖定的比例值、批次作業的產出量(Throughput)。茲將資料庫的調校的工作項目敘述如下:
(a) 調整索引重整索引包括新索引建立與移除與重建索引。
(b) 進行檔案之反正規化將符合BCNF的檔案轉回第三正規化的檔案或將符合第三正規化的檔案回到第二正規化等。
(c) 查詢作業的調整與修正決定是否使用索引,進行水平分割或垂直分割,將多重巢狀的查詢改寫成多個單一查詢,減少使用暫存表格,合併(Join)時,利用次級鍵建立的叢集索引(Cluster Index)以減少作業時間,或是調整SELECT FROM查詢指令中多個表格的出現順序。
(d) 將程式中的鎖定次數太多的指令加以解除。
(e) 滿溢的資料傾印(Dumping),一些不必要交易日誌檔盡量減少。
(f) 將緩衝區大小最佳化。
(g) 適當安排作業行程表,例如選定批次作業的執行時間最好是線上即時交易處理的離峰時段。
(30)RSA
著名RSA公開金鑰加密演算法是1978年由Ron Rivest, Adi Shamir, 與Len Adleman三人所提發展出來,RSA加密演算法是結合數字理論(Number Theory)與質因素發展出來。假設有一對金鑰d與e,分別被用在解密及加密過程中。假設n是一個很大的整數,它是由兩個大的不同質數a和b相乘的結果。其中加密金鑰e是一個隨機選擇的數字,介於1到n之間,並與(a-1)×(b-1)互為質數。若含有明文的區塊p經過pemod n加密,由於mod n運算的執行時間是呈現指數比例增加,因此,要解開被加密過的明文是很困難的。然後解密金鑰d是經過細心的選擇,使得(pe)d mod n=p。因此,解密金鑰d可以從以下公式計算出來﹕d×e=1(mode ((a-1)×(b-1))。因此,d的合法接收者可以依據下列公式計算出來(pe)d mod n=p而解出p,並無必要拆解pe。
沒有留言:
張貼留言