[问题] 数据库存放常数

楼主: 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