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

Relaciones de uno a muchos en (Postgre) SQL

Lo que realmente está pasando aquí es una relación de muchos a muchos. Piénsalo:cada etiqueta puede estar en varias publicaciones y cada publicación puede tener varias etiquetas.

La arquitectura relacional correcta para esto es agregar otra tabla en el medio como esta:

CREATE TABLE post_tags (
  id INTEGER REFERENCES posts,
  tag VARCHAR REFERENCES tags
);

Luego suelte las tags columna en la tabla de publicaciones.

Esto resuelve todos sus problemas, porque puede obtener el conjunto de etiquetas en una publicación o el conjunto de publicaciones con una etiqueta dada uniéndose a post_tags en diferentes direcciones. También puede obtener la lista de etiquetas que comienzan con algo utilizando una consulta LIKE normal, lo que será más difícil si tiene un montón de cadenas concatenadas en un campo.