6
votes

Conception de la base de données MySQL pour un quiz

Je fais un quiz en ligne avec PHP et MySQL et j'ai besoin d'un peu d'aide pour décider comment concevoir la base de données pour une insertion optimale de questions / réponses et de sélectionner des questions pour le quiz. La table contiendra 80 questions avec 4 options possibles, plus la réponse correcte.

Lorsque vous récupérez les questions et options de la base de données, je choisirai au hasard 25 questions et leurs options.

est-il préférable de faire Une seule colonne pour toutes les questions, options et réponses correctes? Par exemple: xxx

ou serait-il préférable de faire une colonne pour chaque question, option et réponse correcte? Par exemple: xxx


0 commentaires

3 Réponses :


3
votes

aller avec l'option 1 où vous avez une ligne pour chaque question / options / réponse.

L'option 2 n'a aucun sens. Chaque fois que vous souhaitez ajouter / supprimer une question, vous modifiez le schéma de la base de données !! Et vous aurez juste une ligne toujours !!


0 commentaires

1
votes

aller pour votre première option. C'est l'option la plus normalisée, mais ce n'est pas nécessairement un argument de relief. Mais les vertus de la conception normalisée sont multiples:

  • C'est un morceau de gâteau pour inclure de nouvelles questions dans votre portefeuille de quiz. (L'autre option nécessite d'ajouter de nouvelles colonnes à la table).
  • Il est simple d'écrire l'instruction SELECT qui renvoie le jeu de résultats. (L'option alternative nécessite une SQL dynamique)
  • Il est facile d'écrire une interface graphique qui affiche les questions et réponses, car chaque jeu de cartes de texte affiché sur les mêmes coilumn_names.

0 commentaires

12
votes

Il serait préférable de stocker les réponses possibles dans une table séparée. Cela vous permet d'avoir n'importe quelle quantité de réponses par question au lieu de seulement 4. Cela permet également aux questions d'avoir un nombre différent de réponses. Si vous avez plus d'un quiz, vous pouvez également vouloir une table de suivi.

Answers:
    question
    prompt
    is_correct


1 commentaires

+1 Mais pour être clair, il faut marquer la réponse correcte dans une colonne dans la table anse , pas la table QuizResult Tableau.