Ben eindelijk zelf eens begonnen met het leren van wat MySQL en PhP. Liep echter al snel vast, nu heb ik dit idee in mijn hoofd, maar weet niet hoe ik dit goed orden in een database. Het gaat hier om een vriendenlijst.
Ik heb deze tabel gemaakt voor de gebruiker zelf:
Tabel Gebruiker
ID - Gebruikersnaam - Overige info
123 -------- Marvin ------------- Bla
124 --------- Karel ------------- Bla
125 --------- Mark ------------- Bla
Hoe maak ik nu een tabel om de vrienden van deze gebruiker op te slaan?
Dit is het enige wat ik kon bedenken:
Tabel vrienden
ID - VRIEND1 - VRIEND2 - VRIEND3 ... etc.
123 ---- 124 -----125 ------ ... ...
124 ---- 125 -----123-------
125 ----- 123 -----------------
Klopt dit? Suggesties, tips en opmerkingen zijn welkom! Bedankt.
- Database structuur
-
08-11-2010, 15:53 #1
- Berichten
- 925
- Lid sinds
- 16 Jaar
Database structuur
-
-
08-11-2010, 15:56 #2
- Berichten
- 38
- Lid sinds
- 19 Jaar
Re: Database structuur
Nee, het is makkelijker om het zo te doen (denk ik):
Tabel Connecties
ID1 - ID2
123 124
123 125
-
08-11-2010, 15:57 #3
- Berichten
- 925
- Lid sinds
- 16 Jaar
Re: Database structuur
Dan moet er voor iedere gebruiker een aparte tabel worden gemaakt?
Het gaat hier om een vriendenlijst, dus alle vrienden van die persoon weergeven.
EDIT: Ik zie wat je bedoelt, sorry, ben echt een leek hierin. Bedankt!
-
08-11-2010, 15:59 #4
- Berichten
- 38
- Lid sinds
- 19 Jaar
Re: Database structuur
Dat hoeft niet, hiermee kun je verschillende ID's (dus personen) aan elkaar koppelen, met een query kun je van een bepaald persoon de connecties ophalen, ik wil bijvoorbeeld jouw vrienden ophalen:
SELECT * FROM Connecties WHERE ID1 = 123 OR id2 = 123
Hmm ik zit nu iets dieper door te denken, misschien dat het niet helemaal werkt, ik hoop wel dat ik je op wat ideeën heb gebracht :p
-
08-11-2010, 16:04 #5
- Berichten
- 925
- Lid sinds
- 16 Jaar
Re: Database structuur
Haha, het was ook lastiger als ik zelf dacht. Verdere suggesties zijn welkom. Ik zal zelf nog eens even kijken of er wat van te maken valt.
-
08-11-2010, 16:07 #6
- Berichten
- 1.001
- Lid sinds
- 16 Jaar
Re: Database structuur
Bij de tabel gebruikersnamen een aparte colum aanmaken voor elke gebruiker genaamd "vrienden" en dan die zo invullen: "pietje/klaasje/petertje" zodat je zoveel vrienden kan hebben als je wilt. Snapje?
-
08-11-2010, 16:10 #7
- Berichten
- 925
- Lid sinds
- 16 Jaar
Re: Database structuur
Nee, dat snap ik niet direct. Zo toch maar de boeken in duiken, denk dat dat het handigst is voor dat ik jullie lastig val ;) Je kunt toch maar 1 waarde per vakje invullen?
-
08-11-2010, 16:35 #8
- Berichten
- 506
- Lid sinds
- 16 Jaar
Re: Database structuur
Dit kan heel goed met 2 tabellen:
gebruikers.db
id (A_I)
naam
oms
Data:
1 - kees - fdsfds
2 - pieter - ffdfs
3 - jan - fdsf
vrienden_relaties.db
id (A_I)
gebruiker_id
vriend_id
Data:
1 - 1 - 2
2 - 1 - 3
Stel je wil de vrienden van kees ophalen:
SELECT G.*
FROM vrienden_relaties AS VR
LEFT JOIN gebruikers AS G ON G.id=VR.vriend_id
WHERE VR.gebruiker_id='1'
Resultaat:
pieter & jan zijn vrienden van kees.Laatst aangepast door Michel Willemse : 08-11-2010 om 16:40
-
08-11-2010, 16:43 #9
- Berichten
- 980
- Lid sinds
- 17 Jaar
Re: Database structuur
@Berno jouw idee is beter dan dat van Michel imo. Als je namelijk ID1 en ID2 key maakt kan er niets fout gaat. In het geval van Michel maak je snel A_I de key en kunnen er duplicates ontstaan; terwijl je alsnog dezelfde query doet..
-
08-11-2010, 16:47 #10
- Berichten
- 506
- Lid sinds
- 16 Jaar
Re: Database structuur
SELECT * from gebruikers where id IN
(
SELECT id FROM Connecties WHERE ID1 = 123 OR id2 = 123
)
-
08-11-2010, 16:53 #11
- Berichten
- 980
- Lid sinds
- 17 Jaar
Re: Database structuur
Ah, ja je gaat er vanuit dat als A de vriend is van B, B niet per se de vriend van A is..
Point taken ;)
-
08-11-2010, 17:12 #12
- Berichten
- 506
- Lid sinds
- 16 Jaar
Re: Database structuur
Maar stel je wilt een relatie beeindigen dan is het netter met een
"delete from vrienden_relaties where id=1"
tov:
"delete from vrienden_relaties where gebruiker_id=1 AND vriend_id=2"
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic