[denkwerk] hoe t beste opslaan in db

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rutje1

rutje1

28/10/2007 10:49:00
Quote Anchor link
Hallo,

ik ben een website aan het maken waarbij leden kunnen inloggen en berichtjes kunnen posten. Nu zou ik graag een onderdeel toevegen dat ze kunnen kiezen uit een lijstje. Net zoals bijv. merken op hyves.nl

Ik zat dus te denken, kan ik het beste bij merken aangeven welke gebruikers erbij horen of bij gebruiker welke merken?
En hoe kan ik dit opslaan? Ivm. meerdere merken per persoon.

Ik ben nog niet zo lang bezig met databases dus hopelijk heeft iemand met ervaring een simpel antwoord.
Greetz rutje1
 
PHP hulp

PHP hulp

21/11/2024 19:51:33
 
Wouter K

Wouter K

28/10/2007 11:00:00
Quote Anchor link
Wat bedoel je juist kan je er iets bijmaken ?
 
Rutje1

rutje1

28/10/2007 11:16:00
Quote Anchor link
Ok, ik was al bang dat het vaag zou klikken. Een voorbeeldje:

Ik wil 5 merken op mijn site hebben:

Merk1
Merk2
Merk3
Merk4
Merk5

De bedoeling is dat de leden/gebruikers in hun profiel hun favoriete merken laten zien. Dat kan er géén zijn, maar het kunnen er ook vijf zijn.
Maar hoe kan ik het merk het beste aan de gebruiker koppelen?

In de tabel merken de gebruikers aangeven? (dit zouden dus alle gebruikers kunnen zijn)
Of in de tabel gebruikers de merken aangeven? (dit kunnen dan dus meerdere merken zijn)

Het is dezelf manier zoals ook bijv. de spots bij hyves: Hyves van Barry paf

Dat is dus wat ik zou willen, een lijst maken op je profiel

Hopelijk is het zo wat duidelijker
 
- Roland -

- Roland -

28/10/2007 11:32:00
Quote Anchor link
Je tabellen moeten simpel en eenduidig zijn. (zo normaal mogelijk :-) zie normaliseren)

Je gaat dus nooit een onbekend aantal extra eigenschappen/voorkeuren in een tabel erbij proppen !!

Je moet hier dus een extra tabel voor gebruiken.
 
Rutje1

rutje1

28/10/2007 11:44:00
Quote Anchor link
Ok, ik heb dit gelezen maar het is helaas nog niet helemaal duidelijk.

Ik zou dan dus een extra tabel aanmaken. Bijv.

Merken.
Wat moet ik in die tabel stoppen?
Hoe kan ik de gebruikers aan de merken koppelen?
 
Gerben Jacobs

Gerben Jacobs

28/10/2007 11:52:00
Quote Anchor link
merken
merk_id - merknaam

1 - Shell
2 - Adidas

users
user_id - username - password - etc..
[Wat je al hebt]

users_merken
user_id - merk_id

2 - 1
 
Aaa Trump

aaa Trump

28/10/2007 11:53:00
Quote Anchor link
Jup's Gerben's voorbeeld is nice.

Je zou ook cild-parent kunnen gebruiken.
 
Rutje1

rutje1

28/10/2007 11:56:00
Quote Anchor link
en al zijn het dan 2 of meer merken? kan dan in het veld merk_id meerdere merken worden gezet?
 
- Roland -

- Roland -

28/10/2007 11:59:00
Quote Anchor link
Je kan nu de rest van je leven in de merken tabel merken toevoegen.


Edit:


ook de koppel tabel merken_users gebruik je 'normaal' !! Dus voor elke koppeling 1 record !!
Gewijzigd op 01/01/1970 01:00:00 door - Roland -
 
Jan Koehoorn

Jan Koehoorn

28/10/2007 12:00:00
Quote Anchor link
Aanvulling:

In datamodellen moet je gewoon kijken naar de relatie. Je hebt hier gebruikers en merken. Een gebruiker kan meer dan 1 merk hebben, en een merk kan door meer gebruikers aangeklikt worden. Zo'n type relatie heet een veel op veel relatie en die zijn niet toegestaan.

De oplossing (zoals aangegeven hierboven) is om een zogenmaamd koppeltabel te maken waarin je een id van een gebruiker aan een id van een merk koppelt. Zo voorkom je dat je dezelfde gebruikersnaam bij elk merk op zou moeten slaan, of dezelfde merknaam vijf keer, als alle gebruikers hem aan zouden klikken.
 
Gerben Jacobs

Gerben Jacobs

28/10/2007 12:00:00
Quote Anchor link
Yep

users_merken

1 - 1
1 - 2

User 1 heeft nu merk 1 en 2 (Shell en Adidas)


Dus als je de merken van een user wil kan je (grofweg) SELECT * FROM users_merken WHERE user_id = 1
Je moet in het echt een subquery (of join) maken, maar zo moet je het zien.
 
Rutje1

rutje1

28/10/2007 12:08:00
Quote Anchor link
Ik snap het nu allemaal, bedankt allemaal voor snelle reacties. Ik ga het toepassen op mijn site.

Super!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.