投票システム用に MySQL に配列を保存する
コメント評価システムでの複数投票を防ぐために、ユーザー ID の配列を MySQL に保存できます。 。交差テーブルを使用してこれを実現する方法は次のとおりです。
データベース スキーマ
<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 中国語 Web サイトの他の関連記事を参照してください。