看板 Web_Design 關於我們 聯絡資訊
各位好,最近在開發 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