数据库规范化和嵌套列表 - 无法想到解决方案

时间:2011-08-27 01:47:37

标签: database normalization

我正在尝试在我的网站上实现类似于Facebook“喜欢”功能的系统。用户可以点击counter++的按钮。但是,我在将数据有效地存储到我的数据库方面遇到了问题。

每个故事在我的数据库的stories表格中都有自己的行,列likeusers_like

我希望每个人只能一次喜欢这个故事。因此,我需要以某种方式存储数据,以显示用户实际上like++'发布帖子。

我所能做的就是拥有一个名为users_like的列,然后使用CONCAT将每个用户(后跟逗号)添加到列中,然后使用php函数{{1}数据。

但是,据我所知,这种方法与数据库规范化的方向相反。

最好的方法是什么,我理解“最好”是主观的。

我无法在explode表格中添加liked标记,因为该人可能会喜欢这么多故事。

由于

1 个答案:

答案 0 :(得分:5)

您的数据库中需要多对多的表,它们将外键存储到stories表,并将外键存储到user表。你在这张桌子上加上一个约束,说故事fk - user fk combo必须是唯一的。

您现在甚至不必拥有like列,只需计算与您的故事相对应的多对多表格中的行数。