Base de datos; una tabla para una fila

Durante años cada vez que inicio un nuevo proyecto  me pregunto que tan estúpido es crear una tabla para insertar una única fila con valores de configuración del sistema. valores que aunque no cambian a menudo, en un futuro lejano si pueden cambiar. Por lo cual es muy mala idea hardcodear los valores en el programa.  por ejemplo:

  • el valor de iva (impuestos)
  • un email donde llega copia de todos los reportes mandados a los usuarios
  • un valor booleano para activar o desactivar el envió de reportes
  • un texto con variables para renderear como cuerpo de los correos de notificaciones (enserio, esta idea es excelente… no tienen idea de cuantas veces un “usuario” me a dicho “oye, ¿y si le ponemos te quiero mucho cliente al final del mensaje?”)

y un montón de valores mas que si bien pueden existir en un archivo de configuración como variables, lo ideal es que el administrador del sistema pueda cambiarlas sin acudir al programador

pero, ¿es una tabla de la base de datos la forma ideal de almacenar estos valores? en el contexto del funcionamiento de la base de datos que tan lógico es una tabla con una única fila… o una tabla con dos columnas de clave y valor.

Después de mucha meditación y algunas cervezas llegue a la conclusión que realmente no es una idea mala.  aun que también  es posible guardar esos datos en un archivo serializado y esto ahorra la negociación de seguridad de la base de datos. Sin embargo en ambos casos lo mas indispensable no es el método de guardado, si no toda la lógica que cargara estas variables y que permitirá que nuestro código sea mas limpio.

En mi caso particular (como buen seguidor de django) recomiendo

django-constance

esta es una librería que se encarga de definir valores por defecto sobre un diccionario en el código, pero que al mismo tiempo permite modificar estos valores con una interfaz  y lo mas importante, llamar a estos valores desde cualquier lugar de nuestro código con la simple sintaxis de   config.VARIABLE

django constance se encarga de almacenar estas variables de distintas formas; depende como lo configuremos (entre  estas formase se usa una tabla en la base de datos).

Al final la idea de guardar este tipo de variables en una tabla no es mala, solo necesita algunas vitaminas para no tener que consultar a la base de datos cuando queremos usar el valor.

si no usas python-django  te recomiendo busques algo similar en tu lenguaje, o programa algo desde 0 priorizando la facilidad de usar estas variables en tu código.

 

Martin Quinta

Crecí con una computadora desde el kinder. Empece a programar a los 14 y hoy, mas de una década después… realmente odio estar frente a una computadora. Pero programar es en lo que soy bueno, por lo tanto me desahogo en este blog mientras bebo cerveza artesanal y pienso en un mundo bonito donde Java no existe.

Facebook Twitter LinkedIn  

Entradas relacionadas:

Leave a Reply

Your email address will not be published. Required fields are marked *