sql >> Databasteknik >  >> RDS >> Mysql

Många-till-många på samma bord

Om relationen du beskriver är symmetrisk, som i "Bob är en vän till Joe" betyder "Joe är också en vän till Bob", så kan du se till i din kod att det minsta av de 2 användar-ID:n går på första kolumnen, och den större går på den andra kolumnen. Denna begränsning säkerställer i stort sett att posterna i din uppslagstabell blir unika. Det betyder också att när du gör en uppslagning måste du vanligtvis söka i båda kolumnerna.

Till exempel, om du försökte få tag i alla Bobs vänner, måste du fråga efter poster som har Bobs ID i någon av kolumnerna. Detta leder till lite mer kod och eventuellt en inverkan på prestandan.

Om förhållandet kan vara asymmetriskt, som i "Bob är en vän till Joe" inte nödvändigtvis betyder "Joe är också en vän till Bob", så behöver du 2 poster för varje par användare:Bob - Joe och Joe - Bob. Det betyder att din uppslagstabell kommer att innehålla dubbelt så många poster och även att din sida är väldigt stalkervänlig :D Naturligtvis kan du fortfarande välja att tillämpa detta system även om din relation är symmetrisk.

Om du använder den här metoden, om du vill få alla Bobs vänner behöver du bara välja posterna med Bobs ID i den första kolumnen. Det är möjligt att detta kan innebära snabbare uppslagningar och mindre kod för dig att skriva, men återigen betyder det att du tar upp mer utrymme i din databas.



  1. 10 tekniker för att skapa formulär i Microsoft Access

  2. MySQL – MINSTA och STÖRSTA jämförelseoperatörer

  3. välja rad från mysql om id matchar

  4. Infoga i en tabell som har ett streck i namnet