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