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