数据库设计 – 在数据库中存储多个标志的最佳方式

我有一个基于Web的应用程序,通过电子邮件通知用户网站上的活动.用户可以选择他们想要接收哪些类型的通知.到目前为止,有大约10种不同的选择(每一种都是真/假).

我正在将它存储在一个varchar字段中,为0或1,用逗号分隔.例如:
1,0,0,0,1,1,1,1,0,0

这是有效的,但很难添加新的通知标志,并跟踪哪个标志属于哪个通知.这样做有接受的标准吗?我正在考虑为每个通知类型添加一个列.然后我可以添加新的列,如果我需要,但我不知道这是多么高效.

提前致谢!

最佳答案
我会用两张桌子.一个表将存储用户数据,而另一个表将存储他们订阅的通知.第二张表将如下所示:

create table notifications (
   user_id int,
   notification_type int
);

我将在user_id与用户表中的用户ID之间建立一个FK关系,并删除级联.同时使用user_id和notification_type作为主键.要检查用户是否想要特定的通知,只需在两个表之间进行连接,并选择notification_type与所讨论的对应的行.如果结果集不为空,则用户希望通知.

添加新通知变得微不足道(删除).只需添加(删除)一个新的类型值,并让用户选择接受或不接受.如果您希望将通知类型保留在表中,以便通过应用程序进行管理,这些应用程序也可以工作,但是会更复杂一些.

转载注明原文:数据库设计 – 在数据库中存储多个标志的最佳方式 - 代码日志