在MySQL 中儲存投票系統陣列
為了防止評論評分系統中的多次投票,可以在MySQL 中儲存使用者ID 陣列。以下是如何使用交集表實現此目的:
數據庫架構
<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中文網其他相關文章!