sql >> Database >  >> RDS >> PostgreSQL

Een-op-veel relaties in (Postgre)SQL

Wat je hier eigenlijk aan de hand hebt, is een veel-op-veel-relatie. Denk er eens over na:elke tag kan op meerdere berichten staan ​​en elke post kan verschillende tags hebben.

De juiste relationele architectuur hiervoor is om een ​​andere tabel in het midden toe te voegen, zoals deze:

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

Laat dan de tags vallen kolom in je berichtentabel.

Dit lost al je problemen op, omdat je de set tags op een bericht of de set berichten met een bepaalde tag kunt krijgen door in verschillende richtingen tegen post_tags aan te sluiten. U kunt de lijst met tags die met iets beginnen ook verkrijgen met een gewone LIKE-query, wat moeilijker zal zijn als u een aantal reeksen aaneengeschakeld in één veld heeft.



  1. Hoe bepaal ik de maximale transactiegrootte in MySQL?

  2. mysql om diepte van het record te krijgen, ouder- en voorouderrecords te tellen

  3. Strings invoegen in MySQL

  4. hoe een op een blob gebaseerd bestand te downloaden van de MySQL-database in PHP?