旗標計概書

Download Report

Transcript 旗標計概書

計算機概論
第十章
檔案與資料庫管理系統
陳維魁/陳邦治
旗標出版社
本章重點



2
本章將檔案與資料庫二個主題
多個相關檔案可組成資料庫系統
檔案與資料庫的相關知識及二者間的關連性與
差異性
大綱





3
資料階層
檔案組織
其他檔案結構
資料庫定義
資料庫系統的特性




資料庫管理系統
關連式資料庫
資料庫的正規化
「檔案系統」與「資料
庫系統」比較
資料階層 (1/3)


資料由低階到高階的順序為位元、位元組、欄位、記
錄、檔案及資料庫
位元(bit)
–
–

位元組(byte)
–
–
4
資料的最小單位
為二進位值0或1
一個「位元組」等於8個位元。有時稱位元組為「字元」
(character)
一個「位元組」代表一個符號。例如A、B、…、Z、a、b、
…z、0、1、…、9、+、-、*、/…等符號
資料階層(2/3)

欄位(field)
–
–

記錄(record)
–
–
5
「欄位」是由相關的「位元組」所構成
例如學生的姓名「欄位」是由「位元組」所構成(
如MARY,由M、A、R、Y四個字元所構成)
「記錄」是由相關的「欄位」所構成
例如學生的「記錄」是由學生的姓名、學號、email、通訊地址及聯絡電話等「欄位」所構成
資料階層(3/3)

檔案(file)
–
–

資料庫(database)
–
–
6
「檔案」是由相關的「記錄」所構成
例如班級的「檔案」是由所有學生的「記錄」所構
成
「資料庫」是由相關的「檔案」所構成
例如資工系的「資料庫」是由所有班級的「檔案」
所構成
範例
假設我們要將平時所使用的「通訊錄」儲存成一檔案,請問:
(1)欄位(fields)指的是什麼?
(2)資料記錄(records)指的是什麼?
(3)鍵值(keys)指的是什麼?
 解:
假設「通訊錄」中每位聯絡人的資料都包含了姓名、電話號碼、
手機號碼、電子郵件及地址共五項資料
(1)共有五個「欄位」,分別是「姓名」欄位、「電話號碼」欄位、
「手機號碼」欄位、「電子郵件」欄位及「地址」欄位
(2)資料記錄是指聯絡人資料
(3)鍵值是指「電話號碼」欄位

7
檔案組織


由資料階層的概念可知,檔案由相關記錄組成
常用的檔案組織
–
–
–
8
循序檔
直接存取檔
索引檔
循序檔(sequential file)


循序檔的結構是將資料記錄依照在檔案中的順序存放
在儲存裝置
當要存取檔案中之資料時,必須依照檔案中資料排列
的順序依序存取
–

9
例如某一檔案共有50筆資料記錄,若要存取檔案中第38筆資
料記錄時,則必須依第1筆、第2筆、第3筆、…、第37筆資料
的順序,最後才存取到所需要的第38筆資料
檔案結構未對記錄的長度做限制,因此可依記錄實際
的長度配置空間供記錄使用,所以不會浪費空間
循序存取(sequential access)



10
按照儲存的順序執行存
取動作的方式稱為「循
序存取」(sequential
access)
「循序存取」的特性是
速度慢、效率差
由於循序檔案結構只能
支援「循序存取」動作
,因此存取效率不佳
循序檔範例
直接存取檔(direct access file)


11
直接存取檔的建立方式是利用雜湊函數
(hashing function)來計算記錄的位址,再將記
錄存放在儲存裝置內對應的位址空間中
對記錄做存取動作時,也是透過雜湊函數計算
記錄在儲存裝置內對應的位址,然後直接到該
位址處存取記錄資料
「直接存取」(direct access)


12
透過雜湊函數直接計算記錄在儲存裝置中的位
址,並直接對儲存在該位址的記錄資料進行存
取的動作稱為「直接存取」(direct access)
「直接存取」的特點是速度快,效率佳
直接存取檔特性


13
直接存取檔可支援循序存取及直接存取動作
。但是因為理想的雜湊函數不容易設計,所
以不容易實作
因為直接存取檔案結構限制所有記錄的長度
必需相同,因此相同的檔案若利用直接存取
檔案結構來存放所需求的儲存區空間量是最
大的
直接存取檔範例

觀察右圖,請留意
以下二項特性:
–
–
14
1.同屬於同一檔案
的五筆記錄應使用
相同大小的記憶體
空間
2.記錄可不使用連
續的記憶體空間
索引檔(index file)



15
索引檔的建立方式是利用一個索引表(index
table)儲存檔案的所有記錄在儲存裝置內之位
址
若要存取檔案中之記錄內容,都必須先透過索
引表找到記錄在儲存裝置的位址,再到該位址
處存取記錄的內容
索引表實作的方式可利用一維陣列來製作,利
用陣列的註標值(index)做為記錄編號,而陣列
元素內容則是存放記錄在儲存裝置內之位址
索引檔範例
索引檔可支援循序存取及
直接存取動作。雖然直接
存取動作比直接存取檔慢
且儲存區空間的需求量比
循序檔高,但是因為索引
檔較直接存取檔容易實作
,而且存取速度又比循序
檔快相當多,因此索引檔
是使用普及度最高的檔案
結構
16
檔案組織的選擇考量

檔案中記錄的大小
–

成長性(growth)
–

單次處理中檔案記錄被處理的平均數。檔案中記錄的活動性
高則可採用循序檔
揮發性(volatility)
–
17
成長性是指檔案中的記錄之欄位數目及長度變化情形。若檔
案中記錄的成長性高則採用直接存取檔為佳
活動性(activity)
–

若檔案中記錄的大小皆相同,則採用三種方法皆可,但是若
不相同則採用循序檔與索引檔為佳。(固定或不固定)
檔案記錄新增及刪除的頻率。若檔案中記錄的揮發性高則採
用直接存取檔為佳
範例
假設有一索引循序檔的第一個磁柱有如下的資料(所示數目為各資料記
錄之鍵值):
第一磁軌 5 8 13 20 25
第二磁軌 27 30 38 42 51
第三磁軌 55 60 67 73 80
第四磁軌 84 91 96 105 111
第五磁軌 溢位區(Overflow area)
(1)試以上列資訊寫出相關之索引部份。
(2)如由此檔案讀取鍵值為38之記錄時,其搜尋步驟為何?
(3)若插入鍵值為68之記錄時,其結果為何?
18
範例(cont.)
(1)索引表:以各別磁
軌中所儲存的最大鍵
值做為索引表的內容
鍵值
磁軌編號
1
25
2
51
3
80
4
111
(2)先由索引表中確認資料所在磁軌編號為2,再由第二號磁軌
中找尋目標資料
19
(3)若插入鍵值為68的記錄,由於鍵值為68之記錄會插入第三
磁軌中,第三磁軌的最大鍵值將由原本的80變成73且鍵值80的資
料將被移到溢位區(即第五磁軌)。索引表及磁軌完整內容如下:
索引表
鍵值
磁軌編號
20
1
25
2
51
3
73
4
111
第一磁軌 5 10 13
第二磁軌 27 30 40
第三磁軌 55 60 67
第四磁軌 84 91 96
第五磁軌 80
20 25
42 51
68 73
105 111
主檔與異動檔

主檔(master file)
–

異動檔(transaction file)
–

21
儲存全部的資料,因此資料最完整且不宜經常修改
用來記載某段時間內主檔修正的內容資料
例如台灣大學的學生學籍資料檔案便是一個主檔,而
在某一學期間,學生可能因為搬家而更改通訊地址或
電話的資料便會記載在主檔對應的異動檔中,待學期
結束後才會執行將該學期中儲存學生變動資料的異動
檔與主檔資料合併的動作
相對檔 (relative file)


22
相對檔 (relative file)會以記錄中某一特定欄位之內容直
接做為記錄存放在儲存設備的位址,這個特殊的欄位
稱為「相對鍵」(relative key)
為了確保不同的資料記錄存放在儲存設備的位址不相
同,因此不同記錄之相對鍵值不可相同。例如,某公
司的員工檔案建置時,已設定員工編號皆不相同,則
可利用員工編號直接做為「相對鍵」,將來對員工資
料記錄執行存取動作時便可直接到儲存設備位址為員
工編號處直接存取該員工之資料
反轉檔 (inverted file)



23
反轉檔是指利用輔助鍵來找出記錄在檔案中的
位址及對應之主要鍵的檔案結構
一般的檔案結構是由主要鍵來找出記錄在檔案
中的位址
反轉檔應該會與一般的檔案結構有很大的不同
範例
假設有以下學生成績資料表:
24
記錄名稱
學號
姓名
物理成績
化學成續
A
001
陳一
100
90
B
002
林二
72
63
C
003
張三
66
30
D
004
李四
45
20
E
005
王五
15
83
F
006
周六
94
100
G
007
蔡七
89
87
H
008
馬八
54
77
I
009
施九
81
53
J
010
吳十
77
10
將物理成績之分數依「40分以下」、「41分-60分」、「
61分-80分」及「81分以上」分為四類,並依十位學生所
得之分數建立鏈結串列如下
25
將化學成績之分數依「40分以下」、「41分-60分」、「
61分-80分」及「81分以上」分為四類,並依十位學生所
得之分數建立鏈結串列如下
26
「姓名欄位反轉檔」
27
「物理成績欄位反轉檔」
28
「化學成績欄位反轉檔」
29
以化學成績「81分以上」為例來說明。「81分以上」的鏈結個數為4
,代表化學成績「81分以上」者有4位,化學成績「81分以上」的第
一筆記錄名稱為A,第二筆記錄名稱為E (由記錄A的指標欄位內容得
知下一筆記錄為E),第三筆記錄名稱為F(由記錄E的指標欄位內容得
知下一筆記錄為F),第四筆記錄名稱為G(由記錄F的指標欄位內容得
知下一筆記錄為G)
「全部反轉」及「部份反轉」

「全部反轉」(fully inverted)
–
–

「部份反轉」(partially inverted)
–
–
30
指所有記錄均有指標指到
例如上例中的「姓名欄位反轉檔」
指只有部份筆記錄有指標指到
例如上例中的「物理成績欄位反轉檔」及「化學成
績欄位反轉檔」
資料庫定義


31
常見的資料庫定義為資料庫是一群相關資料的
集合體
資料庫內部的資料會以最少重覆的情況來儲存
並可供多人同時使用
資料庫定義 (cont.)

James Brandly定義
–

Alfonso F. Cardenas定義
–

資料庫系統是某些事件(occurrences)所組成的集合,這些
事件內包含有記錄型態,且記錄型態彼此間存在著某種特殊
關係
C. J. Date定義
–
32
資料庫系統是某些交互參考檔(cross-referenced files)集合
資料庫系統是一群可被操作的資料之集合,這些資料可被應
用程式所使用
資料庫系統成員





33
計算機硬體
資料庫管理系統(Database Management System
;DBMS)
資料庫內部的資料
資料庫管理者(Database administrator;DBA)
資料庫使用者
資料庫管理者的工作




34
決定資料庫的結構、資料儲存方式及存取方式
根據需求重建、變更資料庫的結構
建立資料庫的安全防護體系、備份(backup)及
回復(recovery)策略
幫助使用者使用資料庫
資料庫系統的特性 (1/4)

「共享性」(shareable)
–

「不重複性」(non-redundancy)
–
35
指資料庫系統允許多個使用者同時使用同一筆資料
指同一份資料在資料庫中被多人同時使用時,此時
多個使用者可只共享同一份資料,不會因為多人同
時使用便將資料複製多份
資料庫系統的特性 (2/4)

「完整性」(integrity)
–
–
–
36
指資料庫內的資料只有被授權的合法使用者有權更
改,未獲授權的使用者不得自行變更資料庫的內容
只有教務處的學生成績系統管理者可在被合法授權
的情形下更改學生成績(可能是因授課教師疏忽而
輸入錯誤的成績,因此必須更改成績)
資料庫管理者可以藉由設定某些檢查程序,以保護
資料庫的完整性
資料庫系統的特性 (3/4)

「資料獨立性」(data independency)
–
–
–
37
指應用程式與資料庫的內部儲存方式沒有任何的關
連,如此一來當使用者寫程式必須利用到資料庫的
內容時或必須使用資料庫時,不需要知道或考慮資
料庫的內部結構
當變更所使用的應用程式時,便不需要對資料庫的
內部儲存方式做任何型式的修正
具獨立性特徵的資料庫才容易被使用
資料庫系統的特性 (4/4)

「安全性」(security)
–

「一致性」(consistent)
–
–
38
指藉由適當存取控制(access control)機制及加密機
制(encryption)來保護資料庫中資料的安全性
「一致性」是「不重複性」的擴充
若同一份資料在資料庫中被儲存多份,則有可能因
為其中的某一份被修改了,而使得該份被修改的資
料與其他資料的內容不一致,但由於資料庫系統已
經具有「不重複性」,因此「一致性」自然成立
資料庫系統常見的缺點

39
若使用資料庫系統來取代傳統的檔案系統會使
得系統的建置及維護成本提高,因為「不重複
性」使得相同資料只有一份,若發生意外損害
則可能無法回復
資料庫管理系統





40
完整的資料庫系統架構
綱目與次綱目
資料庫管理系統內部結構
結構化查詢語言的分類與用法
資料庫的邏輯結構
完整的資料庫系統架構

ANSI/SPARC所定義完整資料庫系統架構共分
為三個階層
–
–
–
41
外部層(external level)
概念層(conceptual level)
內部階層(internal level)
外部層(external level)


42
外部層是最接近使用者的階層,本層是以個別
使用者觀點所見到的資料庫的內容(view)
本層具資料獨立性,藉由Sub-schema定義
概念層(conceptual level)



43
概念層是以整體使用者為觀點,並且是內部層
與外部層間溝通的橋樑,在概念層中資料以
SQL來定義
一筆概念記錄可能等於多筆外部記錄或多筆儲
存記錄
本層藉由Conceptual schema或schema定義
內部層(internal level)



44
內部層是資料庫內資料實際的儲存方式之階層
包括記錄實際儲存順序、各欄位的資料特性及
索引等
本層之資料具資料相依性並藉由Internal
schema定義
ANSI/SPARC 完整資料庫系統架構
45
實體資料獨立性與邏輯資料獨立性

實體資料獨立性
–
–

邏輯資料獨立性
–
46
當資料庫實體之內部資料格式有更動時,程式本身不須修改
便可建立邏輯資料模式
作法是指當內部層結構改變時,只要變更內部層/概念層之對
映關係即可,而概念層/外部層之對映關係不需變動
當資料庫實體之內部資料格式有更動時,可由資料庫管理系
統(DBMS)來修改即可改,而使用者程式不須修改
綱目與次綱目

同一個綱目可能可以導出多個次綱目,綱目及次綱目
的定義及區別介紹如下:
–
綱目(schema)


–
次綱目(subschema)


47
綱目又稱為邏輯資料庫描述(logical data base description)是資
料庫設計者或管理者在建立資料庫時利用綱目定義語言(Schema
Definition Language;SDL)所設計而成
利用綱目可定義資料庫的邏輯概觀(logical view)
次綱目是綱目的一個子集合,主要的作用是定義及控制存取模
式的邏輯架構
可利用次綱目來定義個別使用者所建立之資料庫的邏輯概觀
(logical view)
綱目與次綱目的關係
48
資料庫管理系統內部結構

資料庫管理系統(DBMS)的內部結構共分為三
個部份,分別是
–
–
–
49
使用者介面( user interfaces)
資料庫管理系統子系統(DBMS subsystems)
資料庫管理系統引擎(DBMS engine)
資料庫管理系統內部結構--使用者介面


50
使用者介面的功能是用來與使用者、應用程式
及管理者溝通
與外部階層溝通的工作是透過使用者介面來完
成
資料庫管理系統內部結構--資料庫管理系統子系統

51
本部份一般會包含備份復原、安全管理、效能
管理及應用發展等子系統
資料庫管理系統內部結構--資料庫管理系統引擎



52
資料庫管理系統引擎本身應具備運算的能力,
所有針對資料庫的存取動作都必須透過資料庫
管理系統引擎對作業系統提出輸出入工作請求
來完成
DBMS Engine就是DBMS與內部階層溝通的橋
樑
與內部階層溝通的工作是透過資料庫管理系統
引擎來完成
結構化查詢語言的分類與用法



使用者可利用結構化查詢語言(Structured
Query Language;SQL)來使用資料庫
SQL語言可由終端機以交談式的方式直接輸入
,也可以含括在程式中
SQL包括三種語言
–
–
–
53
資料定義語言(Data Definition Language;DDL)
資料處理語言(Data Manipulation Language;DML)
資料控制語言(Data Control Language;DCL)
資料定義語言

54
可利用此種
語言在外部
、概念及內
部三個階層
建立新的表
格或刪除原
來已存在的
表格
資料處理語言

55
可利用此種語
言來操作己建
立好的表格,
如進行新增資
料、刪除、修
改、存取、搜
尋、更新與四
則運算等動作
資料控制語言


資料控制語言是用來控制對資料庫中資料存取
的權限,藉以達到保護資料的安全性。
範例:
將EMPLOYEE表格的所有存取權限開放給ROBERT
GRANT ALL ON EMPLOYEE TO ROBERT;
56
使用者使用「資料庫的實體內容」模式
57
使用者會利用SQL當作工具,透過DBMS及作業系統當作
介面來存取「資料庫的實體內容」,對應圖形如上圖
資料庫的邏輯結構

常見的資料庫結構
–
–
–
58
階層結構(hierarchical structure)
網路結構(network structure)
關聯結構(relational structure)
階層結構(hierarchical structure)

階層結構是一種類似樹狀結構的資料組織
–
–
–
–

59
必須是連通圖(connected graph)
不允許迴路(cycle)
樹中節點數目必須恰比邊的數目多1
亦需滿足每個子節點只能有一個父節點的規定
早期IBM所開發之IMS(Information
Management System)及DL/1等系統即是採用
階層結構
階層結構 (cont.)
60
階層結構因具有與樹狀結構相同的特性,所以可以
使用既有的樹狀結構演算法及結構的建立及刪除均
很容易。本結構最主要的缺點是只能由上而下,依
序檢索資料,因此搜尋動作較耗時
網路結構(network structure)



61
網路結構類似樹狀的組織
結構,但取消了每個子節
點只能有一個父節點和在
結構中不能有迴路的限制
,也就是說任一節點可有
任意數目的父節點
主要的特點是具有較大的
彈性,但結構較樹狀結構
複雜許多
早期HP所開發之IMAGE
及Honeywell的IDS等系統
即是採用網路結構
關聯結構(relational structure)



62
關聯結構利用由一些行與列所組成的表格來表
達資料間的關係
優點是適合表達較複雜的關係,缺點則是當查
詢的數目很少時,採用本結構的效率將不佳
DB2 、INGRES 、ORACLE 、SYBASE、
dBASE III PLUS、ACCESS等系統採用木結構
關聯結構範例
63
關連式資料庫


64
關連式資料庫系統是由一群相關的表格(table)
所組成,表格中的tuple在系統中沒有順序性
關連式資料庫系統使用實體關係圖(EntityRelationship Diagram;ERD)作為設計關連式資
料庫及描述實體關係圖(Entity-Relationship
Model;E-R Model)時的工具
關連式資料庫範例
65
資料庫的正規化

66
正規化的目的是為了排除資料的重覆性以及去
除所有會影響操作正確性之資料間的關係
「檔案系統」與「資料庫系統」比較
67