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

É sempre uma boa ideia armazenar uma matriz como um valor de campo ou armazenar valores de matriz como registros?


Acho que você deveria ler sobre normalização de banco de dados e decidir por si mesmo. Em suma, há uma série de problemas com sua proposta, mas você pode decidir que pode viver com eles.

Os mais óbvios são:
  1. E se uma tag adicional for adicionada à linha(1)? Você precisa primeiro analisar, verificar se já está presente e atualizar a linha para tags.append(newTag) .
  2. Pior ainda excluir uma tag? Tags de pesquisa, está presente, recrie tags.
  3. E se uma tag mudar de nome - algum processo de moderação, talvez?
  4. Pior de novo, e quanto a diferentes pessoas especificando um nome de tag de maneira diferente - seria difícil racionalizar.
  5. E se você quiser consultar dados com base em tags? Sua consulta se torna muito mais complexa do que precisaria ser.
  6. Apresentação:o cliente precisa analisar a tag para usá-la. E o campo separador? Mude isso e todos os clientes terão que mudar.

Em suma, todas essas operações se tornam mais difíceis e incômodas. A normalização é projetada para superar esses problemas. Provavelmente, a única razão para fazer o que você diz, IMO, é que você está capturando os dados como um único e é apenas informativo - ou seja, faz sentido para um usuário, mas não para um sistema em si. Isso é como dizer que provavelmente é melhor evitar (novamente, IMO).