Supposons que vos utilisateurs puissent créer leurs propres formulaires Web (zones de texte, sélections, etc.) et les publier sur le Web pour que leurs utilisateurs les remplissent.
Quelqu'un at-il une ressource ou des conseils sur la façon d’architecturer la base de données pour l’enchaîner dans les formulaires dynamiques?
Par exemple, voudriez-vous créer une table enfant pour chaque formulaire, ou différentes versions d'un formulaire donné?
La création dynamique de nouvelles tables en fonction des entrées de l'utilisateur n'est généralement pas une bonne idée. Si la structure de base des formulaires change, toutes les tables créées dynamiquement devront être mises à jour pour inclure de nouvelles colonnes ou supprimer les anciennes, ce qui peut entraîner des problèmes de maintenance. Ensuite, il y a un problème de savoir quelle table interroger (ce qui conduira probablement à un SQL dynamique qui ouvre tous les nouveaux problèmes). Et il y a probablement aussi des problèmes de performances, mais je ne sais pas à quel point ce serait mauvais. En outre, une table est généralement utilisée pour représenter une type d'entité (telle que "formulaire Web") plutôt que d'avoir des copies de la même table pour chaque nouvelle instance de la même entité.
Je suggère une seule table pour les formulaires. Vous aurez besoin d'un identifiant sur chaque formulaire pour identifier de quel formulaire il s'agit:
forme ----- id (PK) nom owner_id (FK à users.id) ( autres champs) form_elements ------------- id (PK) form_id (FK à forms.id) element_type_id (FK à element_types.id) légende (autres champs) element_types - ----------- id (PK) nom element_list_values -------- ----------- id (PK) element_id (FK à form_elements.id) nom valeur (autres champs ??)
Votre application Web peut permettre aux utilisateurs de créer des formulaires qui seront enregistrés dans les tables forms
, avec une référence à l'utilisateur qui a créé (en supposant que vous suivez les utilisateurs comme des entités appropriées). Le formulaire est rempli avec form_elements
qui fait référence à la table forms
afin qu'ils sachent à quelle forme ils appartiennent et la element_types
afin qu'ils sachent de quel type ils sont. element_types
stockera une liste statique (principalement) des différents éléments qu'un formulaire peut avoir. Les types peuvent être: "text_field", "drop_down_list", "radio_buttons", "checkbox". Pour les types tels que "drop_down_list" et "radio_buttons", vous aurez besoin d'une table supplémentaire, peut-être appelée element_list_values
pour stocker les options possibles pour les listes que ces éléments ont normalement.