Avatar billede thomasabcd Nybegynder
12. januar 2006 - 00:42 Der 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 ?
Avatar billede jokkejensen Novice
12. januar 2006 - 00:57 #1
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..

Mvh
Avatar billede fsconsult.dk Nybegynder
12. januar 2006 - 05:20 #2
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester