2018年2月15日 星期四

計概B-01資料庫系統


B-1.1資料庫系統的組成

B-1.1.1資料庫(Database)

1.定義

 (1)資料庫是儲存資料的地方。資料庫是由一群相關資料的集合體。

 (2)一個資料庫系統中可以有多個資料庫,每個資料庫可存放多個電子檔案(File)

2.使用資料庫的好處

 (1)資料安全性(Security)資料庫管理者負責維護管理。

 (2)降低資料重複性(Redundancy):正規化(Normalization)

 (3)資料一致性(Consistency):利用關聯式資料庫的外來鍵(Foreign Key; FK)連結關聯表。

 (4)資料共享性(Sharing):透過資料庫系統的SQL(Structured Query Language)/DML(Data Manipulation Language)與同步控制(Concurrency Control)機制,來新增、更新、刪除及共享資料。

 (5)資料完整性(Integrity):利用整合性規則,檢查錯誤及不合法的資料值,確保資料正確。

 (6)資料獨立性(Independent):每一項資料都具有獨立性,資料結構和存取方法是固定的。

 (7)性能優越性(Superiority):以最短存取時間迅速回應各項需求。

 (8)標準化(Standardize):透過資料集中化及存取介面標準化來達成。

 (9)降低成本(Cost):無紙作業(Reduce Paper),有效利用空間。

 

B-1.1.2資料庫管理系統(Database Management SystemDBMS)

1.資料庫管理系統是管理資料庫的軟體,使用者與資料庫間的溝通介面,使用者可以透過資料庫管理系統來做資料的新增、更新、刪除、查詢及列印等功能。

2.常見的資料庫管理系統有Microsoft AccessMicrosoft SQL ServerIBM DB2OracleSybaseInformixMySQLMySQL MaxDBPostgreSQL

 

B-1.1.3應用程式(Application)

1.應用程式是自行開發的使用者介面,提供簡單且人性化的操作介面。

2.應用程式必須透過資料庫管理系統才能存取及管理資料庫內的資料。

 

B-1.2資料庫系統的使用者

B-1.2.1資料庫管理者(Database AdministratorDBA)

1.定義資料庫的內容、結構及權限控制。

2.協助使用者使用資料庫,授權不同使用者存取資料。

3.維護資料安全性及資料完整性。

4.資料庫備份、回復及並行控制作業處理。

5.提高資料庫執行效率,滿足使用者的資訊需求。

 

B-1.2.2應用程式設計者(Application Designer)

1.負責撰寫使用者操作介面的應用程式,讓使用者透過簡單的操作介面來使用資料庫。

2.開發應用程式的語言有CC++PASCALVisual BasicJAVAC#等。

 

B-1.2.3一般使用者(End user)

經常操作應用程式存取資料的使用者,若遇到問題,可請資料庫管理者處理。

 

B-1.3儲存資料結構

位元(bit)→位元組(Byte)→欄位(Field)→資料錄(Record)→資料表(Table)→資料庫(Database)→資料倉儲(Data Warehouse)

 

B-1.4資料庫系統ANSl/SPARC架構

B-1.4.1層次

外部層

(External Level)

1.個別使用者觀點。

2.使用者以查詢為主。

概念層

(Conceptual Level)

1.全部使用者觀點。

2.資料庫中全部的基底表格內容。

內部層

(Internal Level)

1.內部儲存方式觀點。

2.資料庫的實體架構。

 

B-1.4.2採用好處:使資料庫管理系統具有資料獨立性(Data Independent)

邏輯資料獨立(Logical data independence)

當概念層次結構改變時,不會影響外部層次。

實體資料獨立(Physical data independence)

當內部層次結構改變時,不會影響外部層次。

 

B-1.5資料庫的類型

B-1.5.1階層式資料庫(Hierarchical Database)

1.由上而下(Top-down)的樹狀(Tree)結構,將資料分門別類儲存在不同的階層下。

2.由根(Root)往下存取資料。

3.適用於大量資料與固定查詢的系統。

4.優點

 (1)應用於一對多(lM)或一對一(11)的資料結構。

 (2)存取快速、有效率。

5.缺點

 (1)資料重複儲存,浪費空間。

 (2)無法表示多對多的關係。

 (3)無法因應突然的資料需求。

 

B-1.5.2網路式資料庫(Network Database)

1.階層式資料庫的擴充,可將每筆記錄視為一個節點,建立節點與節點間的關聯,形成一個複雜的網路架構。

2.優點

 (1)提供多對多(MN)關係。

 (2)存取有效率,避免階層式資料庫的資料重複問題。

 (3)提供實體資料獨立。

3.缺點:關聯比較複雜,維護不易。

 

B-1.5.3關聯式資料庫(Relational Database)

1.關聯式資料庫是以二維矩陣將資料儲存在表格的行、列之中。

2.儲存在資料表行、列會有關聯,資料表之間也會互有關聯。

3.優點:

 (1)節省記憶體空間:相同的資料,不須重複輸入,節省儲存空間

 (2)提高行政效率:資料不須重複輸入,節省輸入時間。

 (3)達成資料的一致性及完整性

4.常見的關聯式資料庫管理系統有AccessMicrosoft SQL ServerMySQLInformixPostgreSQLSyBase等。

 

B-1.5.4物件導向資料庫(Object-Oriented Database)

1.物件導向資料庫是以物件導向方式來設計資料庫,包含物件的屬性、方法、類別、繼承等特性。

2.常見的物件導向資料庫管理系統有Computer Associates公司的JasmineEastman Kodak公司的AlltalkServio公司的GemStoneO2 TechnologyO2等。

3.以關聯式資料庫為主,再於其上架設物件導向資料庫,如PostgreSQL

 

B-1.6資料庫系統的處理架構

單機架構

1.利用一台電腦完成所有的工作,包含使用者存取資料、DBA管理及維護等。

2.適用於使用者少且資料量不多的環境,例如小公司或個人使用者建立的資料庫。

大型主機/

終端機架構

1.由一台大型主機負責儲存及處理資料,所有的用戶端只能透過鍵盤及終端機傳送和顯示大型主機的訊息,沒有處理資料能力,。

2.優點:主機完全掌控系統的資源,所有管理及維護工作只要針對主機即可,環境較單純。

3.缺點:只有一台主機,連線的使用者增加,處理工作增加,會降低執行效率。

4.大型主機的價格很昂貴,適用於大型機構。

主從式架構

(Client/Server)

1.基於分工原則,利用一台處理效能較強的電腦做為主機,來維護資料庫及處理使用者提出的需求;利用使用者的個人電腦分擔主機的部分工作。

2.不需購置大型主機。

分散式架構

1.利用數台資料庫伺服器來處理使用者的連線。

2.分散在各地的分公司或是總公司的各部門,基本上,資料都是各自獨立在各處。

Access是小型的資料庫管理系統,適用於單機架構、主從式架構、分散式架構。

 

資料庫的ACID特性:不可分割性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)

 

B-1.7正規化

正規化之目的

1.降低資料重複性。

2.避免資料更新異常。

3.提升儲存資料與資料庫操作效率。

正規化資料庫的特性

1.欄位唯一性:每個欄位只儲存一項資料。

2.主關鍵欄位:每筆資料都擁有一個主鍵。

3.功能關聯性:欄位之間的關聯要明確。

4.欄位獨立性:欄位之間不應存在遞移相依。

正規化形式

第一正規化(1NF):要求資料庫的每個欄位只能存放單一值,而且每筆紀錄都能利用唯一的主鍵來加以識別。

※處理多值屬性問題。

第二正規化(2NF):要求資料表裡的所有資料都要和該資料表的鍵(主鍵與候選鍵)有完全依賴關係。如果有資料只和主鍵的一部分有關,則獨立成另一個資料表。如果一個資料表的主鍵只有單個欄位,就一定符合第二正規化。

※去除資料間的部分相依性。

第三正規化(3NF):要求所有非主鍵屬性必須和每個候選鍵有直接相關性,也就是非主鍵屬性之間應該是獨立無關的。

※處理遞移相依問題。

Boyce-Codd正規化(BCNF)任何一個BCNF必然滿足:

1.所有非主屬性都完全函式依賴於每個候選鍵。

2.所有主屬性都完全函式依賴於每個不包含它的候選鍵。

3.沒有任何屬性完全函式依賴於非候選鍵的任何一組屬性。