¡Postgres 15 mejora las cláusulas UNIQUE y NULL!

La versión beta de Postgres 15, la versión más nueva del que es, probablemente, el Database Management System más popular en lo que respecta a bases de datos SQL, ha sido publicada recientemente para el uso de todo el público. Una de las mayores diferencias de la presente versión, en comparación con las últimas que ha tenido el DBMS del elefante azul, es cómo ha mejorado el uso de la cláusula UNIQUE a la hora de tomar en cuenta valores nulos en una columna. Si bien los matices que existen en las restricciones que utilizan la cláusula UNIQUE no son tan llamativas, como lograr que organizar una serie de datos perteneciente a una columna sea un procedimiento más rápido; mejorar el control que tiene un desarrollador respecto a la base de datos sobre la calidad de los presentes en la misma base de datos siempre es un beneficio que puede traer una actualización.


Actualmente, existen dos estilos para utilizar la cláusula UNIQUE. En primer lugar, y para poder observar los cambios que se han realizado en Postgres respecto a la misma, es necesario crear dos tablas en la base de datos: la tabla old_null_style tiene dos columnas con la cláusula UNIQUE en las columnas (first_value, second_value); la columna second_value permite valores nulos.


Por otro lado, podemos observar otra tabla que hace uso de la nueva sintáxis de Postgres, llamada new_null_style. Esta utiliza una nueva cláusula del lenguaje de Postgres: UNIQUE NULLS NOT DISTINCT. La única diferencia que existe respecto a la tabla old_null_style es la adición de la nueva sintáxis existente.


Cabe mencionar otra diferencia existente en la nueva versión de Postgres. En Postgres 14 y versiones anteriores, las restricciones trataban los valores nulos de forma en la que no eran iguales a otros valores nulos. Esta forma de tratar los famosos valores NULL es consistente en SQL en general. De esta manera, es imposible determinar si un valor desconocido es igual a otro valor desconocido. Los valores NULL tienen una condición de igualdad desconocida respecto a otros, ya que no violan las restricciones que provocan las cláusulas UNIQUE. Es posible observar el fenómeno insertando cinco filas idénticas a una tabla.


Con el comportamiento nuevo de la cláusula NULLS NOT DISTINCT, las restricciones de unicidad no permiten valores nulos repetidos. Intengar y agregar una cantidad de filas mayor a una es ahora una violación a la restricción de unicidad.

En resumen, la nueva cláusula que presenta la versión número 15 de Postgres es una excelente adición a la cantidad de herramientas presentes en el DBMS. Esta cláusula agrega un nivel de control de calidad en las bases de datos de Postgres. También es un cambio de bajo impacto, debido a que la operación por defecto existente en versiones anteriores de Postgres seguirá existiendo en el lenguaje.

- Zant

No hay comentarios:

Con la tecnología de Blogger.