資料庫系統概論:第 十一章 單表格資料庫設計 下一頁 |
第十 一章 單表格資料庫設計 11-1 範例研討 – 圖書管理系統
在鄉下許多善心人士在廟宇內建立圖書館,讓當地人士有一個閱讀交誼的地方,但各地捐贈圖書眾多,當村民借用圖書時,產生許多困擾期望建立一套圖書管理系統。 11-1-1 需求分析與資料收集 (A) 需求與系統規格 當圖書很多的情況,我們要找一本書也許變得非常困難,我們希望『圖書管理系統』具有下列功能:
(B) 資料收集 系統分析師到現場收集資料如下:
11-1-2 資料庫邏輯設計 – Books_db (A) 系統概況 我們將此資料庫命名為 Books_db,它僅登錄圖書資料,概況如圖 10-1 所示。由此可見只要一個關聯(資料表),即可達成所需。
圖 10-1 圖書管理系統概況 (B) 系統 E-R 關聯圖 此系統僅有一個關聯並命名為 Books,依照系統需求將其設計如下:
圖 10-2 E-R 關聯圖 我們依照系統需求,給予 Books 關聯有六個屬性(書籍編碼、作者、出版商、書名、放置區域與書籍分類)。並選擇『書籍編碼』為主鍵。 11-1-3 轉換資料表與正規化 (A) E-R 圖轉換資料表 我們將書籍的資料表取名為 Books,個欄位(屬性)規劃如下:
其中,書籍編號(NO)是書籍之間的唯一識別值,吾人將它設定為主鍵(primary key),並由系統自動產生。 (B) 正規化分析 正規化分析:
11-1-4 實體建置 我們利用 AppServ – MySQL 資料庫伺服器建立此資料庫系統。首先利用瀏覽器(IE 或 Chrome),URL: http://localhost 進入 phpMySQLAdmin 管理介面(輸入帳戶與密碼),並選擇『資料庫』功能選項。 有兩種建立方法,一者為利用『視窗選單』功能,另一者利用 SQL 命令產生,兩者皆示範操作。 (A) 建立資料庫 吾人將此資料庫定名為:books_db,則下列兩種方法產生,如下:
(B) 建立資料表 吾人將圖書資料表定名為 Books,同樣也有兩種方法產生,如下:(選擇 Books_db 資料庫)
接著,再輸入各個欄位的名稱與屬性,如下:
其中,還要將 NO 欄位設定主鍵(Primary key),以及 auto_increment 屬性。 如果設定完成之後,由 Mysql 介面可以觀察到 Books_db 的結構,如下:
其特性說明如下:
11-1-5 匯入測試資料 資料庫與資料表建立完成之後,需產生相關資料來驗證其運作是否能滿足需求。一般我們都會利用 Excel 建立資料後,再將其匯入。 (A) Excel 建立資料並轉換成 CSV 檔
(B) 將 CSV 檔匯入資料表內
11-1-6 測試資料庫功能 資料庫建構完成後,我們依照幾個系統需求,來驗證其功能是否滿足,如下: (A) 驗證 1:瀏覽所有書籍 瀏覽目前圖書館內有哪些藏書,SQL 命令如下:
執行結果:
(B) 驗證 2:查詢作者有哪些書 查詢作者粘添壽有哪些書的書名與出版公司,SQL 命令如下:
執行結果:
(C) 驗證 3:由圖書公司查詢有哪些書 查詢東南圖書公司有那些書,請列印出書名作者名稱,SQL 命令如下:
執行結果:
(D) 驗證 4:由圖書分類查詢書籍 查詢古書類別中有那些書,請列印出書名作者名稱,SQL 命令如下:
執行結果:
11-1-7 資料庫檔案匯出 完成設計資料庫之後,可以將其匯出並攜帶客戶處展示,或在其他系統上執行,匯出步驟如下:
到其他電腦上載入方法,如同 course_db.sql 載入方法相同。 11-1-8 資料庫效能分析 雖然 Books_db 資料庫系統僅有一個資料表,應用上比較簡單,但我們也來探討這樣設計有何優缺點。如下: (1) 查詢關鍵字可能發生不一致的現象,譬如出版公司( publisher)可能輸入東南圖書公司或東南出版社,沒有統一命名可能會造成搜尋不倒資料。 (2) 書籍分類(classify)沒有專屬分類,可能造成混亂。 欲解決上述兩問題,可能須建立其他資料表來輔助,我們在下一章會說明到。 |
翻轉工作室:粘添壽
資料庫系統概論(含邏輯設計)
翻轉電子書系列:
|