sql >> Databasteknik >  >> RDS >> PostgreSQL

En-till-många-relationer i (Postgre)SQL

Vad du faktiskt har på gång här är ett många-till-många-förhållande. Tänk på det:varje tagg kan finnas på flera inlägg, och varje inlägg kan ha flera taggar.

Den korrekta relationsarkitekturen för detta är att lägga till ytterligare en tabell i mitten så här:

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

Släpp sedan tags kolumn i din inläggstabell.

Detta löser alla dina problem, eftersom du kan få uppsättningen av taggar på ett inlägg eller uppsättningen av inlägg med en given tagg genom att gå med mot post_tags i olika riktningar. Du kan också få listan över taggar som börjar med något med en vanlig LIKE-fråga, vilket blir svårare om du har ett gäng strängar sammanlänkade i ett fält.



  1. Oracle SQL escape-tecken (för ett '&')

  2. Problem med createb i postgres

  3. Använd Java för att fjärrkopiera en MySQL-databas

  4. Skillnaden mellan `brew services start mysql` och `mysql.server start`