¿Qué es un valor null? NULL
NO es un valor cero,
NO es un FALSE y
NO es un cadena vacía. ¿Qué es entonces?
NULL hace referencia a un
valor desconocido, y es desconocido porque todavía no lo hemos podido encuadrar y clasificar en nuestra lógica de negocio o en nuestro
domain language y que no hemos podido trasladar a nuestra base de datos.
NULL es un valor al que no le hemos encontrado cabida en la forma de interpretar las relaciones y fuentes de información de la empresa. Es un valor no definido y no contemplado por el momento, pero que, con una reflexión adecuada, puede ser sustituido y tratado adecuadamente.
Un gran número de ejemplos he visto en bases de datos empresariales: establecer a NULL un segundo apellido de un cliente extranjero, cantidades en una tabla de stock de almacén, categorías de estados no definidos correctamente, etc.
Se suele hacer la mala práctica de tomar a NULL como comodín para todo aquello que sale de lo establecido y lo no contemplado, llenando la base de datos de estos valores. Y llenar una base de datos con valores nulos supone incrementar la incertidumbre, cosa que va contra sus principios, puesto que se crearon para ofrecer información estructurada y precisa.
Y el problema es que los valores NULL son muy difíciles de tratar, explotar y operar. Por ejemplo al realizar estadísticas, podemos enumerar cuarenta valores y solamente sumar en un balance veintidós de ellos, porque estos valores nulos no son tratados.
Otros problemas pueden venir por su operabilidad: ¿Qué resultados se obtienen de operar booleanos con nulos? ¿Cómo se comporta una función agregada de SQL Server al encontrarse con nulos? ¿El resultado reflejará realmente lo esperado?
Tampoco podemos olvidar que si estamos acostumbramos a trabajar con nulos debemos tratar esta característica en un 70% de nuestras consultas SQL como por ejemplo, añadiendo la función
ISNULL() o convirtiendo los valores nulos a cero, cosa que puede complicar el tratamiento de datos.
Así pues y en conclusión decir que siempre y cuando no podamos evitarlo, no utilizaremos valores nulos en nuestra base de datos.Ahora bien, ¿qué podemos hacer cuando tenemos una columna que refleja un segundo apellido y que incluye valores nulos? La ausencia de un segundo apellido puede indicar que el cliente es extranjero, así pues podemos optar por estas dos opciones por ejemplo, cambiar los campos nulos a cadenas vacías o, por la que me decanto, rediseñar la base de datos e incluir una tabla nueva dedicada a clientes extranjeros sin segundo apellido.
¿Qué hacemos con las cantidades del almacén donde hay valores nulos? Si una cantidad aparece nula en la tabla de almacén seguramente sea porque esa cantidad de producto no existe o no se ha recibido. No podemos establecer a cero porque realmente no se ha recibido, y sería una fuente de controversias pues podría dar la posibilidad de pensar que hubo movimientos de stockaje en el pasado. Así pues, la solución vendría por crear una tabla con productos aún no recibidos o no dados de alta en el almacén y rediseñar las tablas implicadas. Así eliminamos los valores nulos y ofrecemos una información más veraz.
Enlaces:
http://www.bennadel.com/blog/85-Why-NULL-Values-Should-Not-Be-Used-in-a-Database-Unless-Required.htmhttp://databases.about.com/cs/sql/a/aa042803a.htmhttp://www.databasedesign-resource.com/null-values-in-a-database.htmlhttp://www.databasedev.co.uk/null_values_defined.html