Bonjour tout le monde,
Je viens ici vous consulter pour un problème de conception de base de données qui me chagrine ces temps ci (pardonnez moi si je poste dans la mauvaise section, je n'ai pas trouvé celle appropriée).
Voici mon problème :
Je souhaiterai créer une application qui permet de créer (facilement) puis de remplir des formulaires.
Un petit exemple :
Imaginons par exemple qu'un utilisateur souhaite mettre a disposition un formulaire de demande d'achat pour ses collègues. Il va créer un formulaire et placer les champs "nom" "prenom" "objet_a_acheter" "quantite" "date_d_achat" etc ...
Mon application devra donc stocker les intitulés et types de champs nécessaires au formulaire mais également un espace pour stocker les données saisies dans ces champs.
C'est ici que tout se complique pour moi car plusieurs choix s'offrent a moi ... mais aucun ne me convient vraiment.
1. Mon application pourrait créer une table pour chaque formulaire afin de stocker chaque saisie de données (cela me parait absolument ignoble).
2. Dans mon modèle, je pourrai créer d'origine une table pour chaque type de champs dispo (1 table destinée au varchar, 1 pour les decimal, 1 pour les dates par exemple) et faire des supers jointures. Ce modèle possède un inconveniant : En fonction d'un type de champs, on va chercher une info dans une table différente ... pas très joli (de plus j'ai peur pour le côté performances)
3. Je créer une seule table avec une colonne pour chaque type de champs : varchar, decimal, date ... a chaque saisie, je ne rempli que la colonne qui m'intéresse et laisse les autres à NULL. Ce qui m'embête ici, c'est que pour chaque information saisie, on a 3 champs correspondants en base dont 2 toujours NULL.
Bref ... aucune de mes solutions ne semble convenir. Je suis habitué à travailler avec des modèles de données figés.
Quelqu'un aurait l'idée du siècle pour faire cela proprement ?
Partager