資料庫系統概論第 十一章 單表格資料庫設計   上一頁    下一頁

11-2 範例研討客戶管理系統

內容:

  • 11-2-1 需求與資料收集

  • 11-2-2 資料庫邏輯設計 - sport_house

  • 11-2-3 轉換資料表與正規化

  • 11-2-4 實體建置

  • 11-2-5 匯入測試資料

  • 11-2-6 測試資料庫功能

  • 11-2-7 資料庫效能分析

11-2-1 需求規格與資料收集

(A) 規格需求

『真善美健身工廠』需要一套客戶管理系統,將發放每位客戶一只會員卡(VIP 條碼卡),可利用讀卡機讀入客戶 VIP 卡儲存的會員逼號,做查詢或繳費的運作,系統希望有下列功能:

  • 可登錄或刪除會員資料。

  • 可供瀏覽每位客戶資料。

  • 可利用『會員編號』、『姓名』、查詢會員資料。

  • 可查詢目前公司內各會員等級的會員名單。

(B) 收集資料

系統分析師到該公司收集到客戶資料如下:

  • 會員編號:int 整數,auto_increment

  • 姓名:字串,20 個字元格式。

  • 電話:字串,20 個字元格式。

  • 性別:男或女,20 個字元格式。

  • 地址:字串,50 個字元格式。

  • 會員等級A 級、B級、C級與非會員等四級,字串,20 個字元格式。

  • 會費int 整數,A 1.5 萬元、B 1 萬元、C 0.5 萬元、非會員 0 元。

11-2-2 資料庫邏輯設計

(A) 系統概況

我們將此資料庫定名為:sport_house,此系統僅登錄客戶資料,概況如圖 10-3 所示。由此可見只要一個關聯(資料表),即可達成所需。

10-3 Sport_house 資料庫概況

(B) 系統 E-R 實體關聯圖

此系統僅有一個關聯並命名為『客戶』,依照系統需求將其設計如下:

10-4 Sport_house 資料庫 E-R 關聯圖

我們依照系統需求,給予客戶關聯有七個屬性,並選擇『會員編號』為主鍵。

11-2-3 轉換資料表與正規化

(A) 客戶實體轉換資料表

我們將書籍的資料表取名為 Customers,個欄位(屬性)規劃如下:

  • 會員編號:命名 NOint、唯一識別值、auto_increment

  • 姓名:命名 name、字串 CHAR(20)

  • 電話:命名 tel、字串 CHAR(20)

  • 性別:命名 sex、字串 CHAR(50)

  • 地址:命名 address、字串 CHAR(50)

  • 會員等級:命名 membership、字串 CHAR(20)

  • 會費:命名 due,整數 int

客戶實體(Customer 資料表)

會員編號

 姓名

電話

性別

地址

會員等級

會費

NO

name

tel

sex

address

membership

due

int

CHAR(20)

CHAR(20)

CHAR(20)

CHAR(50)

CHAR(20)

int

其中,書籍編號(NO)是書籍之間的唯一識別值,吾人將它設定為主鍵(primary key),並由系統自動產生。

(B) 正規化分析

正規化分析:

  • 1NF:所有欄位都是最小單元(Atomic value):符合。

  • 2NF:除了主鍵外,所有欄位都與主鍵相依:符合。

  • 3NF:除了主鍵外,所有欄位之間都沒有功能性相依:不符合,原因是『會費與會員等級屬性相依』

    (備註:表示本範例僅一個表格無法滿足 3NF 條件,當變更『會費』時,可能產生資料不一致問題)

11-2-4 實體建置

 (A) 建立資料庫

吾人將此資料庫定名為:sport_house,利用 SQL 命令產生(亦可利用視窗選單產生),如下:

Create Database sport_house;

Show databases;

 (B) 建立資料表

吾人將客戶資料表定名為 Customers,同樣也有兩種方法產生,利用 SQL 命令產生,如下(選擇 sport_house 資料庫)

Create Table Customers (

NO int auto_increment,

name  CHAR(20) NOT NULL,

tel  CHAR(20),

sex  CHAR(20),

address  CHAR(50) ,

membership  CHAR(20) ,

due   int,

primary key (NO)

)

如果設定完成之後,由 Mysql 介面可以觀察到 sport_house 資料庫內 Customers 資料表的結構,如下:

        其中,NO 欄位為主建。

11-2-5 匯入測試資料

(A) 利用Excel 建立資料並匯出 CSV

  • 步驟 1利用 Excel 建立資料(取名Customers,第一行為欄位名稱),如下圖所示:(可到教學網站下載 Customer.xlsx)

將此檔案另存新檔成為『csv(逗點分隔)』格式(成為 Customers.csu),再利用『記事本』將其編碼改成『UFT 8』編碼,如下結果:(如同 10-1-4 節操作)

  • 步驟 3接著將 Customers.csu 檔匯入 Customers 資料表內。開啟 AppServ 並選擇 sport_house Customers 資料表,『匯入』後瀏覽 Customers 資料表內容如下:

11-2-6 測試資料庫功能

資料庫建構完成後,我們依照幾個系統需求,來驗證其功能是否滿足,如下:

(A) 驗證 1查詢某位會員資料

查詢陸美女小姐的會員資料, SQL 命令如下:

select *

from customers

where name = "陸美女";

執行結果:

(B) 驗證 2查詢 A 級會員的名單

查詢目前公司內 A 級會員名單, SQL 命令如下:

select *

from customers

where membership = "A";

執行結果:

(C) 驗證 3查詢住台南市有哪些會員,及其資料

請查詢住在『台南市』的會員姓名、電話、地址, SQL 命令如下:

select name, tel, address

from customers

where address Like "台南市%";

執行結果:

 

(C) 驗證 4查詢會員編號 8 的會費多少

查詢東南圖書公司有那些書,請列印出書名作者名稱,SQL 命令如下:

select name, due

from customers

where No= "8";

執行結果:

 

11-2-7 資料庫效能分析

如果『真善美健身工廠』僅需要客戶資料管理,Sport_house 資料內一個 customers 資料表就足夠應用,該資料表最大的缺點是會費與會員等級應該是相關聯的,操作者輸入會員等級時,如果會費輸入不相同時,會造成資料不一致現。解決此方法是需產生一個會員等級資料表,由該表內紀錄會費,就不會發生不一致現象,但這樣就需要兩個資料表,我們下一章再說明。

翻轉工作室:粘添壽

 

資料庫系統概論(含邏輯設計)

 

 

翻轉電子書系列: