SQL在调查中存储“检查所有适用项”的最佳方法

时间:2018-06-28 12:30:38

标签: sql

我有一项调查,通过这样的复选框询问可用性问题:

I am available (please check all that apply:
[] Early Mornings
[] Mid Mornings
[] Early Afternoons
[] Mid Afternoons
[] Evenings
[] Late Evenings
[] Overnight

我需要转换为SQL数据库。我的问题是:在一个列下存储此数据的最佳方法是什么?我想到的是7位数字的存储,例如:0010001(表明候选人仅在下午早和夜间可用)。有没有更好的办法?感谢您的任何意见!

3 个答案:

答案 0 :(得分:3)

单独的选项表和选项的“联接表”。其他解决方案/建议将阻碍关系数据库中的数据完整性和性能。如果您有另一个数据库,则可能会有所不同,但是如果您使用的是SQL,则除了关系表外别无选择。

答案 1 :(得分:1)

是否有任何特殊原因需要将结果存储在一列中?如果是这样,您的解决方案可能是最好的方法 编辑:如果您要查询此数据,则您的解决方案是最好的方法,否则请使用“ |”遵循其他答案在一个长varchar字段中分隔字符串,尽管查看该数据的任何人都不知道这是什么意思,除非他们花时间按顺序记忆了每个问题。

如果不需要将所有内容都放在一列中,我建议只为每个问题创建一列,其值类似于您已经想要的值。

答案 2 :(得分:1)

管道分隔标志。

使该列成为相当宽的文本列,然后存储:

'Early Mornings|Evenings|Overnight'

如果选择了这3个选项。

(注意:我确实同意另一个答案,即使用单独的列可能会更好,但是如果有充分的理由只需要一列,这就是我会这样做的方法)