MySQL에 배열 저장: 대체 접근 방식
댓글 평가 시스템에서 다중 투표를 방지하려면 사용자 배열을 저장하려고 합니다. MySQL 필드의 ID입니다. 이는 MySQL에서 직접 지원되지 않지만 다음과 같은 대체 접근 방식을 고려하십시오.
데이터베이스 스키마
세 개의 테이블 생성:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!