如何构建我的数据库以存储我网站的用户行为(关注、收藏……)
How to structure my DB for storing user's behavior (follow, favorite...) of my website
我正在建立一个包含文章的网站,这些文章在用户登录后才会显示,我打算添加两个按钮,第一个叫做 "follow this article",第二个是为了使文章成为收藏夹。我的问题是如何在我的数据库中构造它?
我应该只添加一个包含 id_article
、id_user
、followed(1 or 0)
和 favourite (1 or 0)
的 table,还是有其他解决方案可以让我节省更多内存 space?
注意:我的网站会有很多文章,很多用户会访问这些文章。
建立两个独立的关系:articles_followed (id, id_article, id_user)
和 articles_favourite (id, id_article, id_user)
。这将为您提供足够的灵活性:
- 添加新属性,特定于每个关系,
- 分片你的数据库(在某些时候):将一个关系从另一个关系中移出会更容易,因为它们不依赖于彼此,
- 并发更新:您可以在这两个上使用单独的锁,此外,您的事务可见性问题会更少,
- 您不需要保留
is_followed
或 is_favourite
标志:如果有条目,则表示该文章已被关注(一旦取消关注,只需删除该行)
考虑一下您的域 类 结构——哪个选项更便于编码?我敢打赌,如果是两个独立的关系,情况会更清楚。
我正在建立一个包含文章的网站,这些文章在用户登录后才会显示,我打算添加两个按钮,第一个叫做 "follow this article",第二个是为了使文章成为收藏夹。我的问题是如何在我的数据库中构造它?
我应该只添加一个包含 id_article
、id_user
、followed(1 or 0)
和 favourite (1 or 0)
的 table,还是有其他解决方案可以让我节省更多内存 space?
注意:我的网站会有很多文章,很多用户会访问这些文章。
建立两个独立的关系:articles_followed (id, id_article, id_user)
和 articles_favourite (id, id_article, id_user)
。这将为您提供足够的灵活性:
- 添加新属性,特定于每个关系,
- 分片你的数据库(在某些时候):将一个关系从另一个关系中移出会更容易,因为它们不依赖于彼此,
- 并发更新:您可以在这两个上使用单独的锁,此外,您的事务可见性问题会更少,
- 您不需要保留
is_followed
或is_favourite
标志:如果有条目,则表示该文章已被关注(一旦取消关注,只需删除该行)
考虑一下您的域 类 结构——哪个选项更便于编码?我敢打赌,如果是两个独立的关系,情况会更清楚。