在 MySQL 中存储投票系统数组
为了防止评论评级系统中的多次投票,可以在 MySQL 中存储用户 ID 数组。以下是如何使用交集表实现此目的:
数据库架构
<code class="sql">CREATE TABLE comments ( comment_id int, body varchar(100), PRIMARY KEY (comment_id) ); CREATE TABLE users ( user_id int, username varchar(20), PRIMARY KEY (user_id) ); CREATE TABLE comments_votes ( comment_id int, user_id int, vote_type int, PRIMARY KEY (comment_id, user_id) );</code>
数据插入
<code class="sql">INSERT INTO comments VALUES (1, 'first comment'); INSERT INTO users VALUES (1, 'user_a'); INSERT INTO comments_votes VALUES (1, 1, 1);</code>
comments_votes 表存储评论 ID、用户 ID 和投票类型。复合主键可防止对同一评论进行重复投票。
外键约束
确保引用完整性并防止孤立行:
<code class="sql">CREATE TABLE comments ( ... ) ENGINE=INNODB; CREATE TABLE users ( ... ) ENGINE=INNODB; CREATE TABLE comments_votes ( ... FOREIGN KEY (comment_id) REFERENCES comments (comment_id), FOREIGN KEY (user_id) REFERENCES users (user_id) ) ENGINE=INNODB;</code>
这可以确保 comments_votes 行始终引用现有评论和用户。
交集表的好处
使用交集表可以避免以下复杂情况:
以上是如何使用 MySQL 防止评论评级系统中的多重投票?的详细内容。更多信息请关注PHP中文网其他相关文章!