【问题标题】:"likes for comments" database designing? [closed]“点赞评论”数据库设计? [关闭]
【发布时间】:2013-11-16 00:27:25
【问题描述】:

我有Postscomments 的数据库表。
我希望允许用户对每个 cmets 和帖子进行喜欢或不喜欢。
所以..我没有这样做的想法。请告诉我我是否正确。

在 cmets 表中创建两个额外的列。

likes | liked_uids

如果有人点击赞按钮,则在likes 字段中为当前值添加+1,否则为当前值添加-1。 并将用户的 id 添加到 liked_uids 字段作为字符串,以“-”破折号分隔。 然后下次我可以将该字符串放入数组并检查,
当前用户 ID 是否已记录。如果用户 id 是,则可以决定该用户是否参与了点赞。

但是我对这个结构没有什么问题,如果有多个用户同时喜欢一个帖子怎么办?那么我可能会从 liked_uids 字符串中丢失一些数据(最后一个 uid)。

那么请告诉我这样做的正确方法是什么?

【问题讨论】:

  • 您不想将信息保存为字段中的分隔字符串。这绝不是(好吧,几乎从来没有)一个选择。只是不要。曾经。相信我:) ...如果您的数据意味着多个事物(用户ID)可以属于一个事物(喜欢的事物),您需要一个一对多的连接,所以这意味着一个额外的表。问题是,解释如何做到这一点以及为什么基本上是“如何设计数据库”101,所以我认为范围有点太大了。尝试阅读规范化。

标签: php mysql database database-design phpmyadmin


【解决方案1】:

你可以这样创建->

id type ('comment/like') uid comment      post_id
1   comment               1   good post    100
2    like                 2   null         101
3   like                  1  null          102
4   comment               3  bad post      104

不建议存储点赞数。如果您想统计特定帖子的点赞数:

select count(*) from tableName where post_id = 100

存储由任何分隔符分隔的用户 ID 会使您遇到问题,因此不推荐。如果您的商店用户 ID 使用分隔符,则更新或检索将是一项整洁的工作。

如果您想查看特定用户是否喜欢特定帖子,请使用以下查询:

select count(*) from tableName where post_id = 100 AND uid =1

【讨论】:

  • 谢谢。你不认为当表格填满数千行的时候,这不会影响网站的效率吗?
  • Mysql 可以处理比您期望的更多的记录。而你现在拥有的桌子会让你遇到问题。
【解决方案2】:

我在手机上打字太慢了^^一切都已经回答了。

我从未做过类似的事情,但我不会在评论表中添加这两列。我宁愿创建一个像“votes”这样的新表,它会有以下列。

comment_ref | like | user_ref

每次有人喜欢评论时,您都会在其中插入一个新行。也可以将comment_ref 和user_ref 组合成key,这样就不能插入两次。

最后,您只需进行查询即可获得单个评论的投票。

SELECT COUNT(*) FROM votes WHERE comment_ref = 123

【讨论】:

  • 您可以为“喜欢”保存 1,为“不喜欢”保存 0,而不是只为喜欢保存 1。在这种情况下,您可以编写一个查询,例如 SELECT(SELECT COUNT() FROM votes WHERE like = 1 AND comment_ref = 123) as Likes, (SELECT COUNT() FROM votes WHERE like = 0 AND comment_ref = 123) 不喜欢
【解决方案3】:

一种方法是使用一个单独的 Likes 表,其中包含 Likes、DisLikes、Likes_UID、DisLikes_UID 列以及 cmets 和 likes 的映射表,例如:Comments_Likes 以及发布和点赞 Posts_Likes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2011-11-30
    相关资源
    最近更新 更多