管理資訊系統 David Kroenke 資料庫處理 第4章
學習目標 瞭解資料庫處理的目的 認識資料庫的元件 瞭解重要的資料庫術語 認識實體關係模型的元素
學習目標 (續) 瞭解如何解釋與驗證實體關係模型 瞭解資料庫設計的一般性本質 瞭解資料庫管理的需要及其基本工作
資料庫的目的 資料庫的目的是要記錄涉及多個主題的事情
圖4-1 學生成績清單
圖4-2 由資料庫所顯示的學生資料
什麼是資料庫? 資料庫是一組能夠自我描述、且經過整合的記錄 一個位元組是資料的一個字元 位元組會組成欄位(column或field),例如Student Number和Student Name
什麼是資料庫?(續) 欄位再組成資料列(row),也稱為記錄(record) 資料元素間有階層關係 資料庫包含一組表格,加上這些表格中資料列間的關係,再加上稱為metadata的特殊資料 metadata用來描述資料庫結構
圖4-3 Student表格(也稱為檔案)
圖4-4 資料元素的階層關係
記錄之間的關係 主鍵(key)是一個或一組欄位,用來在表格中識別出唯一的一筆資料列 例如Student Number就是Student表格的主鍵 外來鍵(foreign key)不是表格中的主鍵﹐但這種欄位其實是另一個表格上的主鍵 例如Email和Office_Visit表格中的StudentNumber欄位 使用表格形式來記錄資料,並且使用外來鍵來表示關係的資料庫,稱為關聯式資料庫
圖4-5 資料庫元件
圖4-6 資料列間關係的範例
Metadata 資料庫能夠自我描述﹐因為它們不只包含資料﹐還包含了用來描述資料的資料 Metadata就是用來描述資料的資料 在欄位內容中描述了這個欄位的格式、Access在建立新資料列時的預設值、以及這個欄位值的限制
圖4-7 metadata範例(使用Access)
圖4-8 資料庫應用系統元件
資料庫管理系統 資料庫管理系統是用來建立、處理、與管理資料庫的程式 幾乎沒有組織會自行開發自己的DBMS 企業會向IBM、微軟、Oracle之類的廠商購買DBMS產品的授權 DBMS及資料庫其實是不同的兩樣東西: DBMS是軟體程式 而資料庫是表格、關係、與metadata的集合
建立資料庫與其結構 資料庫開發人員使用DBMS來建立表格、關係、及資料庫中的其它結構 表單可以用來定義新表格,或是修改現有表格 . 要建立新表格,開發人員只需要填寫一個新表單即可 要修改現有表格,例如新增欄位,開發人員必須開啟該表格的metadata表單,並且增加一列新的metadata
處理資料庫 DBMS的第二項功能就是去處理資料庫 資料庫應用使用DBMS來執行四種運作:讀取、新增、修改或刪除資料
處理資料庫(續) 結構化查詢語言是處理資料庫的國際標準語言 前述的五種DBMS產品很早就都能處理SQL敘述
管理資料庫 DBMS的第三項功能是提供協助資料庫管理的工具 資料庫管理包含很多各式各樣的活動 備份資料庫的資料 新增結構以改善資料庫應用的效能 刪除不再需要的資料,以及類似的工作
資料庫應用 資料庫應用包含表單、報表、查詢、與用於處理資料庫資料的應用程式 一個資料庫可能允許同時有一或多個應用程式使用,且每個應用也可能有一或多個使用者 應用各有不同的目的與功能,但是它們都是在處理儲存在共同資料庫中的相同存貨資料
圖4-10 運用多個資料庫應用
表單、報表、與查詢 資料輸入表單是用來讀取、新增、修改、與刪除資料 報表則是以結構化的脈絡來呈現資料 有些報表除了呈現資料之外,也會進行運算 DBMS程式提供查詢資料庫資料的廣泛功能
圖4-11 學生報表範例
圖4-12 查詢範例
資料庫應用程式 應用程式會處理特定業務需求的邏輯 應用程式讓使用者能夠透過網際網路來處理資料庫 此時,應用程式扮演網站伺服器與資料庫間的中介者 應用程式負責回應事件(例如當使用者按下送出的按鈕),以及讀取、新增、修改、與刪除資料庫的資料
圖4-13 網站伺服器電腦上的四個應用程式
多用戶處理 多用戶處理很常見,但是它的確有些獨特的問題,是你身為未來經理人所必須知道的
多用戶處理(續) 當不只一個使用者同時想要存取某個資料庫表格時﹐第一個存取到資料庫表格的使用者取到了正確的內容﹐但其他使用者可能會沒有拿到正確的內容﹐因為第一個使用者可能已經改變了內容值﹐而其他使用者卻不知道 這個問題稱為遺失更新問題,顯示出多用戶資料庫處理的特徵 為了防止這種問題,必須使用某種類型的鎖定來協調使用者間的活動
多用戶處理(續) 將單一用戶資料庫轉換成多用戶資料庫不僅僅只是多連上一台電腦而已 其背後的應用處理邏輯也需要一併調整 在你管理涉及多用戶處理的業務活動時,要小心可能的資料衝突
企業DBMS與個人DBMS DBMS產品可以分為兩大類 :企業DBMS 與個人DBMS 企業DBMS 這些產品能處理大型的組織與工作群組資料庫 這些產品能支援許多使用者(可能有數千名)和許多不同的資料庫應用 這種DBMS能支援24/7的運作,並且能管理分佈在數十個磁碟、包含幾十億位元組的資料庫 IBM的DB2、微軟的SQL Server、與Oracle的Oracle都是企業DBMS產品
企業DBMS與個人DBMS(續) 個人DBMS 這些產品是針對小得多的資料庫應用所設計 這種產品通常使用在少於百人(正常是少於15人)的個人或小型工作團體應用上 這類資料庫中有極大多數都只有單一使用者 Microsoft Access 是目前唯一的個人DBMS
開發資料庫應用系統 使用者參與資料庫的開發非常重要,因為資料庫的設計完全取決於使用者看待其業務環境的方式 資料庫結構可能很複雜,在有些情況下更是極端複雜 在建立資料庫之前,開發人員會先建立資料庫資料的邏輯呈現,稱為資料模型
開發資料庫應用系統(續) 資料模型描述要存在資料庫中的資料與關係 資料模型就像藍圖一樣
圖4-15 資料庫開發流程
實體 實體是使用者希望記錄的某樣東西 例如Order、Customer、Salesperson及Item等 有些實體代表實體的物件,例如Item或Salesperson;有些則象徵邏輯上的概念或異動,例如Order或Contract 實體具有描述其特徵的屬性 例如Salesperson的屬性則包括SalespersonName、Email、Phone等等
實體(續) 實體具有識別子,也就是每個值只對應到單一實體實例的屬性 例如OrderNumber就是Order的一個識別子,因為每筆Order實例都只對應到一個特定的OrderNumber值 例如CustomerNumber是Customer的識別子 如果每個業務員姓名都不相同,則SalespersonName也算是Salesperson的一個識別子
圖4-16 Student資料模型實體
關係 實體彼此之間具有關係 資料設計師使用的是實體-關係(E-R)圖 所有相同類型的實體都用單一的矩形代表 兩個實體間的線段表示關係 例如Order與Customer實體相關,也與Salesperson實體相關 資料設計師使用的是實體-關係(E-R)圖 所有相同類型的實體都用單一的矩形代表 兩個實體間的線段表示關係
關係 (續) 如果兩個實體之間存在很單純的一條線段,這種關係稱為一對一關係 如果兩個實體之間有線段﹐且該線段其中一端存在有稱為鳥爪的小分岔,這種關係稱為一對多關係
關係 (續) 如果兩個實體之間有線段﹐且該線段兩端都存在有稱為鳥爪的小分岔,這種關係稱為多對多關係 鳥爪標記會顯示可以參與關係的最大實體數 稱為該關係的最大基數 常見的最大基數範例為1:N、N:M與1:1 對最小需求的限制稱為最小基數
圖4-17 Department、Adviser與Student實體及其關係範例
圖4-18 關係範例:第一版
圖4-20 顯示最小基數的關係範例
資料庫設計 資料庫設計是將資料模型轉換成表格、關係、和資料限制的流程 資料庫設計團隊將實體轉換為表格,並且藉由定義外來鍵以表示關係
正規化 正規化是將結構不良的表格轉換成兩個或更多結構良好表格的流程 資料完整性問題 例如某個表格的兩列資料成功地變更了某欄位的名稱,但是第三列資料卻沒有 表格有資料完整性問題的情況: 資料列之間同樣的欄位名稱卻有不同的值:多重值 資料完整性問題是很嚴重的 有資料完整性問題的表格會產生不正確與不一致的資訊 使用者將對這些資訊失去信心,而系統則會聲名狼藉 聲名狼藉的資訊系統會成為組織的重大負擔
圖4-21 設計不良的Employee表格
正規化(續) 為資料完整性進行正規化 資料完整性問題只有在資料重複時才會發生 因此,最簡單的排除方式就是去排除重複的資料 這可以藉由將表格轉換成兩個表格 . 這種表格合併相當常見,所以DBMS產品的設計通常能夠很有效率的執行這種合併,不過仍然需要一些工作 這種權衡是資料庫設計上的一項重要考量 正規化的一般性目標是要建構出只包含單一主題的表格
正規化(續) 為資料完整性進行正規化(續) 資料庫從業人員根據他們的問題將表格分成多種正規化形式 將表格轉換成正規化形式,以移除重複的資料及其他問題,稱為表格的正規化
圖4-22 正規化後的兩個表格
圖4-23 將資料模型轉換成資料庫設計
圖4-24 1:N關係的呈現
圖4-24 1:N關係的呈現(續)
圖4-25 N:M關係的呈現
使用者審查的重要性 使用者是關於資料庫應該包含哪些資料,以及資料庫記錄彼此間有何關係的最後裁判 要更動資料庫結構的最輕鬆時機是在資料塑模階段 然而,一旦資料庫建立完成,載入資料,並且建立好應用表單、報表、查詢、與應用程式之後,將一對多關係改為多對多關係可能就需要好幾週的工作
使用者審查的重要性(續) 當資料庫是為你的工作所開發的時候,你必須很小心地審查資料模型 如果有任何不瞭解的地方,就必須要求澄清,直到你能瞭解為止 資料模型必須能精確反映你對業務的觀點 除非資料模型已經非常精準,否則不要繼續往下做
資料庫管理 因為資料庫的重要性與管理上的挑戰,大多數組織都會成立稱為資料庫管理的職務功能 在較小型組織中,這項功能通常是由一位人員擔任,有時甚至是由某人兼任 較大型組織則會指派數名人員到資料庫管理單位
資料庫管理(續) 根據上下文,DBA一詞可能是指資料庫管理師(database administrator)或是資料庫管理室 資料庫管理的目的是要管理資料庫的開發、運作、與維護,以達成組織的目標 這項功能需要在相衝突的目標間求取平衡:保護資料庫,同時也對合法授權的使用提供最大的可用性
圖4-26 資料管理工作摘要
倫理導引:沒有人說不可以 Kelly把一份公司的資料庫備份拷貝到CD上,然後安裝在家裡的電腦中 在查詢資料庫時﹐Kelly發現公司的客戶訂單資訊﹐並且特別注意觀察他朋友Jason的客戶訂單資料 Kelly注意到Jason給山谷設備公司很大的折扣﹐但對其他客戶則沒有 在一次下班的聚會中﹐Kelly告訴Jason自己查詢資料庫時有關山谷設備折扣的發現 Kelly回去工作時﹐發現自己被開除了
安全性導引:資料庫安全 DBMS電腦除了應該受到防火牆的保護,其他所有的安全性措施則應該以防火牆被滲透的假想情況來設計 要有安全性危機的行動計畫
解決問題導引:資料塑模師康德 只有使用者才能說明資料模型是否能精確地反映出他們的業務環境 . 當使用者本身意見不合時,會如何呢? 人類對於呈現真實的本體世界是無能為力的 當人們彼此意見分歧時,資料模型中應該要放什麼呢? 唯一有效的重點在於:是否能反映出使用者觀看其世界的方式﹐是否能讓使用者完成他們的工作?
反對力量導引:多謝,我只要用試算表就好了! 我才不會去買資料庫那種東西 我嘗試過,而且它們設定太過複雜 在大多數情況下,試算表可以做的一樣好 你必須有專業的資訊人員去建立資料庫,並且保持它的運作 我不想跟其他人分享我的資料 當我想找某些資料,我就使用Excel的篩選功能 我通常都可以找到我要的 我沒辦法送出信件,但這其實沒啥關係 我通常都是使用電話來完成銷售
深思導引:需求蔓延 需求變更是建立與管理資料庫及資料庫應用的最大挑戰 在建立需求規格與驗證資料模型時,都必須要有使用者的參與 不是所有的變更請求都能事先預防 資訊系統永遠會有新的需求 使用者與開發團隊必須列出所有已知的需求,並且盡可能地驗證資料模型