如何构建我的数据库以存储我网站的用户行为(关注、收藏……)

How to structure my DB for storing user's behavior (follow, favorite...) of my website

我正在建立一个包含文章的网站,这些文章在用户登录后才会显示,我打算添加两个按钮,第一个叫做 "follow this article",第二个是为了使文章成为收藏夹。我的问题是如何在我的数据库中构造它?

我应该只添加一个包含 id_articleid_userfollowed(1 or 0)favourite (1 or 0) 的 table,还是有其他解决方案可以让我节省更多内存 space?

注意:我的网站会有很多文章,很多用户会访问这些文章。

建立两个独立的关系:articles_followed (id, id_article, id_user)articles_favourite (id, id_article, id_user)。这将为您提供足够的灵活性:

  • 添加新属性,特定于每个关系,
  • 分片你的数据库(在某些时候):将一个关系从另一个关系中移出会更容易,因为它们不依赖于彼此,
  • 并发更新:您可以在这两个上使用单独的锁,此外,您的事务可见性问题会更少,
  • 您不需要保留 is_followedis_favourite 标志:如果有条目,则表示该文章已被关注(一旦取消关注,只需删除该行)

考虑一下您的域 类 结构——哪个选项更便于编码?我敢打赌,如果是两个独立的关系,情况会更清楚。