Je souhaite créer un arrière-plan d'un formulaire Web général contenant des questions auxquelles l'utilisateur peut répondre. Il y a plusieurs types de questions.Création d'une base de données pour un formulaire Web général
- Question de texte "normal": la réponse à la question se fait via un simple champ de texte. Exemple: Informations personnelles générales, comme le nom.
- Question textarea: la même chose, mais avec plus d'espace pour écrire la réponse. Exemple: zone "Plus d'informations que vous souhaitez ajouter".
- Question à choix multiple: une question avec quelques réponses prédéfinies, parmi lesquelles une seule peut être choisie. Exemple: Comment pouvez-vous programmer PHP? [] pas très bien [] moyenne [] J'ai écrit le livre.
- ... (types de questions supplémentaires devraient être cumulable sans avoir à pirater trop)
Les entrées que les utilisateurs entrent doivent être stockés dans une base de données MySQL.
Le problème que j'ai, c'est que le formulaire devrait être éditable. Il ne sera pas édité très souvent mais quand il change, les soumissions existantes ne devraient pas être affectées par les changements. De ce fait, je ne pense pas qu'il soit suffisant de faire la config via un fichier XML.
Mon approche est la suivante:
- La configuration des questions est faite en utilisant la base de données MySQL
- La mise en page de base de données est la suivante (meilleures méthodes?):
- des questions
- id: INT
- question: TEXTE
- type: ENUM ('NORMAL', 'TEXTAREA', 'MULTIPLE')
- active: BOOL - true si la question est utilisée dans le formulaire actuel. false si elle n'est plus utilisée et n'est conservée dans la base de données que pour la compatibilité avec les anciennes soumissions.
- q_multiplechoice
- id: INT
- QuestionID: INT
- réponse: TEXTE
- soumissions
- id: INT
- userid: INT
- submissiondetails
- submissionId: INT
- QuestionID: INT
- givenanswer: TEXTE
- des questions
Comme vous pouvez le voir, il utilise quatre tables pour un formulaire web simple. Je ne pense pas que ce soit l'approche optimale à utiliser ici et je veux que vous me demandiez si vous pourriez me donner quelques conseils sur les modifications de conception que je devrais appliquer.
(autre approche que j'ai pensé est de stocker une chaîne de HTML avec une soumission rendue dans la base de données de soumissions et d'utiliser un fichier de configuration simple pour configurer les questions, les anciennes soumissions ne seront pas affectées ils étaient déjà stockés dans MySql.Un problème avec cette approche est, quand la conception change et la soumission doit être affichée dans un autre design.)