对于像 Digg 这样的网站。如何使用 MYSQL 跟踪某人何时喜欢一篇文章?
跟踪喜欢的总数似乎很简单。我不明白的部分是如何 1. 让用户不要只投票一次 2. 允许用户点击他们的个人资料来查看他们喜欢的故事。
您是否会在表中有一列包含您只需添加逗号分隔的用户名的故事信息?您可以跟踪谁喜欢某个故事,但数据会变得非常庞大,尤其是对于像 digg 这样拥有 100,000 或更多用户的网站。您将如何让用户看到他们喜欢的所有故事?
谢谢你。
对于像 Digg 这样的网站。如何使用 MYSQL 跟踪某人何时喜欢一篇文章?
跟踪喜欢的总数似乎很简单。我不明白的部分是如何 1. 让用户不要只投票一次 2. 允许用户点击他们的个人资料来查看他们喜欢的故事。
您是否会在表中有一列包含您只需添加逗号分隔的用户名的故事信息?您可以跟踪谁喜欢某个故事,但数据会变得非常庞大,尤其是对于像 digg 这样拥有 100,000 或更多用户的网站。您将如何让用户看到他们喜欢的所有故事?
谢谢你。
每个喜欢都需要一行。不要使用逗号分隔的列表。
如何 1. 防止用户只对某事进行一次投票
在 articleid、userid 上创建唯一索引。
您将如何让用户看到他们喜欢的所有故事?
SELECT articleid FROM likes WHERE userid = 42
但数据会变得巨大
是的,它可能会变得很大。大多数网站都可以轻松处理单个数据库。非常大的网站需要使用集群在多台机器上存储数据。需要对数据进行分区,以便应用程序知道在哪个服务器上查找数据。
在社交网络中,这些天就像 Graph dataStructure。每个实体,如人、照片、视频、状态更新、评论等都是图的节点,而喜欢,不像是两个节点之间的连接。
理想情况下,您将有一个喜欢的表格,您只需在其中添加一个喜欢。您将在哪里存储喜欢的人、在列中喜欢的内容和其他信息。
复杂的社交网络不仅仅如此。
您可以将喜欢存储在名为 story_likes 的单独表中,其中包含两列:story_id 和 user_id。
1)在数据库中放置一个约束,即这些组合应该是唯一的。这样你的用户只能喜欢一个故事一次。
2)您可以从该表中提取用户喜欢的故事,并使用您拥有的故事 ID 提取其他故事详细信息。100,000 行对于 MYSQL 数据库来说并没有那么大。
您还可以通过设置 state=ENUM('LIKED', 'DISLIKED') 列来允许用户不喜欢故事。