mysql与php投票系统存储投票的最佳方式


Best way mysql storing votes with php voting sytem

你好我有一个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    

一定要把它做成一个单独的表。在一个字段中存储多个值几乎总是一种糟糕的设计,并且使以后很难处理。例如,要检查某人是否已经投票,你必须在"一体式"字段中进行子字符串搜索。而如果使用单独的user_votes表,则只需检查是否存在记录。

业绩打击难以量化。它非常依赖于环境和硬件/软件。尝试这两种方法,看看哪种方法在您的情况下更好,但我猜会是单独的表选项获胜。

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

因此,为了使数据库规范化,我强烈建议您将其分离到另一个表中,这样您就可以更容易地提取数据,以满足以后的任何需要。这就是关系数据库的意义所在。