php - "likes for comments"数据库设计?

标签 php mysql database database-design phpmyadmin

我有 Posts 的数据库表和comments .
我希望允许用户对每条评论和帖子表示喜欢或不喜欢。
所以..我对此没什么想法。请告诉我我是否正确。

在评论表中创建两个附加列。

likes | liked_uids

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

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

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

最佳答案

你可以这样创建->

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

关于php - "likes for comments"数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783772/

相关文章:

php - ZeroMQ 和 PHP-FPM

php - PDO 连接到外部 MySQL 数据库(来自 AWS)- "SQLSTATE[28000] [1045] Access denied for user"

php - 获取 php 填充的选择选项的 ID

java - Spring Data JPA findAllBy ... in ... orderBy 输入列表

ruby-on-rails - 控制购物车的最佳方式

Mysql 内连接查询显示错误结果

mysql - 选择时插入查询

php - Mysql - 序列化失败 : 1213 Deadlock found when try to get lock; try restarting transaction, 但查询不在事务中

php - 数组的组合

php - Laravel 5.4 中任何用户登录时喜欢和不喜欢的功能