作者johnny94 (32767)
看板Web_Design
標題[問題] 資料庫存放常數
時間Mon May 18 23:44:04 2015
各位好,最近在開發 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 ]
(其實這裡也衍生出一個問題,到底是要存放原始文字還是存代號,等到取出來再轉換)
以上就是我的問題,如果有不清楚或覺得怪怪的地方,我再試著說更清楚,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.32.165.51
※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1431963857.A.9EB.html
→ iceblue7x: 以搜尋的效率2應該比較好 1的話可讀性比較高 05/19 00:04
→ GoalBased: 一和二其實要看狀況而定,不過大多數狀況下2比1好 05/19 12:40
→ GoalBased: 至於三的話..我是會建議存到資料庫 05/19 12:41
→ GoalBased: 不然你就資料的角度來看,根本就不知道那個1到底是甚麼 05/19 12:41
→ GoalBased: 這個資料就變成與你的程式強耦合(也就是你要有這支程式 05/19 12:42
→ GoalBased: 才有辦法了解資料的意義) 所以整體來講會推薦2 05/19 12:42
→ johnny94: 喔喔! 看來還是保存在資料庫是比較好的作法,謝謝~ 05/19 16:13
推 poiuy999: 請參考 資料庫正規化 05/19 23:06