2010-08-19 7 views
0

Je cherche à créer quelque chose de similaire à un système de modèle de formulaire sur mon site Web. Par exemple, disons que je veux que les utilisateurs puissent créer des modèles de formulaires (similaires à Wufoo, ils peuvent définir n'importe quel nombre d'entrées, etc.). Ensuite, à partir de ces modèles créés, tout le monde serait capable d'utiliser ces modèles, de les remplir, et donc de créer un certain nombre d'instances de formulaires (cela serait possible pour chaque modèle défini par l'utilisateur). En outre, il n'y aurait aucune limite au nombre de modèles et d'instances créés. À partir d'un point de vue serveur/persistance, quelle est la meilleure façon de créer un système comme celui-ci? Aurais-je besoin de créer une nouvelle table de base de données pour chaque modèle créé, puis d'insérer les instances de formulaire en tant qu'enregistrements dans la table? Dans quelle mesure cette échelle?Modèle Design/Architecture

Répondre

0

Ce sujet est très large. En ce qui concerne l'évolutivité, Wufoo (et d'autres sites de création de formulaires) fonctionnent actuellement. Donc, une réponse brève est, c'est déjà fait, donc l'évolutivité ne devrait pas être un problème. Cependant, la génération aléatoire de plusieurs tables deviendra très rapidement incontrôlable.

Si vous ne rencontrez pas ce problème, je commencerais par créer le système avec des tables uniques et des UUID pour les clés primaires. Cela les rend mobiles plus tard. Ensuite, si la taille des tables devient un problème, vous pouvez répartir les tables comme bon vous semble. Par exemple, vous pouvez avoir tous les clients dont le nom commence par A dans la table a_forms. En ce qui concerne la structure des tables, vous devez les construire comme UN-TO-MANY. Une forme peut avoir plusieurs éléments. Les éléments peuvent tous être prédéfinis (par exemple, texte, zone de texte, bouton radio, case à cocher, bouton Soumettre, etc.) Lorsque quelqu'un crée un formulaire, vous pouvez serialize() les éléments de formulaire et les enregistrer dans la table. Lorsque le formulaire doit être rendu, vous unserialize(), analyser les éléments et générer le formulaire.