使用php投票系统存储投票的最佳方式

时间:2011-05-30 15:26:34

标签: php mysql voting

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

登录用户只能评价为喜欢或disliked_it

是存储评级的用户的最佳方式,应将其存储为长文本,如

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    

2 个答案:

答案 0 :(得分:2)

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

性能受到影响很难。它非常环境,并且依赖于硬件/软件。尝试两种方法,看看哪种方法更好,但我猜它会成为单独的表选项。

答案 1 :(得分:2)

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

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