簡單說明資料庫與 Excel 應用的差異(第一篇)


昨天(9/12)到某社區大學協助撈資料給教育局, 就討論過程中有關使用資料庫與 Excel 的應用, 做了一點小比較.


不管是 Excel, Access, 或是 SQL Server 等"工具", 都是協助使用者"記錄", "描述性統計"等用途. 所以建議第一件事: 關掉電腦, 先構思自己要存放的資料規模.

例如: 我個人曾經以 Access 寫過選課系統, 大概幾萬人與幾十萬筆選課資料, 規模跟在公司跑每天數百筆訂單, 數萬項商品差很多, 可是基本原理是雷同的: "人/廠商", "課程/商品", "選課/下訂", "成績通過/驗收入庫", "退選/退貨", "預約選課未繳費/下訂後未出貨不付款".

所以第一件事, 先想想從輸入到輸出, 總共用到哪些資料, 先整理一份草稿. 如果是現有的文件, 也開始收集使用的文件樣本.

(好像忽略了 Excel ? Excel 是"試算表"軟體, 所以已經規劃好"工作表", "欄", "列"等空間, 與資料庫是由設計人員規劃需要的欄位, 使用上有所不同.)


第二件事, 則分為兩部份: 第一部份是配合工作流程, 重新檢視輸入到輸出的步驟, 這也是之後的使用者, 與規劃人員需要討論, 每一種資料的重要性, 以及各資料欄位間的"關連性"; 第二部份, 則是將資料關連性與重複性, 透過正規化的方式, 設計出合適的資料表.

這邊就是有經驗的規劃人員, 要與一般使用者溝通, 才能確保將來規格的正確性. 也是 Excel 與資料庫會有技術性差異的地方. 因為 Excel 已經有規劃好的表格呈現方式, 所以要定義資料, 也需要符合表格的設計, 當有資料關連性時, 需要透過 vlookup/hlookup 等函式來連結. 而目前常見的資料庫, 大多設計為"關連式資料庫"(以下以 Access 為例), 也就是可以依不同的"查詢"需求, 從各"資料表"撈取出資料, 再以特定欄位建立關連, 只要建立好之後, 以後無論資料規模如何異動, "查詢"都會依建立好的關連來處理. 而 Excel 若遇到資料規模增加, 則需要配合增加各欄的函式.

例如: 每天訂單有 6 萬項商品, 訂單需要記錄商品名稱, 以 Excel 需要在對應商品名稱的地方, 輸入 6 萬次 vlookup ; 如果公司規模更大, 則會超過 Excel 筆數限制, 而需要拆單, 會額外造成拆單存檔規則的變化, 以及將來若有改公式, 需要考慮異動範圍的狀況.
若是以資料庫處理, 建立的連結只有"商品編號對應商品名稱"一項, 筆數通常也較多, 檔案通常不用使用者顧慮, 但是公式異動仍是需要考慮的狀況.