我有一个基于Web的应用程序,通过电子邮件通知用户该网站上的活动.用户可以选择他们想要接收的通知类型.到目前为止,大约有10种不同的选项(每种都是真/假).
我目前将它存储在一个varchar字段中,以逗号分隔的0或1.例如:1,0,0,0,1,1,1,1,0,0
这有效,但很难添加新的通知标志并跟踪哪个标志属于哪个通知.这样做是否有可接受的标准?我正在考虑为每个通知类型添加另一个包含列的表.然后,如果需要,我可以添加新列,但我不确定这是多么有效.
提前致谢!
tva*_*son 21
我会用两张桌子.一个表将存储用户数据,另一个表将存储他们订阅的通知.第二个表看起来像这样:
create table notifications (
user_id int,
notification_type int
);
Run Code Online (Sandbox Code Playgroud)
我在user_id和users表中的用户id之间建立了一个FK关系,删除时级联.同时使用user_id和notification_type作为主键.要检查用户是否想要特定通知,只需在两个表之间进行连接,并选择notification_type与相关提示匹配的行.如果结果集非空,则用户想要通知.
添加新通知变得微不足道(删除也是如此).只需添加(删除)新类型值,让用户选择是否接受.如果您希望将通知类型保留在表中以通过可行的应用程序进行管理,但它会更复杂一些.
使用 MySQL?
那么,SET 数据类型就是答案。
“MySQL SET 数据类型在 MySQL 表中存储为整数值,占用 1 到 8 个字节,具体取决于可用元素的数量。” - http://dev.mysql.com/tech-resources/articles/mysql-set-datatype.html ”