[讨论] 复选值的储存方式与比对

楼主: JYHuang (夏天到了,冷不起来了说)   2014-08-30 08:29:18
网页上不管是checkbox或是multi-select,要将所选的值存入数据库。
目前想到的方式有两种
一种是在数据库开个表存主键和值。
一个是用php的serialize(或是implode)转成字串存在字段。
前者比较直觉,SQL搜寻也比较容易(用WHERE `field` IN (A,B) 就好)
不过如果有一堆选项的话要开一堆表(或单一表用键值隔开)
在用POST更新时 除非是一次全部洗掉重加
也需要判断(存在的取消,不在的新增)之类的情类的。
后者比较省数据库的空间
不过搜寻跟比对上比较麻烦(要用 `field` like A or `field` like B
单笔更新的话也是整栏要洗掉重丢值
取值时则是要先判断是否能够unserialize.
除了这两种方式外
不知各位还有什么样的作法?
用enum,set?
其实还是有点不清楚SET属性字段如何作复数值的条件搜寻
作者: tkdmaf (皮皮快跑)   2014-08-30 09:27:00
还有一个就是转json字串了,搜寻方式和serialize相同好处大概就是可以直接提供给任意语言直接分析吧。缺点是……如果你进数据库前没先处理好中文的话......
作者: liaosankai (低温烘焙)   2014-08-30 12:39:00
set,enum +1

Links booklink

Contact Us: admin [ a t ] ucptt.com