jueves, 22 de noviembre de 2007

Closed source

Estoy trabajando en un proyecto, en el cual tengo que conectarme a una base de datos de un sistema de gestión.
La base de datos corre sobre SQL Server 2005. "No hay problemas!" pensé en todo momento, dado que vengo trabajando con SQL Server desde su versión 7.0 (y uso SQL Server 2005 prácticamente desde que estuvo disponible).
Cuanta fue mi decepción al encontrar que las tablas se llaman TRAxxx, SUAxxx, STAxxx, etc (donde xxx es un número). Hay varios prefijos, y cientos de tablas por prefijo. He hecho ingeniería inversa en el pasado, y esto no me asusta para nada (de hecho, encontré rápidamente cuáles son las tablas que necesito).
Incluso encontré que en las tablas que examiné no existen relaciones enforzadas. A los desarrolladores del sistema: por favor lean algo de integridad referencial.

Creo que existen dos motivos principales por los que uno podría poner nombres de tabla que no reflejen las entidades persistidas:
- Mal diseño de base de datos.
- Un intento por ocultar el contenido de la base de datos.

Sin llegar al extremo de proponer que esta gente libere el código fuente, me parece que existen puntos intermedios. La empresa que compra las licencias de software debería ser dueña de la información, y esto incluye la posibilidad de utilizar los datos como crea conveniente.

Es lamentable lo que encontré, en cuanto a diseño de la base de datos, y en cuanto a su forma críptica de nombrar tablas.

Creo que cuando desarrollamos sistemas, nuestra estructura de trabajo debe ser clara y transparente. Debemos otorgar a nuestros clientes la libertad de elección. Ya cobramos por nuestro trabajo, no necesitamos esclavizar a nuestros clientes. En todo caso que nos vuelvan a elegir por la calidad de nuestras soluciones, y no por falta de opciones.

English version:
http://en.tuxero.com/2007/11/closed-source.html