ホームページ > データベース > mysql チュートリアル > MySQL を使用したコメント評価システムでの複数投票を防ぐには?

MySQL を使用したコメント評価システムでの複数投票を防ぐには?

Mary-Kate Olsen
リリース: 2024-10-29 22:00:03
オリジナル
1150 人が閲覧しました

How to Prevent Multiple Votes in a Comment Rating System Using MySQL?

投票システム用に 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート