我正在尝试在我的网站上实现类似于Facebook“喜欢”功能的系统。用户可以点击counter++
的按钮。但是,我在将数据有效地存储到我的数据库方面遇到了问题。
每个故事在我的数据库的stories
表格中都有自己的行,列like
和users_like
。
我希望每个人只能一次喜欢这个故事。因此,我需要以某种方式存储数据,以显示用户实际上like++'
发布帖子。
我所能做的就是拥有一个名为users_like
的列,然后使用CONCAT
将每个用户(后跟逗号)添加到列中,然后使用php函数{{1}数据。
但是,据我所知,这种方法与数据库规范化的方向相反。
最好的方法是什么,我理解“最好”是主观的。
我无法在explode
表格中添加liked
标记,因为该人可能会喜欢这么多故事。
由于
答案 0 :(得分:5)
您的数据库中需要多对多的表,它们将外键存储到stories
表,并将外键存储到user
表。你在这张桌子上加上一个约束,说故事fk - user fk combo必须是唯一的。
您现在甚至不必拥有like
列,只需计算与您的故事相对应的多对多表格中的行数。