Conception de base de données pour développer une application Web 'Quiz' en utilisant PHP et MySQL
Donc, je suis en train d'apprendre le PHP et MySQL (j'ai une compréhension de base des deux; j'ai lu la première moitié de la Tête la Première SQL et la Tête la Première PHP & MySQL) et je me dis, le meilleur moyen de consolider mes connaissances par la construction de quelque chose plutôt que de lire.
Avec cela à l'esprit, je voudrais créer une page web basique qui se connecte à une base de données MySQL sur un serveur. Je vais construire une base de formulaire HTML et permettent aux utilisateurs d'entrer des informations de base, telles que: nom, prénom, email, date de naissance, sexe.
Mon problème est je ne sais pas comment concevoir une base de données qui permettra d'enregistrer les résultats d'un questionnaire - je veux seulement 5 à choix multiples problèmes. Finalement, je voudrais afficher les résultats de l'utilisateur par rapport à la précédente utilisateurs des résultats.
Si vous pouviez m'aider à comprendre comment créer une table(s) de 5-Quiz question, je l'apprécierais. Merci!
source d'informationauteur Abundnce10
Vous devez vous connecter pour publier un commentaire.
Je voudrais commencer avec 4 tableau simple:
Mon bien que sur cette table design est:
User
est pour le stockage de l'utilisateur enregistré.Question
est pour le stockage de toutes vos question. Il a is_active de sorte que vous pouvez choisir d'afficher uniquement actif en question (à l'aide deWHERE is_active = '1'
)question_choices
est pour le stockage de toutes les options disponibles. Il ais_right_choice
qui définissent ce choix est la bonne réponse pour la question particulière.User_question_answer
est pour le stockage de réponse de votre utilisateur. Il ais_right
pour accélérer la recherche, pour voir si cette question et les choix de réponse est juste (basé suris_right_choice
définis précédemment). Il a égalementanswer_time
juste à noter lorsque l'utilisateur particulier de répondre à la question.Je ne suis pas sûr de savoir comment de nouveau vous à la programmation en général, mais même si vous êtes juste de commencer, je vous recommande l'utilisation d'un framework.
À l'aide d'un cadre qui va vous guider par la mise en pratique, implémentations d'outils que vous aurez besoin dans votre projet.
Personnellement, j'utilise Symfony pour les projets php, et je vous suggère de vérifier leurs guides et tutoriels. Symfony est un cadre établi sur la base largement acceptée dessins.
Pour répondre à votre question plus directement, mais, je dirais quelque chose comme ceci à votre application:
Ci-dessus vous permet de définir plusieurs quiz, chacun ayant de multiples questions et de créer de répondre à des ensembles (d'un utilisateur à un ensemble de réponses à un questionnaire) et d'enregistrer chaque réponse.
Espère que cela aide 🙂
Ce fut aussi le premier projet que j'ai fait en PHP/MySQL il y a 8 ans.
Votre première solution est de code de la base de données pour correspondre exactement à votre formulaire. Si vous souhaitez enregistrer les utilisateurs et les quiz de moyens, donc ça va ressembler à quelque chose comme ceci:
Donc, c'est juste l'enregistrement au strict minimum: l'utilisateur et le test des mémoires. J'ai les types de donnée pour les réponses que vous devrez faire spécifique à votre questionnaire. J'ai aussi fait une réponse assortie de l'utilisateur et le moment où ils se sont soumis; vous êtes plus susceptibles d'utiliser une clé de substitution (
AUTO_INCREMENT
), mais je tiens à résister à des mères porteuses autant que possible.Droit au large de la chauve-souris il y a un 1FN violation:
questionN
. Si vous faites ce droit, vous le nom de ces colonnes après ce qu'ils signifient, et pas seulement de la question à laquelle ils sont. Mais la normalisation c'est vraiment la prochaine étape vers les formes qui sont extensibles, mais l'histoire de la piste.La prochaine chose que vous remarquerez est que vraiment un jeu est un ensemble de questions, dont chacune a une collection de réponses possibles. Et puis la soumission d'un formulaire de vraiment se rapporte d'une sélection de réponses à leurs questions, sur un quiz de forme, par un particulier quiz de l'utilisateur. Cela sonne comme une quatre voies de la relation: l'utilisateur, quizz, question, réponse. Vous pouvez couper un de ces si vous n'avez pas l'esprit de répéter des questions sur les différents quiz, mais par souci d'exhaustivité, nous allons aller en bas de cette route. Remplacer
quiz_answers
ci-dessus:Nous n'avons pas vraiment des métadonnées pour un test, si c'est juste un nom pour l'instant.
Alors maintenant, vous avez besoin d'un un-à-plusieurs relation de questions, de réponses et de questionnaires à questions.
La partie la plus délicate, comme mentionné ci-dessus, est le plus élevé de l'ordre de la relation entre l'utilisateur et la soumission du formulaire, et le lien de la forme de questions à l'utilisateur les réponses. J'ai décidé de le séparer en deux tables pour éviter des répétitions.
C'est assez bien de rectifier ce point. Vous pouvez voir que c'est aussi un peu plus difficile de requête. Pour obtenir toutes les questions pour le quiz, vous devrez joindre à partir du questionnaire les questions. Vous pouvez rejoindre à partir de là, sur les réponses à faire une grosse requête pour obtenir toutes les données dont vous avez besoin pour construire la forme (avec avoir à faire plus de post-traitement) ou vous pouvez frapper la base de données de plus de temps pour chaque question et de faire moins de post-traitement. Je peux argumenter. Pour obtenir l'intégralité d'un des utilisateurs de réponses, vous allez avoir à sélectionner à partir de user_submissions avec le quiz de l'ID et le nom d'utilisateur de la submission_answer tableau de la question et la réponse que l'utilisateur a choisi. Si l'interrogation va devenir intéressant rapidement. Vous allez perdre votre peur de jointures, si vous en avez un.
J'espère que ce ne sera pas vous mettre hors de bases de données relationnelles trop; en faisant cela, vous êtes, en effet, de faire d'un modèle relationnel à l'intérieur du modèle relationnel, mais une forme restreinte.
Je me rends compte à l'aide d'une beaucoup de naturel clés comme j'ai fait ci-dessus est un peu orthodoxes de ces jours. Cependant, je vous recommande de l'essayer, au moins pendant que vous êtes à la mise en route, car il sera beaucoup plus facile de voir comment les jointures doivent travailler si ils ne sont pas tout entiers dans la plage de 1 à 10.
Eh bien, en ce moment je suis dans une phase de développement et sont encore confrontés à certains problèmes (c'est à dire la synchronisation ronde états entre le serveur et le client), mais ça peut vous aider
P. S.: ne pas stocker les mots de passe en base de données, comme dans l'image ci - stocker les mots de passe des hachages au lieu