0

嗨,我有一个带有评级表的 php 投票脚本,用于多个类别的文章、图像和评论

登录用户只能评价喜欢它或不喜欢它

存储评分用户的最佳方式应该是将它们存储在像这样的长文本中

54654,5145463,19993,3215,69445 

或创建一个将 rate_id 与 user_id 链接的新表

以及对脚本和mysql性能有什么影响

rate_id     int(11) unsigned    NO  PRI     NULL    auto_increment
rate_for_id     int(11) unsigned    NO NULL      
rate_for    enum('article','image','comment')   NO NULL      
liked_it    int(5) unsigned     NO NULL      
disliked_it     int(5) unsigned     NO NULL      
users_rated     longtext    NO      NULL    
4

2 回答 2

2

绝对让它成为一个单独的桌子。在单个字段中存储多个值几乎总是糟糕的设计,并且使得以后难以处理。例如,要检查是否有人已经投票,您必须在“一体式”字段中进行子字符串搜索。而如果您使用单独的 user_votes 表,您只需检查记录是否存在。

性能打击很难量化。这是非常情境化的,并且取决于硬件/软件。尝试这两种方法,看看哪种方法更适合您的情况,但我猜这将是单独的表格选项获胜。

于 2011-05-30T15:35:39.263 回答
2

在同一字段中存储多个值的问题在于它会使您的数据库不规范化,从而使您更难提取数据。例如,当您需要选择具有某个like_it 的ID 的记录(例如,获取该ID 喜欢的所有主题)时,您无法真正获得它,因为它与许多其他值混合在一起。

因此,为了使您的数据库标准化,我强烈建议您将其分离到另一个表中,以便您可以更轻松地提取数据以满足以后的需求。这就是关系数据库的重点。

于 2011-05-30T15:37:56.820 回答