Si vous devez le faire, faites-le dans une table séparée que vous pourrez joindre ultérieurement à la table d'origine. Si vous le devez, vous pouvez utiliser une structure EAV, mais sachez que la flexibilité d'ajouter n colonnes a un très grand impact sur les performances. Je parle de performances vraiment inacceptables dans de nombreux cas et plus il y a de records, plus ça devient mauvais. Ne descendez pas cette route à moins d'être sûr que vous n'avez pas d'autre choix. Anothe route est de les prendre au mot et d'ajouter une table avec cinq colonnes étiquetées col1, col2, col3 (et toutes les autres colonnes que vous devez lier à l'utilisateur et/ou autre tableau de données) et laissez-les ajouter des données à ces colonnes. Si chaque utilisateur doit les nommer quelque chose de différent, vous devrez peut-être utiliser une table de références croisées pour déterminer les noms des colonnes.
Vous pouvez mettre les données dans un champ XML, mais comment allez-vous interroger cela plus tard? Vous avez vraiment besoin de comprendre cela avant de décider d'une façon de gérer.
En général, ce niveau de flexibilité est une mauvaise idée. Cinq utilisateurs différents ajouteront chacun cinq colonnes différentes qui contiennent des données simliar que vous voudrez interroger ensemble, mais parce qu'ils ont chacun utilisé un nom différent, vous avez un désordre au lieu d'une base de données. Si vous devez avoir des colonnes conçues par le client, essayez au moins d'obtenir un administrateur par client pour faire l'ajout des colonnes, pas les utilisateurs à la volée car ils pensent à quelque chose d'agréable à avoir.
Que font-ils spécifiquement pour ajouter des colonnes à la volée de cette façon? Généralement, cela est considéré comme une très mauvaise pratique. La conception de la base de données ne doit pas être laissée aux utilisateurs. – HLGEM