투표 시스템을 위해 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 행이 항상 기존 댓글을 참조하고 user.
교차 테이블의 이점
교차 테이블을 사용하면 다음과 같은 문제를 피할 수 있습니다.
위 내용은 MySQL을 사용하여 댓글 평가 시스템에서 다중 투표를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!