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

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

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

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

提前致谢!

解决方法

我会用两张桌子.一个表将存储用户数据,而另一个表将存储他们订阅通知.第二张表将如下所示:
create table notifications (
   user_id int,notification_type int
);

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

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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...