Bagaimana untuk mereka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab?

PHPz
Lepaskan: 2023-10-31 08:12:44
asal
896 orang telah melayarinya

Bagaimana untuk mereka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab?

Bagaimana untuk mereka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab?

Ikhtisar:
Fungsi soal jawab adalah keperluan biasa dalam banyak senario aplikasi, termasuk forum, pangkalan pengetahuan, komuniti dan aplikasi lain. Apabila mereka bentuk fungsi soal jawab, struktur jadual pangkalan data yang munasabah boleh meningkatkan kecekapan dan kebolehskalaan pertanyaan. Artikel ini akan memperkenalkan cara mereka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab, dan menyediakan contoh kod khusus.

  1. Jadual pengguna (pengguna):
    Pengguna adalah peranan penting dalam fungsi Soal Jawab dan perlu menyimpan maklumat asas pengguna. Medan berikut boleh direka bentuk:
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Salin selepas log masuk
  1. Jadual soalan (soalan):
    Soalan adalah teras kepada fungsi soal jawab dan perlu menyimpan maklumat yang berkaitan tentang soalan. Medan berikut boleh direka bentuk:
CREATE TABLE questions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);
Salin selepas log masuk
  1. jawapan:
    Jawapan adalah tambahan kepada soalan, dan pengguna boleh menjawab soalan. Medan berikut boleh direka bentuk:
CREATE TABLE answers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    question_id INT NOT NULL,
    user_id INT NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (question_id) REFERENCES questions(id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);
Salin selepas log masuk

Dalam struktur jadual di atas, jadual soalan dan jadual jawapan dikaitkan dengan jadual pengguna melalui kunci asing masing-masing, menyedari hubungan antara soalan dan jawapan dan pengguna. Pada masa yang sama, penggunaan indeks yang betul boleh meningkatkan kecekapan pertanyaan.

  1. Jadual tag (tag):
    Untuk memudahkan pengelasan dan pencarian semula soalan, jadual tag boleh direka bentuk untuk menyimpan maklumat label soalan. Anda boleh mereka bentuk medan berikut:
CREATE TABLE tags (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL
);
Salin selepas log masuk

Untuk merealisasikan perhubungan banyak-ke-banyak antara soalan dan tag, anda boleh mereka bentuk jadual persatuan (question_tags) untuk menyimpan perkaitan antara soalan dan tag. Medan berikut boleh direka bentuk:

CREATE TABLE question_tags (
    question_id INT NOT NULL,
    tag_id INT NOT NULL,
    PRIMARY KEY (question_id, tag_id),
    FOREIGN KEY (question_id) REFERENCES questions(id),
    FOREIGN KEY (tag_id) REFERENCES tags(id)
);
Salin selepas log masuk

Dengan menggunakan jadual perkaitan untuk menyimpan perkaitan antara soalan dan tag, perhubungan banyak-ke-banyak boleh dicapai di mana satu soalan boleh mempunyai berbilang tag dan satu tag boleh dikaitkan dengan berbilang soalan.

  1. Sampel kod:
    Berikut ialah contoh kod yang menggunakan struktur jadual di atas untuk melaksanakan fungsi Soal Jawab:
  • Buat soalan:
INSERT INTO questions (user_id, title, content)
VALUES (1, '如何设计一个灵活的MySQL表结构', '请问Bagaimana untuk mereka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab?');
Salin selepas log masuk
  • Buat jawapan:
    INSERT INTO answers (question_id, user_id, content)
    VALUES (1, 2, '你可以设计一个问题表、回答表和标签表来实现问答功能。');
    Salin selepas log masuk
  • Soalan Bersekutu dan tag:
    INSERT INTO tags (name)
    VALUES ('数据库'), ('问答');
    Salin selepas log masuk
  • Soalan pertanyaan dan jawapan berkaitan:

INSERT INTO question_tags (question_id, tag_id)
VALUES (1, 1), (1, 2);
Salin selepas log masuk
Dengan menggunakan contoh kod di atas, anda boleh membuat soalan, menjawab soalan, menambah tag dan soalan pertanyaan serta jawapan yang berkaitan.


Ringkasan:

Reka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab, yang boleh meningkatkan kecekapan dan kebolehskalaan pertanyaan. Mengikut keperluan, anda boleh mereka bentuk jadual pengguna, jadual soalan, jadual jawapan, jadual tag dan jadual lain, dan merealisasikan perkaitan antara jadual berbeza melalui kunci asing dan jadual persatuan. Pada masa yang sama, penggunaan indeks yang betul boleh meningkatkan kecekapan pertanyaan. Dengan menggunakan struktur jadual dan kod sampel di atas, fungsi soal jawab boleh dilaksanakan dan mempunyai keupayaan untuk dikembangkan. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mereka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab?. 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
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!