sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Es un mal diseño usar arreglos dentro de una base de datos?

Respuesta corta al título :No

Respuesta un poco más larga :

Debe aprender a usar arreglos cuando sea apropiado. Las matrices no son un mal diseño en sí mismas, son tan atómicas como un campo variable de caracteres (matriz de caracteres, ¿no?) y existen para hacer nuestras vidas más fáciles y nuestras bases de datos más rápidas y livianas. Hay problemas al considerar la portabilidad (la mayoría de los sistemas de bases de datos no admiten arreglos, o lo hacen de una manera diferente a Postgres)

Ejemplo:

Tienes un blog con publicaciones y etiquetas, y cada publicación puede tener 0 o más etiquetas. Lo primero que se me ocurre es hacer una tabla diferente con dos columnas postid y tagid y asigne las etiquetas en esa tabla.

Si necesitamos buscar a través de publicaciones con tagid, entonces la tabla adicional es necesaria (con los índices apropiados, por supuesto).

Pero si solo queremos que la información de la etiqueta se muestre como información adicional de la publicación, podemos agregar fácilmente una columna de matriz de enteros en la tabla de publicaciones y extraer la información de allí. Esto aún se puede hacer con la tabla adicional, pero el uso de una matriz reduce el tamaño de la base de datos (no se necesitan tablas ni filas adicionales) y simplifica la consulta al permitirnos ejecutar nuestras consultas de selección uniendo una tabla menos y parece más fácil de entender. por el ojo humano (la última parte está en el ojo del espectador, pero creo que hablo por la mayoría aquí). Si nuestras etiquetas están precargadas, no es necesaria ni una sola unión.

El ejemplo puede ser pobre pero es el primero que me vino a la mente.

Conclusión :

Las matrices no son necesarias. Pueden ser dañinos si los usas mal. Puedes vivir sin ellos y tener una gran base de datos, rápida y optimizada. Cuando esté considerando la portabilidad (por ejemplo, reescribiendo su sistema para que funcione con otras bases de datos), entonces no debe usar arreglos.

Si está seguro de que seguirá con Postgres, entonces puede usar matrices de manera segura donde lo considere apropiado. Existen por una razón y no tienen un mal diseño ni no cumplen. Cuando los usa en los lugares correctos, pueden ayudar un poco con la simplicidad de las estructuras de la base de datos y su código, así como con la optimización del espacio y la velocidad. Eso es todo.