早前於九月中旬接受了元朗公立中學校友會鄧兆棠中學的學生做訪問, 話題圍繞網上學習平台的開發,從而了解開發學習平台背後的理念、構思及流程等。
最近我們便收到同學電郵查詢以下問題:
=====================================
” 當設計database 的時候~通常會考慮那些因素? 如學生和老師的資料……
你們可唔可以簡單介紹一下database應該有什麼東西在內。
謝謝 ”
=====================================
我們當然很樂意回答,亦希望以下資料令更多同學了解更多系統開發的要點:
設計database時,主要有以下幾點要注意(以學科討論區系統為例):
1)系統/平台功能需求
- 最基本要知道有系統有什麼功能,才能決定有那些資料要儲存至database
例:
用戶資料:便要儲存用戶名稱,Login,Password,用戶類別(學生/老師/系統 管理員)
編寫討論主題:便要儲存每個主題的內容,相關檔案,更新時間,擁有者,點擊次數等
2)隱性關聯資料
- 有時候有些資料並不是顯然易見的,會因為一些功能關聯而顯生而來
例:
權限功能:除了基本用戶資料,便要儲存用戶及權限的對照資料,學生/老師/系 統管理員應該會有不同的使用權限
班別資料:因為一班的學生和班主任的資料會每年變動(即升班),所以便需要儲 存年度與班別、老師(班主任)、學生的關聯
3)資料存儲分類、速度考慮
- 有時候有些關聯會儲存大量資料,如沒有良好的存儲分類(即分開個別database table儲存),便會令括取或搜尋資料時速度會大大減低
例:
用戶個人資料:除了以上提過的用戶資料,亦可以儲存個人化設定(頭像, Nickname,喜好,簽名等)
個案例子:如果沒有分開個別儲存以上資料,那麼每次用戶登入時都會括取了很多 沒有用的資料。分開個別儲存,令每次括取資料的數量少了一半,那麼速度亦能提 昇(當然亦可以從SQL statement上做微調提昇效能)。
4)主鍵 (Primary Key)
- Primary Key 是表格中的每一筆資料的唯一值。換言之,它是用來獨一無二地確 認一個表格中的每一行資料。
- 沒有Primary Key,在資料搜尋時,便需要以所有資料所為認證之用,使運算速 度大大減低。使用了 Primary Key 後便能以此項資料所認證之用。
總括而言,在設計上最重要的是了解及分析系統整個運作流程,然後在紙上畫上每 組資料(用戶/討論區/科目/年度等)的關聯性,再在每組資料細想要儲存的資料。
最後才建立真正的database,現實情況是沒有可能一次便能製作出完美的database (完成度80至90%已經是非常理想),必須透過編寫程式時製作功能時才會發現另 一些需要儲存的資料。
要深入認識database設計,除了本身數據庫架構外,SQL 語法亦都是另一需要認識 的東西。
以下是國立臺灣大學計算機工程系,有關database設計的一些講義:
http://mll.csie.ntu.edu.tw/course/database_f07/lecture/lecture02.ppt
希望以上資料可給予各位同學幫助。
03Jan08 | myIT開發部

