你好我有一个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喜欢的所有主题)时,您无法真正获得它,因为它与许多其他值混合在一起。
因此,为了使数据库规范化,我强烈建议您将其分离到另一个表中,这样您就可以更容易地提取数据,以满足以后的任何需要。这就是关系数据库的意义所在。