Comment concevoir une structure de table MySQL flexible pour implémenter la fonction questions/réponses ?
Vue d'ensemble :
La fonction questions et réponses est une exigence courante dans de nombreux scénarios d'application, notamment les forums, les bases de connaissances, les communautés et autres applications. Lors de la conception de la fonction de questions et réponses, une structure de table de base de données raisonnable peut améliorer l'efficacité et l'évolutivité des requêtes. Cet article expliquera comment concevoir une structure de table MySQL flexible pour implémenter la fonction de questions et réponses, et fournira des exemples de code spécifiques.
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) );
Dans la structure de table ci-dessus, la table de questions et la table de réponses sont associées à la table utilisateur via des clés étrangères respectivement, réalisant la relation entre les questions et réponses et les utilisateurs. Dans le même temps, une utilisation appropriée des index peut améliorer l’efficacité des requêtes.
CREATE TABLE tags ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL );
Afin de réaliser la relation plusieurs-à-plusieurs entre les questions et les balises, vous pouvez concevoir une table d'association (question_tags) pour stocker l'association entre les questions et les balises. Les champs suivants peuvent être conçus :
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) );
En utilisant une table d'association pour stocker l'association entre les questions et les balises, une relation plusieurs-à-plusieurs peut être obtenue dans laquelle une question peut avoir plusieurs balises et une balise peut être associée à plusieurs questions.
INSERT INTO questions (user_id, title, content) VALUES (1, '如何设计一个灵活的MySQL表结构', '请问Comment concevoir une structure de table MySQL flexible pour implémenter la fonction questions et réponses ?');
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);
Résumé :
Concevez une structure de table MySQL flexible pour implémenter la fonction de questions et réponses, ce qui peut améliorer l'efficacité et l'évolutivité des requêtes. Selon les besoins, vous pouvez concevoir des tables utilisateur, des tables de questions, des tables de réponses, des tables de balises et d'autres tables, et réaliser l'association entre différentes tables via des clés étrangères et des tables d'association. Dans le même temps, une utilisation appropriée des index peut améliorer l’efficacité des requêtes. En utilisant la structure du tableau ci-dessus et l'exemple de code, la fonction de questions et réponses peut être implémentée et a la capacité d'être étendue.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!