Bagaimana untuk Menghalang Berbilang Undian dalam Sistem Penarafan Komen Tanpa Menyimpan Tatasusunan dalam MySQL?

Susan Sarandon
Lepaskan: 2024-10-31 02:35:01
asal
633 orang telah melayarinya

How to Prevent Multiple Votes in a Comment Rating System Without Storing Arrays in MySQL?

Menyimpan Tatasusunan dalam MySQL: Pendekatan Alternatif

Untuk menghalang pengundian berbilang dalam sistem penilaian ulasan, anda ingin menyimpan tatasusunan pengguna ID dalam medan MySQL. Walaupun ini tidak disokong secara langsung oleh MySQL, pertimbangkan pendekatan alternatif berikut:

Skema Pangkalan Data

Buat tiga jadual:

  • ulasan: Mengandungi ID dan badan ulasan.
  • pengguna: Menyimpan ID pengguna dan nama pengguna.
  • comments_votes: Memautkan ulasan kepada pengguna yang telah mengundi mereka, termasuk jenis undian.
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)
);
Salin selepas log masuk

Contoh Data

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

Menyemak Kelayakan Pengguna

Untuk menentukan sama ada pengguna telah mengundi pada ulasan tertentu, gunakan pertanyaan mudah:

SELECT COUNT(*) FROM comments_votes WHERE comment_id = <comment id> AND user_id = <user id>;
Salin selepas log masuk

Pendekatan ini menghalang undian berbilang kerana kekangan utama utama pada jadual comments_votes memastikan keunikan.

Menghalang Berbilang Undian

Jika pengguna telah mengundi, lumpuhkan ikon undian dalam logik sistem berdasarkan hasil pertanyaan.

Kelebihan Pendekatan Ini

  • Memastikan integriti data melalui kekangan kunci asing.
  • Mengelakkan keperluan untuk menyusun tatasusunan ke dalam satu medan.
  • Memudahkan pangkalan data operasi dan mengurangkan risiko rasuah data.

Atas ialah kandungan terperinci Bagaimana untuk Menghalang Berbilang Undian dalam Sistem Penarafan Komen Tanpa Menyimpan Tatasusunan dalam 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!