作者 主題: 簡單說明資料庫與 Excel 應用的差異(第一篇)  (閱讀 15697 次)

0 會員 與 1 訪客 正在閱讀本文。

slime

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料

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


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

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

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

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


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

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

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

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
讚!來一場~^_^

slime

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
簡單說明資料庫與 Excel 應用的差異(下篇)
« 回覆 #2 於: 2012-09-13 14:08 »
為什麼會先中斷呢? 因為我去吃午餐了....
因為到剛剛看起來都是一般人會想到的事情, 可是魔鬼就在細節裏, 以個人建議, 第二件事做完之後, 應該產出了相關的資料流, 特別是包括"人"的部份, 也要列入.

以社區大學報名為例, 人潮都擠在期末成果展(優惠期)與開學前, 如果只在這段時間增加人手, 則培訓成本太高, 找人不易, 錯誤率又高, 那怎麼辦?
只要透過區隔出資料, 在報名期間只處理報名最必要的"課程-選課-學員"基本資料, 而把學員通訊方式等次要資料留在之後補充輸入. 用這種方式, 資料庫相關結構沒改, 可是改了流程及程式權限, 工作人員負責報名(因為牽涉到錢), 另外請工讀生只負責輸入資料, 這些經驗可以省下辦公室不必要的成本, 就是 MIS 的價值所在.

所以第二件事的關鍵, 就是整個流程是否適當, 牽涉到人力配置, 也就是身為 MIS 不要只去看電腦, 而是成為建議管理階層的幕僚差異, 產出的相關流程, 也是做為將來擴充的文件參考.


由於有了第二件事設計好的流程, 接下來第三件事就是選擇工具了嗎? 還沒....接下來是: 評估資料量規模與欄位定義.
第一部份, 關於資料量規模, 仍會牽涉到流程的異動, 只是這流程在於跨年度, 跨期等, 例如一般公司行號有"月報表", "季報表"等產出, 社區大學每期要繳交資料給教育部/教育局/其他政府委辦的阿里不達的單位; 而規畫時就要考慮, 如何定義這些"期", 以及每期每種資料表的量, 還有相關資料成長量的預估, 最後是過期資料的規檔方式. 例如: 發票及帳務資料可能要保留 5~10 年, 可是訂單明細大概 2~5 年, 公司的營運擴充大概每年 10% , 這樣去計算出可能的資料量.
第二部份, 依照資料量大小, 考慮欄位定義的規模, 這也是可以累積經驗的地方, 欄位大小的地義與效率是有相關的, 為了彈性而加大欄位, 處理速度就會降低, 為了加快速度而減少欄位, 將來擴充性又可能不足; 另外則是關連式資料庫為了避免人為編碼失誤, 會加上系統編碼做為 PK , 如果 PK 大小定義不當, 將來要異動也不是很容易.


第四件事, 終於要回到"簡單說明資料庫與 Excel 應用的差異"了嗎? 還沒, 先來"選擇工具要考慮的點"這道前菜.

從第三件事大概可以知道資料庫的規模了, 接下來才開始要選擇工具了. 比如一般的記帳, 用 Google 文件或 Excel 簡單記一下, 可以知道口袋剩多少錢, 銀行存褶剩 5 位數(還是 3 位整數+ 2 位小數, 本人失業中, 歡迎贊助), 沒有太多流程, 只有一個人使用, 那大概大家都會選 Excel , 不過 Excel 是商業軟體, 所以要注意一下授權問題, 也可以考慮 LibreOffice 等軟體, 功能相近.
如果規模大一點呢? 用的人多一點呢? 這時候就開始出現差異了. (總算回到正題了)
Excel 原本設計是單人使用, 所以當第二個人開啟同一個 Excel 時, 會出現"唯讀", "再通知"等訊息. 如果是關聯式資料庫, 通常已經有"鎖定記錄(Record Locking)"的設計, 只要使用者不是修改同一筆資料, 都可以各自作業.

接著, 回到第二件事設計出來的流程, 要產出的東西有多少呢? 如果需要彈性, "合併列印"可能比較好改, 如果都很固定但大量, Access 的"表單/報表"可能比較適合.

再來, 又是使用者的問題了, 要怎麼控制輸入的資料呢? 在 Excel 可以用鎖定等方式, Access 則是可以透過表單設計加上限制, 更大型的 SQL 資料庫通常透過前端程式(如 asp.net , php )加以控制.


第五件事, 剩下行政工作啦, 我要跟大家收錢了.... 才不只行政工作, 還包括程式驗證啦, 除錯啦, 寫教育訓練手冊啦, 開發票啦, 這樣才能收錢啊....不過這個在很多程式開發的文件都有提, 我就不寫了.

寫到這邊, 大概一堆人會覺得被騙了, 我的標題是在"應用"啊, 如果只看資訊工具或技術, 就是一個 IT 人員, 而這東西要如何應用, 能發揮效益, 才算 MIS 人員哦, 要再進階到 CIO , 就要再深入到人的管理及公司成本的考慮了.

大概簡單寫到這邊, 大家可以想想看, 其實從會計開始, 稽核成了公司管理的一道關卡, 而許多資料電腦化之後, 雖然有"資訊人員", 可是公司有"資訊化"了嗎? 還是把電腦當上網機+遊戲機+打字機用而已呢?
冷笑話: 我的 IP 是 127.0.0.1

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
更讚!

來~講兩場!  ^_^

slime

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料

感謝 netman "按讚", 因為主題是同一個, 先一場就好了.... ^^!

(12 月底前會在台北, 偶爾回南部)
冷笑話: 我的 IP 是 127.0.0.1

AirMan

  • SA 苦力組
  • 憂鬱的高中生
  • ***
  • 文章數: 94
    • 檢視個人資料
確認捕捉到關鍵字"一場"

大大啥時有空下來南部玩玩啊? ;D

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
Excel直欄好像只有到255個,這怎麼夠用...用Access或SQL就沒差了...