PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

É um design ruim usar arrays em um banco de dados?


Resposta curta para o título :Não

Resposta um pouco mais longa :

Você deve aprender a usar arrays quando apropriado. Arrays não são um design ruim em si, eles são tão atômicos quanto um campo variável de caracteres (arrays de caracteres, não?) e eles existem para tornar nossas vidas mais fáceis e nossos bancos de dados mais rápidos e leves. Há problemas considerando a portabilidade (a maioria dos sistemas de banco de dados não suporta arrays ou o faz de maneira diferente do Postgres)

Exemplo:

Você tem um blog com posts e tags, e cada post pode ter 0 ou mais tags. A primeira coisa que vem à mente é fazer uma tabela diferente com duas colunas postid e tagid e atribua as tags nessa tabela.

Se precisarmos pesquisar posts com tagid, a tabela extra é necessária (com índices apropriados, é claro).

Mas se quisermos apenas que as informações da tag sejam mostradas como informações extras do post, podemos facilmente adicionar uma coluna de array de inteiros na tabela de posts e extrair as informações de lá. Isso ainda pode ser feito com a tabela extra, mas o uso de uma matriz reduz o tamanho do banco de dados (sem necessidade de tabelas extras ou linhas extras) e simplifica a consulta, permitindo que executemos nossas consultas selecionadas juntando uma tabela a menos e parece mais fácil de entender pelo olho humano (a última parte está no olho de quem vê, mas acho que falo por maioria aqui). Se nossas tags forem pré-carregadas, nem mesmo uma junção será necessária.

O exemplo pode ser ruim, mas é o primeiro que me vem à mente.

Conclusão :

Matrizes não são necessárias. Eles podem ser prejudiciais se você usá-los errado. Você pode viver sem eles e ter um banco de dados ótimo, rápido e otimizado. Quando você está considerando a portabilidade (por exemplo, reescrevendo seu sistema para trabalhar com outros bancos de dados), você não deve usar arrays.

Se você tem certeza de que vai ficar com o Postgres, então você pode usar arrays com segurança onde achar apropriado. Eles existem por um motivo e não são um design ruim nem não estão em conformidade. Quando você os usa nos lugares certos, eles podem ajudar um pouco na simplicidade das estruturas do banco de dados e do seu código, bem como na otimização de espaço e velocidade. Isso é tudo.