【问题标题】:Best way to store status flags [closed]存储状态标志的最佳方式[关闭]
【发布时间】:2014-01-09 09:36:11
【问题描述】:
为以下场景寻找存储标志的最佳方式。
我的应用程序必须在特定的时间间隔内向用户发送一定数量的通知或提醒。我打算编写一个批处理作业来完成它。为了避免重新发送提醒,我想要一些标志。
示例:在用户登录应用程序的第 2、5 和 10 天发送提醒。
提醒的数量将来可能会增加或减少。我想知道存储标志的最佳方式是什么 - 将其存储为 INT 并使用二进制等价物用于内部表示或每个间隔使用一列(如第二天使用一个 TINYINT(1) 是否更好,一个代表第五个,依此类推...)
存储空间不是限制,我只是在寻找整个行业的最佳实践。
【问题讨论】:
标签:
php
mysql
database-design
flags
enum-flags
【解决方案1】:
一般来说,使用多列而不是合并列,可以为自己省去很多未来的麻烦。
但考虑到您要向用户发送多个提醒,因此您的数据中存在 1:n 关系。这需要一个新表,尤其是因为您已经预计将来会更改提醒的数量。
因此您应该添加一个新表,其中包含有关已发送提醒的信息(userID、date_of_sending、type_of_reminder)。
【解决方案2】:
为了最大限度地提高灵活性,我会向您推荐您自己建议的解决方案。
[...] 将其存储为 INT 并具有用于内部表示的二进制等价物,或为每个间隔使用一列(如第 2 天一个 TINYINT(1),第 5 天一个,依此类推...)
您需要问自己的唯一问题是哪个单位(小时/天/周)最适合,以及是否应该可以更频繁地发送通知(例如每 0.5 天)。