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

Relacionamentos um-para-muitos no (Postgre)SQL


O que você realmente tem aqui é um relacionamento de muitos para muitos. Pense nisso:cada tag pode estar em vários posts, e cada post pode ter várias tags.

A arquitetura relacional correta para isso é adicionar outra tabela no meio assim:
CREATE TABLE post_tags (
  id INTEGER REFERENCES posts,
  tag VARCHAR REFERENCES tags
);

Em seguida, solte as tags coluna na sua tabela de postagens.

Isso resolve todos os seus problemas, porque você pode obter o conjunto de tags em uma postagem ou o conjunto de postagens com uma determinada tag juntando-se a post_tags em diferentes direções. Você também pode obter a lista de tags que começam com algo usando uma consulta LIKE normal, o que será mais difícil se você tiver várias strings concatenadas em um campo.