【发布时间】:2013-11-16 00:27:25
【问题描述】:
我有Posts 和comments 的数据库表。
我希望允许用户对每个 cmets 和帖子进行喜欢或不喜欢。
所以..我没有这样做的想法。请告诉我我是否正确。
在 cmets 表中创建两个额外的列。
likes | liked_uids
如果有人点击赞按钮,则在likes 字段中为当前值添加+1,否则为当前值添加-1。
并将用户的 id 添加到 liked_uids 字段作为字符串,以“-”破折号分隔。
然后下次我可以将该字符串放入数组并检查,
当前用户 ID 是否已记录。如果用户 id 是,则可以决定该用户是否参与了点赞。
但是我对这个结构没有什么问题,如果有多个用户同时喜欢一个帖子怎么办?那么我可能会从 liked_uids 字符串中丢失一些数据(最后一个 uid)。
那么请告诉我这样做的正确方法是什么?
【问题讨论】:
-
您不想将信息保存为字段中的分隔字符串。这绝不是(好吧,几乎从来没有)一个选择。只是不要。曾经。相信我:) ...如果您的数据意味着多个事物(用户ID)可以属于一个事物(喜欢的事物),您需要一个一对多的连接,所以这意味着一个额外的表。问题是,解释如何做到这一点以及为什么基本上是“如何设计数据库”101,所以我认为范围有点太大了。尝试阅读规范化。
标签: php mysql database database-design phpmyadmin