Pour l'application, qui compte peu (5-10) paramètres pour le moment, mais aura beaucoup plus (jusqu'à 100) à l'avenir, ce qui serait une meilleure approche:
Considérez que la demande peut avoir des millions d'instances (qui sont toutes exécutées sur le même dB et utilisent la même table pour les paramètres), DB pourrait être fragile. DB est relationnel, c'est-à-dire mysql ou t-SQL.
En tant que développeur, je préférerais la 2e variante, je pourrais donc évoluer l'application sans modifier le schéma de base de données et ajouter/supprimer des paramètres à volonté. Pour autant que je sache avoir plusieurs millions d'enregistrements dans une seule table ne devrait pas être un problème si l'index est regroupé sur l'instance d'application. Y a-t-il des inconvénients que je ne suis pas au courant?
Et qu'en est-il de la 1ère variante? Y a-t-il de gros avantages? Et qu'en est-il du nombre de colonnes: y a-t-il une limite théorique des colonnes que la table peut avoir? Que s'est-il passé si j'avais une table avec 1000 (10 000, 1000 000 000) colonnes? Cela serait-il lent?
L'option 2 est connue sous le nom de "EAV" ou valeur d'entité-attribut
Mais cela dépend de ce que vous entendez par "Paramètres". Si vous avez quelques 1000 lignes qui ne sont pas des objets et ne nécessitent pas de contraintes, utilisez ce modèle. C'est ce que fait SQL Server avec Sys.Configurations
Si vous essayez d'avoir un "schéma flexible" qui puisse stocker quoi que ce soit, alors tout simplement pas . Cela se terminera par des larmes. Voir aussi questions EAV ici sur dba.se
Notez que "les colonnes supplémentaires" (option 1) vous permet de définir les défauts et la sécurité de données-sécurité, tandis que "l'absence de ligne" (option 2) nécessite une valeur par défaut à enregistrer dans le code et tout est une chaîne dans la base de données.
"Ça dépend"