Représentation en base de données
Structure d'une question:
- id: (int) identifiant unique de la question
- text: (string) texte de la question, telle qu'affichée à l'utilisateur qui y répond
- shortText: (string) texte court permettant de dfinir ce à quoi répond la question. Ce champ est utilisé dans l'historique des réponses et dans le back-office pour représenter le questionnaire.
- questionType: (enum['open','closed']) type de la question, permet de représenter la logique de base, que ce soit côté frontend ou backend
- answerType: (enum['text','email','tel','url','search','number','range','date','time','datetime-local','month','week','single','multiple','order']) type de la réponse, permet de pousser la logique en fonction de la réponse que l'on attend, idem, que ce soit coté frontend ou backend
- required: (bool) précise si la réponse à la question est obligatoire ou non,
truede base.
attention
Il faudrait faire remonter les contraintes depuis possibleAnswers vers questions car sinon, ce n'est pas utilisable pour les question de type choice. Je ne sais vraiment plus pourquoi je les ai fait descendre sur les possibleAnswers.
Relations des questions:
- questionnaireTemplates: une question n'appartient qu'à 1 et 1 seul questionnaire modèle – un questionnaire modèle comporte 1 à n questions. On doit pouvoir récupérer l'ensemble des questions lorsque l'on appelle le questionnaire modèle.
- possibleAnswers: une question possède 1 à n réponses possibles – une réponse possible n'appartient qu'à 1 et 1 seule question. On doit pouvoir récupérer l'ensemble des réponse possibles lorsque l'on appelle une question.
- transitions: une question est enfant 1 à N fois dans les transitions – une transition ne peut avoir qu'1 et 1 seule question enfant.