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.
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 );
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) );
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) );
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.
CREATE TABLE tags ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL );
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) );
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.
INSERT INTO questions (user_id, title, content) VALUES (1, '如何设计一个灵活的MySQL表结构', '请问Bagaimana untuk mereka bentuk struktur jadual MySQL yang fleksibel untuk melaksanakan fungsi soal jawab?');
INSERT INTO answers (question_id, user_id, content) VALUES (1, 2, '你可以设计一个问题表、回答表和标签表来实现问答功能。');
INSERT INTO tags (name) VALUES ('数据库'), ('问答');
INSERT INTO question_tags (question_id, tag_id) VALUES (1, 1), (1, 2);
Ringkasan:
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!