您好我有一个特定记录的数据库,它需要为一周中的每一天存储1或0。那么哪一个会更好?将每个位转换为一个整数并在数据库中只有一个名为days
的整数,或者我们应该将它们全部分开布尔值,以便有sunday, monday, tuesday...
列?
请注意,这些列仅用于我们软件中的计算(而不是用于DB本身),因此使用这些值的唯一方法是选择,更新和插入。
答案 0 :(得分:2)
我会选择单独的列,原因如下:
这似乎是设计得更好的数据库模型(因为更清晰,更直观,更易于理解),每个人都可能不需要任何进一步的解释;
“又是星期天的哪一位......?我给它分配了最重要的位,还是最不重要的位?” - 您不会遇到使用单独的命名列的问题......因此错误的可能性会降低。
如果您以后想要增强数据库模型以便单日存储NULL
,那么您几乎肯定每天都需要一个单独的列。否则,您每天至少需要两位(因为您现在有3种可能的状态,1位不再足够)以及适当的自制编码方案。
我很确定今天的RDBMS非常聪明,可以将几个布尔列打包在一起;
答案 1 :(得分:2)
分隔列。
数据库引擎无论如何都会打包它们并为您透明地处理这些位。我怀疑它在这方面比你或我自己的更好......
答案 2 :(得分:0)
这取决于您的需求。使用bitshifting查询时,Sql Server的性能会降低。如果你每次查询只进行一天的大量过滤,那么我建议每天使用单独的位字段。