[問題] 資料庫存放常數

作者: johnny94 (32767)   2015-05-18 23:44:04
各位好,最近在開發 Web Application 的時,遇到一些問題,想請教要怎麼做會
比較好。就是我的 Database 中的某些 column 會存放字串,字串內容的變化是
固定的。
舉例來說,我有一個 table 用來記錄每天的課表,像這樣:
科目 星期
[ 數學, 星期一 ]
[ 國語, 星期二 ]
[...]
[...]
[ 電腦, 星期四 ]
我想問的是,星期一 到 星期天 這七個字串,應該要怎麼存?
我目前能想出這些方法:
方法一:
直接存原始字串 (就像上面的例子一樣)
方法二:
再開一個 table 預先存放這七個字串,要取用時就用 id 來 join 兩個 table
舉例如下:
科目 星期_id id 星期
[ 數學, 1 ] [ 1, 星期一 ]
[ 國語, 2 ] [ 2, 星期二 ]
[...] [ 3. 星期三 ]
[...] [ ..以此類推.. ]
[ 電腦, 4 ]
方法三:
不存在 database 中,直接以常數或 enum 的形式放在程式碼裡
舉例如下:(以 pseudocode 表示)
const MONDAY = '1'
const TUESDAY = '2'
這時候存資料時直接拿這個常數來用,像這樣:
save(數學, MONDAY) // [ 數學, 1 ]
(其實這裡也衍生出一個問題,到底是要存放原始文字還是存代號,等到取出來再轉換)
以上就是我的問題,如果有不清楚或覺得怪怪的地方,我再試著說更清楚,謝謝
作者: iceblue7x (滿城盡帶路人甲)   2015-05-19 00:04:00
以搜尋的效率2應該比較好 1的話可讀性比較高
作者: GoalBased (Artificail Intelligence)   2015-05-19 12:40:00
一和二其實要看狀況而定,不過大多數狀況下2比1好至於三的話..我是會建議存到資料庫不然你就資料的角度來看,根本就不知道那個1到底是甚麼這個資料就變成與你的程式強耦合(也就是你要有這支程式才有辦法了解資料的意義) 所以整體來講會推薦2
作者: johnny94 (32767)   2015-05-19 16:13:00
喔喔! 看來還是保存在資料庫是比較好的作法,謝謝~
作者: poiuy999 (Nines)   2015-05-19 23:06:00
請參考 資料庫正規化

Links booklink

Contact Us: admin [ a t ] ucptt.com