2010-12-11 25 views
-2

Je veux construire une application qui permet à un utilisateur de créer ses propres formes.
Un utilisateur peut entrer des données dans son formulaire et interroger les données aussi. Le formulaire peut être édité après avoir été créé et utilisé (ajouter/supprimer des champs). Le formulaire peut avoir une petite zone de texte, une grande zone de texte, une seule liste, une case à cocher ou un menu déroulant.Comment concevoir ces deux tables?

J'ai lu et demandé autour de quelle approche est la meilleure pour la construction de ce type de bases de données et je n'ai pas de réponse droite/bonne. J'ai lu que dans ce genre d'application, la conception basée sur une colonne (et la représentation de chaque champ comme une colonne) n'est pas une bonne idée car un utilisateur peut ajouter de nombreux champs et ce n'est pas une bonne idée car il devrait y avoir une limite. le nombre de colonnes dans une table. Cependant, je ne peux pas savoir à l'avance combien de champs l'utilisateur va ajouter. (Je ne suis pas sûr de ce qu'ils signifient, cela aidera beaucoup si vous donnez un exemple.)

Je pensais qu'une bonne idée pourrait être de regrouper les champs en fonction de leurs types. (type 1: zone de texte, type 2: liste déroulante, type 3: liste unique ... et ainsi de suite). Je veux concevoir mes tables afin que je puisse mettre à jour mon application et ajouter un nouveau type n'importe quand je veux sans ALTERING mon schéma. Je pensais donc avoir 2 tables, une table pour contenir les métadonnées sur le champ: son type, son nom, sa position peut-être dans le formulaire et une autre table pour contenir la valeur réelle du champ. Je n'arrive pas à savoir exactement ce qu'il faut avoir dans ces tableaux et comment les concevoir correctement. Votre aide est grandement appréciée.

+0

Paisible, quelle est l'intention de l'application? Si je comprends bien, vous voulez que tout utilisateur puisse créer son propre formulaire, que d'autres peuvent utiliser pour remplir des informations? Serait-il juste de considérer cela comme une sorte de 'SurveyMonkey' où les gens peuvent créer des enquêtes pour les autres? – sscirrus

+1

La dernière partie de votre question est la réponse à votre question. Une table décrit les champs du formulaire et une autre contient les valeurs de réponse. Ces différents éléments de métadonnées (type, nom, position) sont des colonnes de la table de métadonnées. –

+0

oui je sais! mais je ne sais pas exactement quoi mettre dans ces deux tableaux de sorte que si je veux ajouter un autre type plus tard .. je ne devrai pas modifier le schéma .. disons au début je n'avais que des zones de texte et liste unique .. ensuite. .i a décidé de laisser les utilisateurs utiliser un menu déroulant ... comment ces deux tables devraient être afin de me donner la flexibilité dans l'ajout de nouveaux types sans changer le schéma .. mieux dit, sont ces 2 tables assez ?? – PeacefulSoul

Répondre

0
**Form**  A Form Template 
---- 
formID (PK) 
authorID 
Name 



**FormField** = 1 row for each new question on the form 
---------- 
FormFieldID (PK) 
FormID (FK) 
FieldID (FK) 
SortOrder INT 


**FormFieldOptions**  - if the form field is a selectbox this will store the options availble to pick from 
--------------- 
FormFieldID (fk) 
Name 
SortOrder INT 


**Field**   -- The will be Text Short, Text Long, Checkbox, Radiobutton, Selectbox etc 
------ 
FieldID (PK) 
Name  
TYPE  

Cela permet de créer des formulaires. Pour enregistrer les réponses/réponses des utilisateurs au formulaire je vais laisser un exercice pour le lecteur;)