我制作了一个投票系统并将投票记录在投票表中,如下所示:
post_id | user_id | votes | date
然后,我将此投票添加到具有如下结构的用户元表中:
user_id | meta_key | meta_value
在这个表中,给一个 user_id 的 meta_key 为“votes”,我可以保存或获取一个 post_ids 数组作为 meta_value。
我在两张桌子上保存一票的原因是——
1. 为什么要使用投票表?
我需要计算所有帖子的 vote_total 和 vote_popularity,如果我只将它保存为用户元表中的数组元素,这并不容易。
2. 为什么要使用用户元表?
我需要检查用户是否已经为帖子投票。用户元数据一旦设置就会被缓存。所以,我只需要检查 in_array($post_id, $my_voted_posts)。如果没有用户元表,对于用户访问的每个帖子,我将不得不检查投票表。
有没有更好的办法?
虽然我的投票系统运行良好。但不知何故,我觉得这不是有效的方法。我想咨询您的专业人士,了解如何改进它以获得更好的性能。谢谢!