計算機概論 1001課後輔導教材 單元 5:資料庫系統 主講老師:徐培倫
資料庫系統 單元5 資料庫的定義 檔案系統的缺點 資料庫模型 檔案系統的處理架構 動態網頁技術與資料庫應用 課後習題
資料庫的定義 資料庫(Database)這個名詞是一個概念,這是一種資料儲存單位,一些經過組織的資料集合。事實上,有很多現成擁有或一些常常使用的資料集合,都可以稱為資料庫,如下所示: 在Word文件中編輯的通訊錄資料。 使用Excel管理的學生成績資料。 在應用程式提供相關功能來維護和分析儲存在大型檔案的資料。 銀行的帳戶資料和交易資料。 醫院的病人資料。 大學的學生、課程、選課和教授資料
資料 資料庫系統中最重要的就是資料 (Data), 使用者必須將要存放的資料, 經過整理後, 再存到資料庫 (Database) 中, 供爾後查閱或處理之用。資料庫就是儲存資料的地方, 它們就好像是各種容器, 用來存放不同的資料。 大部分的資料庫系統, 都可包含多個資料庫, 以供存放不同的資料。
硬體 資料庫系統的硬體包括了資料的儲存設備, 例如硬碟、光碟...等等;以及用來執行資料庫系統軟體的設備, 如電腦、PDA 等。
軟體 資料庫系統中所說的軟體, 就是資料庫與使用者之間的橋樑, 包含了資料庫管理系統及應用程式, 以及開發應用程式所需的工具: 資料庫管理系統:我們可將資料庫管理系統 (DBMS, Database Management System) 視為資料庫的管理員。透過資料庫管理系統提供的管理、資料編輯及增刪等各項功能, 即可輕鬆地將資料存放在資料庫中, 也能更方便地查詢及使用資料。目前常聽到的 SQL Server 、Oracle 、MySQL 等軟體, 都屬於資料庫管理系統。本章稍後, 我們會再詳細介紹資料庫管理系統應具備的基本功能。
軟體
軟體 應用程式:是指自行開發的使用者介面, 因為並非每個使用者都會透過DBMS 複雜的管理介面來使用資料庫, 所以必須藉由另外設計的程式, 來提供較簡單且人性化的操作介面, 例如我們利用 Visual Basic 開發的人事管理系統、進銷存管理系統... 等。這些應用程式都必須透過資料庫管理系統才能存取及管理資料庫內的資料。
軟體 開發工具:也就是開發應用程式所需的工具, 在第 13 章介紹過的幾種高階程式語言大多能用來撰寫可存取資料庫的應用程式。程式設計人員在開發資料庫應用程式, 通常都是透過資料庫系統的查詢語言或專用於開發資料庫應用程式的應用程式開發介面 (API, Application Programming Interface), 目前常見的資料庫 API 包括:ODBC (Open Database Connectivity)、ADO(ActiveX Data Objects)/ADO.NET、JDBC (Java Database Connectivity)等。
軟體 也有人將 ODBC 、JDBC 等視為應用程式與資料庫管理系統間的中介軟體(Middleware)。
檔案系統的缺點 資料重複:每個單位的資料檔中都記錄了許多基本資料, 造成資源的浪費。 資料維護不易:如果有一筆資料要異動, 例如學生加退選某課程, 可能全校有好幾個檔案都要做相同的異動。 資料可能不一致:如果資料新增或異動的過程中出現一點小差錯, 就會導致各單位存放的資料內容衝突、不一致的情形。
檔案系統的缺點 安全性不足:因資料可能重複出現在多個地方, 相對提高資料被洩露的風險,實際上也很難要求各單位都提供相同的安全控管。 凡此種種都使得人們需要一種更有效且安全的資料儲存與管理方式, 而這就是資料庫系統的目的。簡單的說, 資料庫系統提供的功能解決了上述的各種問題, 以下簡述使用資料庫系統的目的。
去除不必要的重複性資料 使用資料庫系統的主要目的之一, 就是將資料經過整合後集中存放在同一個處所, 以統一的資料來源將可避免如前述各單位檔案中都有許多重複資料的問題。
集中式管理、確保安全 集中存放的資料, 能做更有效的管理與維護, 例如可有效限制使用者可存取的資料範圍、方便追蹤資料異動的歷程, 這些都大幅提昇資料的保密性及安全性。
提昇效率 由於資料都整合集中存放, 使用者就能很迅速地從單一來源取得所需的資料, 不需費心到處找出散落在各處的資料, 提昇工作效率, 大幅降低時間成本,減少人力浪費。
簡化應用程式複雜度 當資料分散存在多個檔案時, 開發相關的應用程式必須考慮多個檔案的內容、要透過網路連線到多個位置存取檔案、甚至要開啟多種不同格式的檔案,使開發應用程式的工作變得複雜。但採用資料庫系統後, 應用程式只需到資料庫管理系統以一致的方式即可存取資料, 不必再自行讀寫資料實際存放的檔案(格式), 使資料庫程式更容易開發, 程式也較不容易出錯。
簡化應用程式複雜度 此外因為資料是由資料庫管理系統以一致的方式提供給應用程式, 後者不需顧慮資料存放格式, 如此一來除了讓應用程式不需因為資料存放方式改變就要改寫程式外, 另一方面也能保護資料存放格式不會被應用程式任意修改。這種特性稱之為資料獨立性 (Data Independence), 這也是使用檔案系統不易做到的。
資料庫模型 「資料庫模型」(Database Model)是使用一組整合觀念來描述資料與資料間的關係和資料的限制條件(檢查是否是儲存正確資料的條件),也就是用來描述資料庫中資料的關聯性。 Access是一套關聯式資料庫系統,這是指它是一套使用關聯式資料庫模型(Relational Database Model)的資料庫管理系統。
15-2 資料模型 各種資料庫管理系統, 依其儲存資料的架構來看, 可分為幾種不同的資料模型 (Data Model), 主要的資料模型有:階層式、網狀式、關聯式及物件導向式等 4 種。而我們通常也用資料模型來指稱資料庫管理系統的類型, 例如採用關聯式就稱為『關聯式資料庫』、『關聯式資料庫管理系統』。以下就針對這 4 種資料模型做簡單的介紹。
15-2-3 關聯式資料模型 在 1970 年, E.F. Codd 發表了一篇名為 "A Relational Model of Data for Large Shared Data Banks" 的論文, 奠定了關聯式資料模型 (Relational Data Model) 的理論基礎, 時至今日, 採用此模型為基礎的關聯式資料庫管理系統(RDBMS, Relational Database Management System ) 早已成為市場主流, 我們平常接觸到的資料庫產品, 幾乎都是關聯式資料庫管理系統。
關聯式資料模型 關聯式資料模型是將資料儲存在邏輯的表格結構中, 這些表格稱為關聯表(Relation), 在關聯表 (或稱資料表) 中存放描述某事物的屬性值 (或稱欄位), 例如人事關聯表中有人的姓名、住址、電話等屬性。一組相關聯的值稱為一個值組 (Tuple), 比較通俗的名稱就是一筆『記錄 (Record)』, 如下圖就是有三筆人事記錄的關聯表。
15-3 資料庫系統的處理架構 隨著電腦技術的演進, 了解資料庫的資料模型後, 接下來我們要介紹如何佈署資料庫系統, 通常都是依照組織的規模、資料量的多寡、使用人數、及預算等多項條件來考量, 常見的有四種架構。
15-3-1 單機架構 在此架構中, 包含一般使用者查詢資料、DBA 管理及維護資料庫等工作,都是在同一台電腦上完成, 而應用程式的執行及資料存放位置, 都是在單一台電腦上。此種架構適合在使用者少且資料量也不多的環境下使用, 例如小公司、工作室、或個人使用者建立的資料庫。
單機架構
15-3-2 大型主機/ 終端機架構 在這種架構中, 由一台大型主機負責儲存及處理資料, 所有的用戶端僅供操作, 沒有處理資料的能力, 只能透過鍵盤及終端機傳送和顯示大型主機的訊息。 這種『集中式』管理的優點在於主機完全掌控系統的資源, 所有管理及維護工作都只要針對主機即可, 環境較單純;在主機上是以分時 (Time-sharing) 處理的方式, 依次處理來自各終端機的要求。其缺點就是只有一台主機執行所有的資料查詢及處理工作, 當連線的使用者增加時, 就會因為每個使用者分到的處理時間變少, 讓使用者覺得執行的動作變慢, 因此目前這種架構已較少見。
大型主機/ 終端機架構
15-3-3 主從式架構 隨著個人電腦技術的突飛猛進、軟體的功能愈來愈強以及網路的普遍, 因此不再由單一的大型主機來負責所有的工作。基於分工的原則, 資料庫管理系統仍是在一台處理效能較強的伺服器電腦上執行, 而使用者所執行的資料庫應用程式,則是在每個人自己的個人電腦上執行。此時即稱執行應用程式的是用戶端 (Client), 而資料庫管理系統所在的則稱為伺服端 (Server);用戶端負責向伺服端『發出要求』 (例如要求查詢某本書的資料), 而伺服器則負責回應要求 (傳回資料或回應找不到)。
主從式架構
主從式架構 與大型主機/ 終端機架構相比, 我們可將主從式架構視為將『主機』的工作分成兩部份, 其中一份留在『伺服器』上執行、另一份則移到個人電腦上執行, 因此在這種架構下, 『主機』能保留更多的資源來處理更多的使用者連線,整個資料庫系統的效能也有所提昇。在使用者較少及資料運算需求不大的環境, 此架構相當於可用多台較便宜的個人電腦來取代需高額預算的大型主機及終端機組合, 因此在個人電腦應用起飛的年代, 許多中小企業都採行主從式資料處理架構。
15-3-4 多層式架構 隨著網際網路的流行, 企業也將各種應用移植到網際網路上執行, 此時多層式 (N-tier) 的處理架構就流行起來。以較常見的三層式 (3-tier) 架構為例,就是在用戶端和伺服端之間加再入一層, 例如透過瀏覽器瀏覽網路書店, 網路書店可能有個負責管理所有書籍及銷售資料的資料庫管理系統, 然後還有個負責提供網頁服務的 Web 伺服器:
多層式架構
多層式架構 中間的一層通常稱為應用程式伺服器 (Appl ication Server), 以上圖中的Web 伺服器為例, 它除了提供基本的 HTTP 伺服器功能以回應來自瀏覽器的要求, 通常也需以動態網頁的技術將從資料庫中取出的資料, 以適當的方式展現在網頁之中。換言之它提供了資料庫應用程式的主功能, 而用戶端的瀏覽器,只單純負責顯示網頁的功能。 在此種架構下, 如果網站的負荷較大, 我們還可多架幾個 Web 伺服器, 以提供使用者較佳的瀏覽效率, 但仍保持一台資料庫伺服器, 如圖 15-19 所示。
多層式架構
多層式架構 為了因應更複雜的應用, 或是為了提昇效率, 我們也能將中間的應用程式伺服器工作再分散到多個伺服器, 建立多層式的資料庫應用架構。例如讓 Web伺服器執行單純的網頁伺服器工作, 而再加入一台專用的應用程式伺服器, 來做購物車或訂單的處理。
動態網頁技術與資料庫應用 使用 HTML 來編寫網頁時, 伺服器端只是單純將網頁內容傳送到使用的電腦上, 然後由瀏覽器來解析網頁中的 HTML 標籤, 並顯示網頁內容, 如果網頁中有使用到 JavaScript、Java Applet、Flash 等程式或物件, 這些『動態內容』都是在使用者的電腦上執行, 就算我們可能覺得網頁內容不同, 但其實收到的內容都是完全一樣的 (例如不同電腦連到同一 Flash 益智遊戲網頁, 每盤遊戲內容雖不同, 但下載到使用者電腦上的網頁、Flash 物件完全相同)。
動態網頁技術與資料庫應用 但使用動態網頁技術就不同了, 例如當我們連上某家網路書店的網站 (應用程式伺服器), 輸入帳號/密碼後, 動態網頁即可根據銷售資料庫的記錄, 將符合我們興趣的新書加到網頁之中, 讓每個人都會看到不同的首頁。當每個人按下購物車這個超連結時, 伺服器也不會傳一份相同的購物車網頁給所有人, 而是由動態網頁程式先到資料庫中讀取該消費者先前已放入購物車的書籍清單, 然後依該份清單計算出本數、金額、甚至視情況計算折扣等, 動態產生一份網頁內容, 再由伺服器傳送到消費者的電腦, 所以每個人看到的購物車網頁都不相同。
動態網頁技術與資料庫應用
動態網頁技術與資料庫應用 目前主流的動態網頁技術有以下三種: ASP (Active Server Pages):由微軟公司所開發出的技術, 並整合至該公司 Windows作業系統內附的 IIS 網頁伺服器中。ASP 的特色是它不是一種新的語言, 而是提供一組有關網頁伺服器運作的物件, 讓程式設計人員可用以產生動態的網頁內容。大多的 ASP 網頁都是使用 VBScript 語言來撰寫, 有些則是用 JScript、Perl 等語言。 新一代的ASP.NET則是依微軟公司新的 .NET Framework 開發架構所設計的, 目前可用 C#、VB.NET 等語言開發 ASP.NET 程式。
動態網頁技術與資料庫應用 PHP (PHP: Hypertext Preprocessor):屬於開放原始碼 (Open Source) 的 PHP , 只要網頁伺服器支援解析 PHP 網頁的功能, 就可以使用此種網頁。PHP 的語法近似 C語言, 因此學過 C 語言的人通常都能很快學會 PHP。 PHP 縮寫的第一個 P 就是 PHP, 雖然令人感覺沒有解釋到底什麼是 P, 但這也是開放原始碼社群喜歡玩的一種遞迴頭字語 (Recursive Acronym) 的命名遊戲。例如 GNU 的全名是 "GNU's Not Unix"、EINE 的全名是 "EINE Is Not EMACS" 等等。
動態網頁技術與資料庫應用 同樣是開放原始碼的 Apache 網頁伺服器可以支援 PHP 功能, 不過在 IIS 上只要安裝免費的 PHP 軟體套件之後, 亦可支援 PHP。在 Unix/Linux 平台上, "Apache + PHP +MySQL" 幾乎已成為架站的標準套裝組合, 也就是用 Apache 網頁伺服器, 再加上 PHP網頁和 MySQL 資料庫伺服器, 就能建立完整的應用程式伺服器解決方案。
動態網頁技術與資料庫應用 JSP (JavaServer Pages):是昇陽公司所提出的技術, 使用 Java 語法, 並且可搭配同樣以 Java 語言開發、在伺服器端執行的 Servlet (一般在網頁中看到的 Java 程式的 Java Applet是在用戶端電腦上執行) 及 JavaBeans (事先編譯好的 Java 元件)。 上述三種技術的網頁副檔名都恰好為其名稱, 所以當您下次在瀏覽器的網址列看到XXX.asp 的網頁名稱時, 就知道這個網頁 (或整個網站) 是使用 ASP 的動態網頁技術(ASP.NET 的附檔名則為 .aspx)。
課後練習 使用資料庫系統有何優點? 資料庫系統的處理架構有哪幾種? 試述主從式資料處理架構的組成? 試述多層式資料處理架構的組成? 試述三種動態網頁的技術。