Download 計算機概論 第二版 - 國立高雄應用科技大學

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
LOGO
計算機概論
第二版
Foundations of Computer Science
Chapter 14 資料庫
歐亞書局
14.1 簡介
資料儲存傳統地使用個別的、無關聯的檔案──有時稱為平坦
檔案(flat files)。
定義: 資料庫(database)是相關的、邏輯上一致的、被
一個組織中應用程式所運用的資料集合。
資料庫之優點
較少的重複
避免不一致性:如果同樣的資訊片段被存放在不只一個地方
中,那麼該資料所發生的任何改變都需要套用到資料被存放
的所有地方中。
效率
資料完整性
機密性
歐亞書局
p.346
14.2 資料庫管理系統
資料庫管理系統(database management system;DBMS) 用以
定義、產生和維護一個資料庫,它也允許了對資料庫中的資
料做管制性的存取。DBMS 有五個組成要素:硬體、軟體、
資料、使用者和程序。
圖 14.1 DBMS 組成要素
歐亞書局
p.347
硬體
硬體(hardware)是允許存取到資料的實體電腦系統。
軟體
軟體(software)是允許使用者存取、維護和更新資料的真正
程式。軟體管控了哪個使用者能夠存取資料庫中哪一部分的
資料。
資料庫
資料庫的資料是實際存放在儲存裝置中。在資料庫中,資料
是與存取它的軟體相分離的獨立實體,此分離允許組織可以
更換軟體而不必改變實際資料或其儲存的方式。
使用者
使用者(users)可區分成兩類,即終端使用者和應用程式。
歐亞書局
p.347
終端使用者
終端使用者(end users)是指能夠存取此資料庫而直接得到資
訊的人。終端使用者有兩種類型:資料庫管理者(database
administrators;DBA)和正常使用者。資料庫管理者擁有最高
的權力,可以管控其他使用者和他們對 DBMS 的存取、可以
授權某些權力給其他人,也能在任何時間解除這些權力。另
一方面,正常使用者僅能使用部分資料庫和有限制的存取。
應用程式
資料庫中另一些資料的使用者是應用程式(application
programs)。應用程式需要存取和處理資料。
程序
DBMS 最後一個構成要素是一套程序(procedures)或規則,
應該清楚地加以定義並且讓資料庫使用者遵循。
歐亞書局
p.347
14.3 架構
DBMS 有三階層架構:內部的、概念性和外部的。
圖 14.2 資料庫架構
歐亞書局
p.348
內部階層
決定資料實際儲存於儲存裝置中的地方為內部階層(internal
level),它處理低階存取方法和位元組如何轉換進出儲存裝
置。
概念性階層
概念性階層(conceptual level)定義資料的邏輯觀點。在此階
層中,定義了資料模型以及 DBMS 的主要功能。DBMS 將內
部資料觀點改變成使用者需要的外部資料觀點,概念性階層
是一個中間媒介並且可讓使用者免除處理內部階層。
外部階層
外部階層(external level)直接與使用者相互作用(終端使用
者或應用程式)。它把來自概念性階層的資料轉換成使用者
所熟悉的格式和觀點。
歐亞書局
p.348
14.4 資料庫模型
資料庫模型(database models)定義了資料的邏輯設計。有三
個模型已在使用中:階層式模型、網路模型和關聯式模型。
階層式模型
在階層式模型(hierarchical model)中,資料常被組織成為上
下顛倒的樹狀。每一個實體只有一個父但能夠有很多的子,
在階層的頂端有一個稱作樹根的實體。
圖 14.3 代表一所大學的一個階層式模型範例
歐亞書局
p.349
網路模型
在網路模型(network model)中,實體被組織成圖形,其中
有些實體可以透過幾條路徑存取。
關聯式模型
在關聯式模型(relational model)中,資料被組織成一個叫做
關聯的二維資料表。
歐亞書局
p.349
圖 14.4 代表一所大學的一個網路模型範例
歐亞書局
p.350
圖 14.5 代表一所大學的一個關聯式模型範例
歐亞書局
p.350
14.5 關聯式資料庫模型
在關聯式資料庫管理系統(relational database management
system;RDBMS)中,資料是表示成一組的關聯。
關聯
一個關聯(relation)是一個二維的資料表。RDBMS 將資料加
以組織,使得外部觀點看起來是一組關聯或資料表。
RDBMS 的關聯具有下列的特性:
名稱:在關聯式資料庫的每一個關聯應該有一個與其他關聯
不同的唯一名稱。
歐亞書局
p.350
屬性:在關聯中的每一個欄位稱為屬性(attribute)。每一個
屬性為該欄位所儲存的資料賦予意義。在資料表中的每一個
欄位都必須具有在關聯範圍內唯一的名字。一個關聯中屬性
的總數量稱為關聯度。注意,屬性名稱並沒有被存在資料庫
中;概念性階層使用屬性來替每個欄位賦予意義。
值組:在關聯中的每一列稱為值組(tuple),值組定義了一
組屬性值的集合。關聯中列的總數量稱為關聯基數
(cardinality)。注意,當值組增加或刪除時,關聯基數會改
變,這使得資料庫成為動態性的。
歐亞書局
p.351
圖 14.6 關聯之範例
歐亞書局
p.351
14.6 關聯運算
九個運算:插入、刪除、更新、選取、映射、合併、聯集、
交集和差異。
結構化查詢語言
結構化查詢語言(Structured Query Language;SQL)是一種
宣告式(而不是程序式)語言,表示使用者只需宣告想要執
行的程序而不用撰寫逐步執行的程序。
插入
插入運算(insert operation)是一元運算;它被應用於一個單
獨的關聯。這個運算把新的值組插入至關聯之中。
insert into RELATION-NAME
values (…,…,…)
value 子句定義了所有要插入相對應值組的屬性。
歐亞書局
p.351
圖 14.7 插入運算之範例
歐亞書局
p.352
刪除
刪除運算(delete operation)也是一元運算。這個運算刪除了
由關聯而來的準則,其所定義的一個值組。
delete from RELATION-NAME
where criteria
刪除的準則被定義在 where 子句之中。
歐亞書局
p.352
圖 14.8 刪除運算之範例
歐亞書局
p.353
更新
更新運算(update operation)也是一元運算;它應用於一個單
獨的關聯。此運算改變了值組的一些屬性值。
update RELATION-NAME
set attribute1 = value1, attribute2 = value2, …
where criteria
要改變的屬性被定義在 set 子句之中,而更新的準則是被定義
在 where 子句之中。
歐亞書局
p.353
圖 14.9 更新運算之範例
歐亞書局
p.353
選擇
選擇運算(select operation)是一元運算;也就是說,它應用
於一個單獨的關聯,並且產生出另一個關聯。這些所產生關
聯的值組(列)為原始關聯中值組的子集合。選擇運算使用
一些準則來選擇原始關聯中的一些值組。
select *
from RELATION-NAME
where criteria
星號(*)表示選擇所有的屬性。
歐亞書局
p.353
圖 14.10 選擇運算之範例
歐亞書局
p.354
映射
映射運算(project operation)也是一元運算,也會產生出另一
個關聯。這些所產生出來的關聯,其屬性(欄位)為原始關
聯中屬性的子集合。映射運算所產生的關聯,其值組有較少
的屬性。這個運算中值組(列)的數目會保持相同。
select attribute-list
from RELATION-NAME
新關聯的欄位名稱被清楚地列出。
歐亞書局
p.354
圖 14.11 映射運算之範例
歐亞書局
p.354
合併
合併運算(join operation)是二元運算;它取用兩個關聯並基
於其共同屬性來加以結合。
select attribute-list
from RELATION1, RELATION2
where criteria
屬性表是兩個輸入關聯的屬性之組合;準則明確地定義了用
來做為共同屬性之屬性。
歐亞書局
p.355
圖 14.12 合併運算之範例
歐亞書局
p.355
聯集
聯集運算(union operation)也是二元運算;它取用兩個關聯
來產生一個新關聯。然而,這兩個關聯是有所限制的;它們
必須具有相同的屬性。聯集運算產生一個新關聯,其中每一
個值組不是在第一個關聯或第二個關聯上,就是在兩者上。
select *
from RELATION1
union
select *
from RELATION2
歐亞書局
p.355
圖 14.13 聯集運算之範例
歐亞書局
p.356
交集
交集運算(intersection operation)也是二元運算;它取用兩個
關聯來建立一個新關聯。兩個關聯必須有相同的屬性。交集
運算產生一個新的關聯,其中每一個值組同時是兩個關聯上
的成員。
select *
from RELATION1
intersection
select *
from RELATION2
同樣地,星號表示選擇所有的屬性。
歐亞書局
p.356
圖 14.14 交集運算之範例
歐亞書局
p.357
差異
差異運算(difference operation)也是二元運算,它是應用於
具有相同屬性的兩個關聯。所產生關聯之值組是只在第一個
關聯中而不在第二關聯之中。
select *
from RELATION1
minus
select *
from RELATION2
歐亞書局
p.357
圖 14.15 差異運算之範例
歐亞書局
p.357
14.7 資料庫之設計
實體─關係模型(Entity-Relationship Model;ERM),以定義
出需要被維護之資訊的實體、這些實體的屬性與實體之間的
關係。
資料庫設計者會建立實體─關係(Entity-Relationship;E-R)
圖,來表示要被儲存之資訊的實體與那些實體間的關係。E-R
圖使用了一些幾何圖形:
1. 長方形代表實體集合
2. 橢圓型代表屬性
3. 菱形代表關係集合
4. 線條把屬性連接到實體集合,也可以把實體集合連接到關
係集合
歐亞書局
p.358
範例 14.1
圖 14.16 顯示了一個非常簡單的 E-R 圖,包含三個實體集合、它們
的屬性與實體集合間的關係。以菱形表示的關係可以是一對一、
一對多、多對一與多對多。有些屬性是著以暗色的,這些屬性是
在每個集合中被視為該集合之鍵值。
歐亞書局
p.358
圖 14.16 E-R 圖中實體、屬性與關係
歐亞書局
p.358
從 E-R 圖到關聯
針對 E-R 圖中的每個實體集合,我們會建立一個關聯(資料
表),其中有跟定義給該集合的 n 個屬性相關的 n 個欄位。
針對在 E-R 圖中的每一個關係集合,我們會建立關聯(資料
表)。這個關聯會為牽涉在這個關係中的每個實體集合之鍵
值配置一個欄位;如果關係有屬性的話(本例中沒有),也
會為關係本身每個屬性配置欄位。
歐亞書局
p.359
範例 14.2
如圖 14.17 所示,針對在圖 14.16 中定義的每一個實體集合,我們
會有三個關聯(資料表)。
圖 14.17 圖 14.16 中實體集合之關聯
歐亞書局
p.359
範例 14.3
圖 14.16 有兩個關係集合,授課與選課,每一個都被連接到兩個實
體集合。這些關係集合之關聯被加入到先前的實體集合之關聯
中,並且顯示在圖 14.18。
圖 14.18 圖 14.16 中 E-R 圖之關聯
歐亞書局
p.359
正規化
正規化(normalization)是將給定的關聯集合轉換到具有更結
實結構之新關聯集合的過程。正規化過程定義了一組階層式
正規形式(normal forms;NFs),這些正規式會形成一個階
層式結構。
第一正規式
當我們把實體或關係轉換到表格式的關聯時,會有一些關聯
在列或行的交集中出現了不只一個數值。這兩個關聯可以藉
由重複有這個問題存在的列,來加以正規化。
歐亞書局
p.360
圖 14.19 第一正規式之範例
歐亞書局
p.361
第二正規式
在每一個關聯中,我們需要有一個鍵值(稱作主要鍵值),
來讓所有其他屬性(欄位數值)有所依靠。當基於 E-R 圖之
關聯被建立時,我們可能會有一些複合鍵值(兩個或更多鍵
值的組合)。如果每一個非鍵值之屬性都依賴於整個複合鍵
值時,關聯便是第二正規式。
假如一些屬性只依賴於部分複合鍵值的話,該關聯就不是第
二正規式。
歐亞書局
p.361
圖 14.20 第二正規式之範例
歐亞書局
p.361
14.8 其他資料庫模型
另外兩個常見的模型是分散式資料庫和物件導向資料庫。
分散式資料庫
分散式資料庫(distributed database)其資料是被儲存於數部
電腦中,彼此之間透過網際網路(或一些私人廣域網路)來
溝通。每部電腦(或站)維護部分資料庫或整個資料庫。換
句話說,不是將資料分成片段並分別儲存於各站,就是將資
料複製到每一站。
片段分散式資料庫
在片段分散式資料庫(fragmented distributed database)中,資
料是局部性的。
歐亞書局
p.362
複製分散式資料庫
在複製分散式資料庫(replicated distributed database)中,每
一站都擁有另一站精確複製的資料。儲存於某一站資料所做
的修改,會確切地在每一站重複該動作,之所以有這種資料
庫的原因是為了安全因素。
物件導向資料庫
物件導向資料庫(object-oriented database)試著保有關聯式模
型的優點而且同時允許應用程式可以存取結構化的資料。在
物件導向資料庫中,定義了物件與其關聯。此外,每一個物
件能夠有可表示成欄位的屬性。
一般使用在物件導向資料庫的查詢語言是 XML(可擴充標示
語言)。
歐亞書局
p.362
Related documents