Bagaimana untuk Menghalang Berbilang Undian dalam Sistem Penarafan Komen Menggunakan MySQL?

Mary-Kate Olsen
Lepaskan: 2024-10-29 22:00:03
asal
1086 orang telah melayarinya

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

Menyimpan Tatasusunan dalam MySQL untuk Sistem Pengundian

Untuk mengelakkan undian berbilang dalam sistem penilaian ulasan, tatasusunan ID pengguna boleh disimpan dalam MySQL . Begini cara untuk mencapai ini menggunakan jadual persilangan:

Skema Pangkalan Data

<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>
Salin selepas log masuk

Sisipan Data

<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>
Salin selepas log masuk

Jadual comments_votes menyimpan ID ulasan, ID pengguna dan jenis undian. Kunci utama komposit menghalang undian pendua pada ulasan yang sama.

Kekangan Kunci Asing

Untuk memastikan integriti rujukan dan mengelakkan baris anak yatim:

<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>
Salin selepas log masuk

Ini memastikan baris komen_undi akan sentiasa merujuk kepada ulasan dan pengguna sedia ada.

Faedah Jadual Persimpangan

Menggunakan jadual persimpangan mengelakkan komplikasi berikut:

  • Kesukaran menguatkuasakan integriti rujukan dengan tatasusunan bersiri.
  • Potensi kerosakan data jika mana-mana bahagian tatasusunan menjadi rosak.
  • Kecekapan pengindeksan berkurangan berbanding jadual berasingan untuk ulasan dan undian.

Atas ialah kandungan terperinci Bagaimana untuk Menghalang Berbilang Undian dalam Sistem Penarafan Komen Menggunakan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan