12. januar 2006 - 00:42Der er
1 kommentar og 1 løsning
Simpelt tabeldesign
Hej, jeg vil gerne lave en tabel, som skal holde styr på hvilke brugere der er venner. Jeg antager, at det er forholdsvist simpelt blot at koble to brugere i en tabel med to kolonner(user1,user2). Hvis to brugere så er venner, kan jeg så nøjes med at sætte den information ind én gang (eksempelvis "Jens,Hans") eller skal jeg også indsætte relationen "den anden vej rundt" (eksempelvis "Jens,Hans" og "Hans,Jens") ? Hvis det første er godt nok hvordan vælger jeg så alle Jens' venner ? Skal jeg så lave to select-querys og så kombinere listen ("SELECT user2 WHERE user1=Jens" og "SELECT user1 WHERE user2=JENS") eller er der en smartere måde ?
Hvis den gælder begge veje.. vil Jens altid være venner med Hans - Altså kan Jens ikke være uvenner med Hans hvis Hans er venner med Jens..
derfor ville jeg lave noget lignende:
ID User Friend 1 Jens Hans 2 Jens Bent 3 Ole Jens
Herefter har du alle Jens venner med select * from friendships where bruger = 'Jens'.. du gemmer selvfølgeligt ikke navnen men bruger ID'et på brugeren..
du kan godtnøjes med at sætte informationen ind en gang.
Du kan så lave en select som følger:
SELECT user1,user2 FROM friends WHERE user1=JENS or USER2=JENS
Du skal så selvfølgelig hente data fra både user1 og user2
Alternativt kan du bruge UNION hvis din database understøtter det:
SELECT user2 AS friend FROM friends WHERE user1=JENS UNION SELECT user1 AS friend FROM friends WHERE user2=JENS
Performancemæssigt vil det dog nok være lettere at indsætte både JENS,HANS og HANS,JENS i databasen. Uanset hvad, så skal du have programlogik til at sikre ENTEN: at der ALDRIG bliver indsat både JENS,HANS og HANS,JENS ELLER: at der ALTID bliver indsat (og slettet) både JENS,HANS og HANS,JENS
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.