Para mí, si vas a una sola fila o EAV depende de cómo quieras consumirlos.
El poder de EAV es que se pueden agregar nuevos datos sin cambiar la estructura. Esto significa que si desea un nuevo valor de configuración, simplemente agréguelo a la tabla y extráigalo donde lo desee en el código, y no necesita agregar un nuevo campo al dominio, esquema, mapeo, consultas DAL etc.
Su defecto es que solo tiene la estructura más simple, lo que requiere que usted trate los datos de manera pesimista. Cada uso de cualquier valor de configuración debe esperar que el valor no esté presente o no esté en el formato adecuado, y se comportará en consecuencia cuando no lo esté. Un valor de configuración puede no ser analizable a un doble, o un int, o un char. Puede ser nulo. puede que no haya una fila para el valor en absoluto. Las formas de evitar esto generalmente requieren que exista un único valor "predeterminado" válido para todos los valores de configuración de un tipo en código particular ( extremadamente raro; más a menudo el valor predeterminado es tan problemático para consumir código como ninguno), o para mantenga un diccionario codificado de valores predeterminados (que debe cambiar cada vez que se agrega una nueva columna, lo que hace que la ventaja principal del almacenamiento EAV sea bastante discutible).
Una sola fila ancha es más o menos lo contrario. Lo asigna a una sola instancia de un objeto de Configuración con un campo / propiedad para cada valor de configuración existente. Usted sabe exactamente qué tipo de valores deberían ser esos en el momento de la compilación, y "falla rápidamente" en el DAL si no existe una columna de configuración o no tiene un valor del tipo adecuado, lo que le brinda un lugar para detectar excepciones basadas en la recuperación de la configuración / problemas de hidratación.
La principal desventaja es que se requiere un cambio estructural para cada nuevo valor; nueva columna de DB, nueva columna en el DAL (ya sea la asignación o las consultas / SP de SQL), nueva columna de dominio, todo lo necesario para probar adecuadamente el uso.
La situación adecuada para utilizar cualquiera de estos es la situación en la que se mitigan las desventajas. Para mí, la mayoría de las situaciones para la codificación de configuración han requerido una implementación de una sola fila. Esto se debe principalmente a que si está introduciendo un valor de configuración completamente nuevo que rige el comportamiento de alguna parte de su programa, ya debe cambiar el código para usar el nuevo valor de configuración; ¿Por qué no aparece el objeto de configuración y agrega el valor que se utilizará?
En resumen, un esquema EAV para almacenar la configuración realmente no resuelve el problema que pretende resolver, y la mayoría de las soluciones a los problemas que presenta violan DRY.