sql >> Database teknologi >  >> RDS >> Mysql

Mange-til-mange på samme bord

Hvis forholdet du beskriver er symmetrisk, som i "Bob er en ven af ​​Joe" betyder "Joe er også en ven af ​​Bob", så kan du sikre dig i din kode, at det mindste af de 2 bruger-id'er går på første kolonne, og den større går på den anden kolonne. Denne begrænsning sikrer stort set, at posterne i din opslagstabel vil være unikke. Det betyder også, at når du udfører et opslag, skal du normalt søge i begge kolonner.

For eksempel, hvis du forsøgte at få fat i alle Bobs venner, skulle du forespørge efter poster, der har Bobs ID i begge kolonner. Dette fører til lidt mere kode og muligvis en indvirkning på ydeevnen.

Hvis forholdet kan være asymmetrisk, som i "Bob er en ven af ​​Joe" ikke nødvendigvis betyder "Joe er også en ven af ​​Bob", så skal du bruge 2 poster for hvert par brugere:Bob - Joe og Joe - Bob. Det betyder, at din opslagstabel vil indeholde dobbelt så mange poster, og også at din side er meget stalker-venlig :D Du kan selvfølgelig stadig vælge at anvende dette system, selvom dit forhold er symmetrisk.

Ved at bruge denne metode, hvis du ønsker at få alle Bobs venner, skal du blot vælge posterne med Bobs ID i den første kolonne. Det er muligt, at dette kan betyde hurtigere opslag og mindre kode for dig at skrive, men igen betyder det, at du optager mere plads i din database.



  1. Hent værdien fra databasen i selecte tag HTML PHP MySQL

  2. Få alle handlinger fra de sidste tre brugere

  3. Forbinder Heroku til RDS ved hjælp af MySql2

  4. Pandas opdatering sql