Maison  >  Article  >  base de données  >  Comment concevoir une structure de table MySQL flexible pour implémenter la fonction questions et réponses ?

Comment concevoir une structure de table MySQL flexible pour implémenter la fonction questions et réponses ?

PHPz
PHPzoriginal
2023-10-31 08:12:44898parcourir

Comment concevoir une structure de table MySQL flexible pour implémenter la fonction questions et réponses ?

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.

  1. Tableau des utilisateurs (utilisateurs) :
    Les utilisateurs jouent un rôle important dans la fonction Q&A et doivent stocker les informations de base de l'utilisateur. Les champs suivants peuvent être conçus :
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
);
  1. Tableau des questions (questions) :
    Les questions sont au cœur de la fonction questions et réponses et doivent stocker des informations pertinentes sur les questions. Les champs suivants peuvent être conçus :
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)
);
  1. answers :
    Answers est un complément aux questions, et les utilisateurs peuvent répondre aux questions. Les champs suivants peuvent être conçus :
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.

  1. Table de balises (tags) :
    Afin de faciliter la classification et la récupération des questions, une table de balises peut être conçue pour stocker les informations d'étiquette de la question. Vous pouvez concevoir les champs suivants :
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.

  1. Exemple de code :
    Voici un exemple de code qui utilise la structure de tableau ci-dessus pour implémenter la fonction Q&A :
  • Créer une question :
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 ?');
  • Créer une réponse :
INSERT INTO answers (question_id, user_id, content)
VALUES (1, 2, '你可以设计一个问题表、回答表和标签表来实现问答功能。');
  • Ajouter une balise : rreee
Questions et balises associées :
  • INSERT INTO tags (name)
    VALUES ('数据库'), ('问答');
Questions de requête et réponses associées :
  • INSERT INTO question_tags (question_id, tag_id)
    VALUES (1, 1), (1, 2);
  • En utilisant les exemples de code ci-dessus, vous pouvez créer des questions, répondre à des questions, ajouter des balises et interroger des questions et des réponses associées.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn