【发布时间】:2011-07-05 11:23:57
【问题描述】:
场景: 我说过 4 个复选框,用户可以以任意组合选择这些复选框(他们也有权不选择一个复选框)。我必须将这 4 个选项存储到单个列中。我认为最好的选择是使用二进制表示来存储
option1 has the constant value 1
option2 has the constant value 2
option3 has the constant value 4
option4 has the constant value 8
因此,如果客户选择 option2 和 option4,则存储在 DB 中的值将是 2 + 8 即:10,如果客户选择 option1、option4 和 option8,则值将是 1 + 4 + 8 即 13 .
当我从 mysql 查询时,我可以使用
Select * from option_table where (option & 4)=4;
如果我想检索选择了 option3 的行。
但由于某种原因,我不能使用这种方法,或者只是说我需要知道将这些多个值存储在单个列中的下一个最佳选择是什么?
【问题讨论】:
-
在单个列中存储多个值是从不正确的解决方案。 “但由于某种原因我不能使用这种方法”继续,给我们一个线索为什么不。
-
这是一组奇怪的约束。您必须使用一列,但不能使用位掩码。为什么?
-
@symcbean:性能要求通常会覆盖这些规则。
-
定义“不能使用这种方法” - 你的意思是不允许使用位掩码,还是尝试这样做对你来说失败了?
-
因为我使用的框架不支持按位运算。