0

我有多个用户/客户(假设有N个用户) 和M条文章。规范化和高效的SQL数据库设计

bydeult这些M条款将会显示给每个用户。用户可以将文章标记为“不感兴趣”。如果他这样做,我们不会向他/她展示这篇文章。但这篇文章可能对其他没有标记为“不感兴趣”的用户可见。对?

现在我在这里遇到问题。我不想为不同的用户创建文章的重复对象。相反,应该有一些方法/标志(not_interested)与每个用户相关联,以便我们可以根据此筛选出来。但我不知道如何在SQL数据库中执行此操作。

任何建议,将不胜感激。

表:

Article: 
     title, description, etc.. 

User: 
    username, email, phone, etc 

我应该创建一个中间表,这将有foriegn关键文章,用户和标志not_interested?有没有更好的办法?

回答

1

你需要一个多对多的表,像

user_article: 
    article_id, user_id, not_interested 
+0

耶刚刚更新了我的问题 – rocktheparty

+0

或名称表像'user_not_interested_in_article'并跳过'not_interested'列:-) –

+0

而且使用'LEFT JOIN ... IS NULL'来查找不是不感兴趣的行。 –