你好 我有一个带有评级表的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
答案 0 :(得分:2)
绝对让它成为一个单独的表格。在单个字段中存储多个值几乎总是糟糕的设计,并且使得以后难以处理。例如要检查某人是否已经投票,您必须对您的“一体化”字段进行子字符串搜索。而如果您使用单独的user_votes表,则只需检查记录是否存在。
性能受到影响很难。它非常环境,并且依赖于硬件/软件。尝试两种方法,看看哪种方法更好,但我猜它会成为单独的表选项。
答案 1 :(得分:2)
在同一个字段中存储多个值的问题在于它会使数据库非规范化,从而使您更难以提取数据。例如,当您需要选择具有某个like_it ID的记录时(例如,获取此ID所喜欢的所有主题),您无法真正获得它,因为它与许多其他值混合在一起。
因此,为了使您的数据库规范化,我强烈建议您将其分成另一个表,以便您可以更轻松地提取数据以满足以后的需求。这就是关系数据库的重点。