Je travail sur un projet de création de QCM en PHP. Je stocke tous les QCM dans une base MySQL.
Mes tables sont les suivantes :
qcm_questionnaire : liste des questionnaires
qcm_question : liste des questions de chaque questionnaire
qcm_choix : liste des choix de réponse possible à chaque question
qcm_reponse : liste des reponses à une question avec identification de l'utilisateur ayant fait la réponse
qcm_utilisateur : liste des utilisateurs
qcm_theme : arborescence des thèmes (voir la
représentation intervallaire des arborescences)
qcm_auteur : liste des utilisateurs auteurs de QCM dans chaque theme.
Rentrons maintenant dans le détail de chacune des tables et de leur relations :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| Table qcm_questionnaire :
idquestionnaire -> identifiant
visible -> suppression logique
idtheme_rel -> classement du questionnaire dans l'arborescence des thèmes
titre
intitule
tempsminimum -> en dessous de ce temps les utilisateurs ont le maximum de point(s) (application d'un facteur à leur score en fonction du temps de réponse)
tempsmaximum -> au dessus de ce temps les utilisateurs ont le minimum de point(s) (application d'un facteur à leur score en fonction du temps de réponse)
niveau -> niveau de difficulté du QCM
idutilisateur_auteur_rel -> relation avec la table utilisateur pour savoir qui a créé le questionnaire
validation -> un 'validateur' vérifie le questionnaire et le rend accessible aux utilisateur en le validant
idutilisateur_validateur_rel -> relation avec la table utilisateur pour savoir qui a validé le questionnaire
datecreation
datevalidation
textevalidation -> justification textuelle de la validation ou invalidation du questionnaire
Table qcm_question :
idquestion -> identifiant
visible -> suppression logique
idquestionnaire_rel -> identifiant du questionnaire d'appartenance de la question
ordre -> ordre d'affichage de la question dans le questionnaire
titre
intitule
solution -> texte affiché lorsque l'utilisateur a répondu
type -> type de choix possible :
<ol class="decimal"><li style="">unique : bouton radio</li><li style="">unique_liste : liste de choix à sélection unique</li><li style="">multiple : checkbox</li><li style="">multiple_liste : liste de choix à sélection multiple</li><li style="">mot : champ texte</li><li style="">texte : champ bloc note (rédaction d'une réponse longue)</li></ol>
niveau ->niveau de difficulté de la question
idutilisateur_auteur_rel
validation
idutilisateur_validateur_rel
datecreation
datevalidation
textevalidation
Table qcm_choix :
idchoix
visible
idquestion_rel -> identifiant de la question à laquelle se réfère le choix de réponse
titre -> 1ere partie du libelle du choix de réponse à la question
intitule -> 2eme partie du libelle du choix de réponse à la question
vraifaux -> réponse vrai : 1 fausse : 0
valeur -> score attribué pour ce choix (valeur négative et positive)
Table qcm_reponse :
idreponse
visible
idutilisateur_rel -> identifiant de l'utilisateur ayant répondu à la question
idchoix_rel -> si la question est de type unique, unique_liste, multiple ou multiple_liste, identifiant du choix de réponse retenu par l'utilisateur
datereponse
mot -> si la question est de type mot, mot de réponse de l'utilisateur
texte -> si la question est de type texte, texte de réponse de l'utilisateur
idutilisateur_correcteur_rel -> si la question est de type mot ou texte, identifiant de l'utilisateur correcteur de la question
datecorrection
textecorrection
idquestion_rel -> identifiant de la question correspondante (cf. <a href="http://www.developpez.net/forums/showthread.php?t=204948" target="_blank">Recherche d'une question sans réponse dans un QCM</a>) |
Je peux décrire les autres tables si vous le souhaitez mais elles ne sont pas nécessaires à la compréhension du système de QCM. Je peux aussi prendre le temps d'expliquer comment je conçois plus en détail l'utilisation de ces tables si vous le souhaitez.
J'espère que cette exemple sera utile à votre réflexion.
Partager