0

Je crée une application Web dans laquelle je souhaite créer un formulaire configurable par utilisateur. Par exemple, l'utilisateur devrait pouvoir spécifier "Je veux une boîte de sélection avec une liste de valeurs que je vous donne pour l'entrée A, une boîte de texte pour l'entrée B, et une autre boîte de sélection avec une liste de valeurs pour l'entrée C" . Ensuite, l'utilisateur peut ensuite remplir le formulaire en fonction de la manière dont il l'a personnalisé. Pour être clair, ce n'est pas un système pour construire des formulaires html pour votre propre page Web. Le formulaire vit et s'intègre au reste de l'application. J'ai quelques idées dans la tête sur la façon de mettre en œuvre cela, mais je suis curieux de voir comment d'autres qui ont construit des applications similaires ont traité des problèmes similaires (c'est-à-dire des systèmes personnalisables par utilisateur). Je ne me soucie pas d'un langage ou d'un cadre spécifique, bien que vous puissiez en citer quelques-uns si cela vous aide à expliquer votre solution. A) créer un schéma de base de données relationnelle assez complexe (nécessite une table utilisateur, une table User_Fields, une table Fields_SelectValues, puis pour conserver une table SubmittedRecord qui inclut les champs avec leurs valeurs réelles sur un submit. devra être une autre table SubmittedRecord_FieldValues ​​qui mappe les valeurs de champs spécifiques de l'utilisateur à un SubmittedRecord donné). Les résultats d'une soumission seront ensuite utilisés dans une autre partie de l'application, de sorte que les recherches sur les valeurs soumises seront beaucoup effectuées. C'est le plus robuste, mais probablement le plus lent à utiliser (bon nombre de jointures pour obtenir toute la date dont vous pourriez avoir besoin) et le plus difficile à mettre en œuvre. En outre, cela pourrait être exagéré, car la plupart des utilisateurs auront un chevauchement important dans la façon dont ils veulent que les choses d'installation. B) Au lieu de construire toutes les données nécessaires pour construire tout comme ci-dessus, je stocke un blob HTML pour chaque utilisateur. Ensuite, je peux avoir un champ dans une table SubmittedRecord appelée "Values" qui est juste une chaîne délimitée de leurs noms de champs et des valeurs soumises. Cela permet des recherches rapides, mais lente à sélectionner sur un champ individuel plus tard. Mais surtout, je suis préoccupé par le fait que ce schéma anti-relationnel a des problèmes imprévus auxquels je n'ai pas encore pensé.Création de systèmes personnalisables par utilisateur

Comment avez-vous déjà vu ce genre de chose?

Note: Je ne cherche pas nécessairement une solution à mon problème exact, juste des conseils généraux sur ce type de problème.

Répondre

0

L'option B ressemble à un risque de sécurité et à un cauchemar d'entretien.

L'option A semble beaucoup mieux. En fonction de votre plate-forme/framework, il devrait déjà y avoir des mécanismes intégrés qui aident avec les capacités liées au profil de l'utilisateur; donc je verrais d'abord ce qui existe dans la plate-forme de votre choix.

Je sais que ASP.NET a quelques mécanismes qui fournissent des solutions dans cet espace. Une considération importante (qui aura un impact sur la conception et la mise en œuvre d'un tel système) sera de savoir comment construire le "schéma" du profil en premier lieu; est-il «intégré» dans le système ou les administrateurs peuvent-ils modifier dynamiquement (via l'interface utilisateur) le schéma?

Questions connexes