第十章檔案與資料庫管理系統陳邦治編著旗標出版社資電學院計算機概論F78102本章重點本章將檔案與資料庫二個主題多個相關檔案可組成資料庫系統檔案與資料庫的相關知識及二者間的關連性與差異性3大綱資料階層檔案組織其他檔案結構資料庫定義資料庫系統的特性資料庫管理系統關連式資料庫資料庫的正規化「檔案系統」與「資料庫系統」比較334資料階層(1/3)資料由低階到高階的順序為位元、位元組、欄位、記錄、檔案及資料庫位元(bit)–資料的最小單位–為二進位值0或1位元組(byte)–一個「位元組」等於8個位元。有時稱位元組為「字元」(character)–一個「位元組」代表一個符號。例如A、B、…、Z、a、b、…z、0、1、…、9、+、-、*、/…等符號5資料階層(2/3)欄位(field)–「欄位」是由相關的「位元組」所構成–例如學生的姓名「欄位」是由「位元組」所構成(如MARY,由M、A、R、Y四個字元所構成)記錄(record)–「記錄」是由相關的「欄位」所構成–例如學生的「記錄」是由學生的姓名、學號、e-mail、通訊地址及聯絡電話等「欄位」所構成6資料階層(3/3)檔案(file)–「檔案」是由相關的「記錄」所構成–例如班級的「檔案」是由所有學生的「記錄」所構成資料庫(database)–「資料庫」是由相關的「檔案」所構成–例如資工系的「資料庫」是由所有班級的「檔案」所構成7範例假設我們要將平時所使用的「通訊錄」儲存成一檔案,請問:(1)欄位(fields)指的是什麼?(2)資料記錄(records)指的是什麼?(3)鍵值(keys)指的是什麼?解:假設「通訊錄」中每位聯絡人的資料都包含了姓名、電話號碼、手機號碼、電子郵件及地址共五項資料(1)共有五個「欄位」,分別是「姓名」欄位、「電話號碼」欄位、「手機號碼」欄位、「電子郵件」欄位及「地址」欄位(2)資料記錄是指聯絡人資料(3)鍵值是指「電話號碼」欄位8檔案組織由資料階層的概念可知,檔案由相關記錄組成常用的檔案組織–循序檔–直接存取檔–索引檔9循序檔(sequentialfile)循序檔的結構是將資料記錄依照在檔案中的順序存放在儲存裝置當要存取檔案中之資料時,必須依照檔案中資料排列的順序依序存取–例如某一檔案共有50筆資料記錄,若要存取檔案中第38筆資料記錄時,則必須依第1筆、第2筆、第3筆、…、第37筆資料的順序,最後才存取到所需要的第38筆資料檔案結構未對記錄的長度做限制,因此可依記錄實際的長度配置空間供記錄使用,所以不會浪費空間10循序存取(sequentialaccess)按照儲存的順序執行存取動作的方式稱為「循序存取」(sequentialaccess)「循序存取」的特性是速度慢、效率差由於循序檔案結構只能支援「循序存取」動作,因此存取效率不佳循序檔範例11直接存取檔(directaccessfile)直接存取檔的建立方式是利用雜湊函數(hashingfunction)來計算記錄的位址,再將記錄存放在儲存裝置內對應的位址空間中對記錄做存取動作時,也是透過雜湊函數計算記錄在儲存裝置內對應的位址,然後直接到該位址處存取記錄資料12「直接存取」(directaccess)透過雜湊函數直接計算記錄在儲存裝置中的位址,並直接對儲存在該位址的記錄資料進行存取的動作稱為「直接存取」(directaccess)「直接存取」的特點是速度快,效率佳13直接存取檔特性直接存取檔可支援循序存取及直接存取動作。但是因為理想的雜湊函數不容易設計,所以不容易實作因為直接存取檔案結構限制所有記錄的長度必需相同,因此相同的檔案若利用直接存取檔案結構來存放所需求的儲存區空間量是最大的14直接存取檔範例觀察右圖,請留意以下二項特性:–1.同屬於同一檔案的五筆記錄應使用相同大小的記憶體空間–2.記錄可不使用連續的記憶體空間15索引檔(indexfile)索引檔的建立方式是利用一個索引表(indextable)儲存檔案的所有記錄在儲存裝置內之位址若要存取檔案中之記錄內容,都必須先透過索引表找到記錄在儲存裝置的位址,再到該位址處存取記錄的內容索引表實作的方式可利用一維陣列來製作,利用陣列的註標值(index)做為記錄編號,而陣列元素內容則是存放記錄在儲存裝置內之位址16索引檔範例索引檔可支援循序存取及直接存取動作。雖然直接存取動作比直接存取檔慢且儲存區空間的需求量比循序檔高,但是因為索引檔較直接存取檔容易實作,而且存取速度又比循序檔快相當多,因此索引檔是使用普及度最高的檔案結構17檔案組織的選擇考量檔案中記錄的大小–若檔案中記錄的大小皆相同,則採用三種方法皆可,但是若不相同則採用循序檔與索引檔為佳。(固定或不固定)成長性(growth)–成長性是指檔案中的記錄之欄位數目及長度變化情形。若檔案中記錄的成長性高則採用直接存取檔為佳活動性(activity)–單次處理中檔案記錄被處理的平均數。檔案中記錄的活動性高則可採用循序檔揮發性(volatility)–檔案記錄新增及刪除的頻率。若檔案中記錄的揮發性高則採用直接存取檔為佳18範例假設有一索引循序檔的第一個磁柱有如下的資料(所示數目為各資料記錄之鍵值):第一磁軌58132025第二磁軌2730384251第三磁軌5560677380第四磁軌849196105111第五磁軌溢位區(Overflowarea)(1)試以上列資訊寫出相關之索引部份。(2)如由此檔案讀取鍵值為38之記錄時,其搜尋步驟為何?(3)若插入鍵值為68之記錄時,其結果為何?19解(1)索引表:以各別磁軌中所儲存的最大鍵值做為索引表的內容磁軌編號鍵值1252513804111(2)先由索引表中確認資料所在磁軌編號為2,再由第二號磁軌中找尋目標資料20解(3)若插入鍵值為68的記錄,由於鍵值為68之記錄會插入第三磁軌中,第三磁軌的最大鍵值將由原本的80變成73且鍵值80的資料將被移到溢位區(即第五磁軌)。索引表及磁軌完整內容如下:索引表磁軌編號鍵值1252513734111第一磁軌510132025第二磁軌2730404251第三磁軌5560676873第四磁軌849196105111第五磁軌8021主檔與異動檔主檔(masterfile)–儲存全部的資料,因此資料最完整且不宜經常修改異動檔(transactionfile)–用來記載某段時間內主檔修正的內容資料例如台灣大學的學生學籍資料檔案便是一個主檔,而在某一學期間,學生可能因為搬家而更改通訊地址或電話的資料便會記載在主檔對應的異動檔中,待學期結束後才會執行將該學期中儲存學生變動資料的異動檔與主檔資料合併的動作22範例請說明將如何將舊的主檔和異動檔合併成新的主檔的作法解:根據異動檔的鍵值內容找出資料在舊的主檔的位置並將異動檔的內容更新到舊的主檔中對應之內容以得到新的主檔。23相對檔(relativefile)相對檔(relativefile)會以記錄中某一特定欄位之內容直接做為記錄存放在儲存設備的位址,這個特殊的欄位稱為「相對鍵」(relativekey)為了確保不同的資料記錄存放在儲存設備的位址不相同,因此不同記錄之相對鍵值不可相同。例如,某公司的員工檔案建置時,已設定員工編號皆不相同,則可利用員工編號直接做為「相對鍵」,將來對員工資料記錄執行存取動作時便可直接到儲存設備位址為員工編號處直接存取該員工之資料24反轉檔(invertedfile)反轉檔是指利用輔助鍵來找出記錄在檔案中的位址及對應之主要鍵的檔案結構一般的檔案結構是由主要鍵來找出記錄在檔案中的位址反轉檔應該會與一般的檔案結構有很大的不同25範例假設有以下學生成績資料表:記錄名稱學號姓名物理成績化學成續A001陳一10090B002林二7263C003張三6630D004李四4520E005王五1583F006周六94100G007蔡七8987H008馬八5477I009施九8153J010吳十771026將物理成績之分數依「40分以下」、「41分-60分」、「61分-80分」及「81分以上」分為四類,並依十位學生所得之分數建立鏈結串列如下27將化學成績之分數依「40分以下」、「41分-60分」、「61分-80分」及「81分以上」分為四類,並依十位學生所得之分數建立鏈結串列如下28「姓名欄位反轉檔」29「物理成績欄位反轉檔」30「化學成績欄位反轉檔」以化學成績「81分以上」為例來說明。「81分以上」的鏈結個數為4,代表化學成績「81分以上」者有4位,化學成績「81分以上」的第一筆記錄名稱為A,第二筆記錄名稱為E(由記錄A的指標欄位內容得知下一筆記錄為E),第三筆記錄名稱為F(由記錄E的指標欄位內容得知下一筆記錄為F),第四筆記錄名稱為G(由記錄F的指標欄位內容得知下一筆記錄為G)31「全部反轉」及「部份反轉」「全部反轉」(fullyinverted)–指所有記錄均有指標指到–例如上例中的「姓名欄位反轉檔」「部份反轉」(partiallyinverted)–指只有部份筆記錄有指標指到–例如上例中的「物理成績欄位反轉檔」及「化學成績欄位反轉檔」32資料庫定義常見的資料庫定義為資料庫是一群相關資料的集合體資料庫內部的資料會以最少重覆的情況來儲存並可供多人同時使用33資料庫定義(cont.)JamesBrandly定義–資料庫系統是某些交互參考檔(cross-referencedfiles)集合AlfonsoF.Cardenas定義–資料庫系統是某些事件(occurrences)所組成的集合,這些事件內包含有記錄型態,且記錄型態彼此間存在著某種特殊關係C.J.Date定義–資料庫系統是一群可被操作的資料之集合,這些資料可被應用程式所使用34資料庫系統成員計算機硬體資料庫管理系統(DatabaseManagementSystem;DBMS)資料庫內部的資料資料庫管理者(Databaseadministrator;DBA)資料庫使用者35資料庫管理者的工作決定資料庫的結構、資料儲存方式及存取方式根據需求重建、變更資料庫的結構建立資料庫的安全防護體系、備份(backup)及回復(recovery)策略幫助使用者使用資料庫36資料庫系統的特性(1/4)「共享性」(shareable)–指資料庫系統允許多個使用者同時使用同一筆資料「不重複性」(non-redundancy)–指同一份資料在資料庫中被多人同時使用時,此時多個使用者可只共享同一份資料,不會因為多人同時使用便將資料複製多份37資料庫系統的特性(2/4)「完整性」(integrity)–指資料庫內的資料只有被授權的合法使用者有權更改,未獲授權的使用者不得自行變更資料庫的內容–只有教務處的學生成績系統管理者可在被合法授權的情形下更改學生成績(可能是因授課教師疏忽而輸入錯誤的成績,因此必須更改成績)–資料庫管理者可以藉由設定某些檢查程序,以保護資料庫的完整性38資料庫系統的特性(3/4)「資料獨立性」(dataindependency)–指應用程式與資料庫的內部儲存方式沒有任何的關連,如此一來當使用者寫程式必須利用到資料庫的內容時或必須使用資料庫時,不需要知道或考慮資料庫的內部結構–當變更所使用的應用程式時,便不需要對資料庫的內部儲存方式做任何型式的修正–具獨立性特徵的資料庫才容易被使用39資料庫系統的特性(4/4)「安全性」(security)–指藉由適當存取控制(accesscontrol)機制及加密機制(encryption)來保護資料庫中資料的安全性「一致性」(consistent)–「一致性」是「不重複性」的擴充–若同一份資料在資料庫中被儲存多份,則有可能因為其中的某一份被修改了,而使得該份被修改的資料與其他資料的內容不一致,但由於資料庫系統已經具有「不重複性」,因此「一致性」自然成立40資料庫系統常見的缺點若使用資料庫系統來取代傳統的檔案系統會使得系統的建置及維護成本提高,因為「