我的观点如下:
我有一个存储事件的MySQL数据库。这些事件可能发生在一周的不同日子。你可以说它看起来如下:
Day | Active
Mon | yes
Tue | yes
Wed | no
Thu | no
Fri | yes
Sat | no
Sun | no
现在我不完全确定如何将其保存到数据库中。当然有几种可能性,但我看到了我能想到的一切的缺点:
在C ++中,这些数据可以存储到std :: bitset中。我打赌在MySQL中可以使用一些东西......请指出我:)
PS:
我不知道它是否重要:数据将用PHP读取并作为JSON提供给外部世界。
答案 0 :(得分:3)
您可以使用SET类型(http://dev.mysql.com/doc/refman/5.0/en/set.html)。例如,这就是您的表格所示:
+-------------+--------------------+
| event_name | days |
+-------------+--------------------+
| some event | 'monday,friday' |
+-------------+--------------------+
| another one | 'tuesday' |
+-------------+--------------------+
从这种表中选择行很容易,对于潜伏在数据库中的任何人来说,它都是真的可读。
答案 1 :(得分:2)
你应该多使用int的想法。在你的php中,你可以将掩码定义为常量,然后使用按位运算来确定设置了哪些标志。
所以不要做像
这样的事情myvar & 0x010
看起来更像是在使用常量
myvar & IS_MONDAY
答案 2 :(得分:0)
如果您的条目仅用于存储您提供的输入的每周事件,为什么不创建VARCHAR字段并将其存储为JSON字符串: {“Mon”:“yes”,“Tue”:“yes”,“Wed”:“no”,“Thu”:“no”,“Fri”:“yes”,“Sat”:“no”,“太阳“:”没有“}