mysql - 用户项目评级,每个用户1个评级,可更新 - 表格结构?

时间:2009-10-14 15:17:10

标签: sql mysql database-design data-modeling

我想让我的用户能够对网站上的每个项目进行评分,从1到5.他们还必须能够根据需要返回并修改每个项目的评级。最后,该项目的页面将显示所有用户评级的平均日期。

至于PHP,我想我可以处理。我正在努力的是设想一组逻辑表来处理上述问题?

我在考虑你的标准:

ID | ITEM## | USERID | RATING

表格设计,但感觉回头并不断检查用户之前是否对某个项目进行过评级,并在每次查看该项目时返回该结果,都会产生一组相当慢的脚本...特别是项目&用户数随着时间的推移而增长。

对于这种情况,有没有人有更好的表格布局想法?我们正在寻找发布后的1500多件商品,并且将来会更频繁地添加,所以每件商品的表格有点过分不是吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

这是最好的方法。它被称为多对多关系。您有许多用户和许多项目。一个用户可以对许多项目进行评级,一个项目可以被许多用户评级。

不要在您建议的表中使用ID字段,而是将密钥放在ITEM和USERID上。这样,用户只能对项目评分一次。如果您尝试对其进行两次评级,则会出现错误。同时在这两个字段上编制索引以加快对表的搜索。

答案 1 :(得分:2)

我会说在ITEM和USERID上放一个唯一索引,用“REPLACE INTO”更新行应该有用。我强烈建议你为每个项目制作一张桌子,以节省一些负担。