我需要将多个选项保存到单个字段中,这样我就不必为每个选项创建一个列。可以选择的选项会随着时间的推移而增加,因此使用列可能不是最好的方法...一次可以选择太多选项并保存到数据库中。
所以我提出了以下解决方案,并想知道是否有更好的方法来做到这一点,以及是否有人可以看到任何问题。我已经完成了测试,它似乎对我选择的变化很好。
方法: 为所有选项分配唯一的素数,让用户选择他想要的选项,将所选选项的相应素数相乘,并将结果值保存在字段中。 检查选项是否已选中时: 如果保存的数字可以被没有剩余的素数整除,则用户选择该素数的相应选项。 例如:
选择: 周一,周五,周日 2 * 11 * 17 = 374
**Monday** = 374/2=187, (Or 374 % 2 = 0)
Tuesday = 374/3=124.6666666666667,
Wednesday = 374/5=74.8,
Thursday = 374/7=53.42857142857143,
**Friday** = 374/11=34,
Saturday = 374/13=28.76923076923077,
**Sunday** = 374/17=22
答案 0 :(得分:3)
使用行。这似乎是一种标准的多对多关系。
创建一个表来保存选项,然后创建另一个表来将选项与原始表相关联。
进一步阅读:http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php
答案 1 :(得分:2)
我认为您可以使用de bitwise权限模式。基本上,您将每个选项存储为2的幂。通过这种方式,您可以在单个整数字段中包含所有可能的组合。只需google Bitwise persmission来实现解决方案
答案 2 :(得分:0)
你的方法似乎特别神秘。如果必须在一列中存储多个数据,请考虑使用XML。使用XML类型的字段,您可以以相对干净的形式存储结构化数据,并使用XQuery至少有机会以与其他SQL查询兼容的方式查询和使用它。