如何使用MYSQL来追踪用户喜欢

对于像Digg这样的网站。如何使用MYSQL来追踪某人何时喜欢某篇文章?

这似乎很简单,只需跟踪喜欢的总数即可。我不明白的部分是如何 1.让用户不要仅仅对某件事进行投票 2.允许用户点击他们的个人资料以查看他们喜欢的故事。

你会在包含故事信息的表中添加一列吗,你只需添加逗号分隔的用户名?你可以跟踪谁喜欢一个故事,但是数据会变得很大,尤其是对于拥有100,000个用户或更多用户的digg等网站。你如何让用户看到他们喜欢的所有故事?

谢谢。

0
额外
意见: 1

3 答案

你需要为每个类似的行。不要使用逗号分隔的列表。


如何防止用户仅仅投票一次

在articleid,userid上创建唯一索引。


你如何让用户看到他们喜欢的所有故事?

SELECT articleid FROM likes WHERE userid = 42

但数据会变得很大

是的,它可能会变得巨大。大多数网站都可以轻松应对单一数据库。非常大的网站需要使用集群来在多台机器上存储数据。数据需要进行分区,以便应用程序知道在哪个服务器上查找数据。

1
额外

在社交网络中,这些日子就像Graph数据结构。 像人,照片,视频,状态更新,评论等每个实体都是图和节点的节点,unlikes是两个节点之间的连接。

理想情况下,您可以在喜欢的表格中添加喜欢的表格。 你会在哪里储存谁喜欢,什么是列和其他信息喜欢。

复杂的社交网络不仅仅是这一点。

0
额外

您可以将喜欢的内容存储在一个名为story_likes的独立表格中,其中包含两列:story_id和user_id。

1)在数据库中添加一个约束,这些约束的组合应该是唯一的。这样,你的用户只能喜欢一次故事 2)你可以从这张表中拉出用户喜欢的故事,并使用你拥有的故事ID拉动其他故事细节。对于MYSQL数据库来说,100,000行不是那么大。

您还可以通过为状态= ENUM('LIKED','DISLIKED')列让用户不喜欢故事。

0
额外