MySQL への配列の保存: 代替アプローチ
コメント評価システムでの複数投票を防ぐために、ユーザーの配列を保存したいとします。 MySQL フィールドの ID。これは MySQL では直接サポートされていませんが、次の代替アプローチを検討してください:
データベース スキーマ
3 つのテーブルを作成します:
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) );
データ例
INSERT INTO comments VALUES (1, 'first comment'); INSERT INTO comments VALUES (2, 'second comment'); INSERT INTO users VALUES (1, 'user_a'); INSERT INTO users VALUES (2, 'user_b'); INSERT INTO comments_votes VALUES (1, 1, 1); INSERT INTO comments_votes VALUES (2, 1, 1);
ユーザー資格の確認
ユーザーが特定のコメントに既に投票しているかどうかを確認するには、次の単純なクエリを使用します。
SELECT COUNT(*) FROM comments_votes WHERE comment_id = <comment id> AND user_id = <user id>;
このアプローチでは、comments_votes テーブルの主キー制約が一意性を確保しているため、複数の投票が防止されます。
複数投票の防止
ユーザーがすでに投票している場合は、クエリ結果に基づいてシステム ロジックの投票アイコンを無効にします。
このアプローチの利点
以上がMySQL に配列を保存せずにコメント評価システムでの複数投票を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。