Nu ik rustig aan PHP aan het leren ben kom ik verschillende uitdagingen tegen die ik vrijwel altijd weet op te lossen door alle tutorials en reeds gestelde vragen. Nu kom ik iets tegen waar ik niet zo snel een oplossing voor weet. Dit komt uiteraard door mijn gebrek aan kennis omtrent de mogelijkheden, maar daar krijg ik hier vast antwoord op. Ik zal proberen zo duidelijk mogelijk uit te leggen:

Goed, stel je hebt een inlog systeem waarbij je in de database de volgende gegevens in een tabel opslaat: id, gebruikersnaam en e-mail. Vervolgens wil je de gebruikers een mogelijkheid geven om een profiel te creëren met bepaalde vaste waardes zoals: leeftijd, land van herkomst, hobby's etc. En daarnaast een vrij vlak waarbij iets kort kunnen neerzetten.
Mijn gedachten waren om een nieuwe tabel aan te maken waarin die waardes kunnen worden opgeslagen. Alleen hoe zorg je ervoor dat de juiste persoon ook de juiste waardes kan aanpassen. Omdat er in die nieuwe tabel geen id zit. Of is het verstandig om geen profiel tabel aan te maken, en gewoon nieuwe kolommen te creëren in de bestaande tabel? Lijkt mij op te duur wat onoverzichtelijk worden.

Alvast bedankt!
Alex,

Je kunt je nieuwe tabel bijvoorbeeld een kolom geven met de user_id.

Je hebt dus een tabel user:
user_id
gebruikersnaam
email

Tabel personalia:
personalia_id
user_user_id
leeftijd
hobby
land

In de kolom user_user_id vul je vervolgens het user_id in uit de tabel 'user'. Deze tabellen kun je ook nog aan elkaar koppelen in een later stadium.
Ik zou zelf aanraden alles in 1 tabel te doen, is makkelijker en overzichtelijker
@SanThe wel als je de wijzigingen wenst bij te houden.
Ik zou hobby's zeker in een afzonderlijke tabel stellen. via een 1 op veel relatie. Iemand kan toch ook geen of net veel hobby's hebben.

De gegevens welke altijd aanwezig zijn moeten inderdaad in de hoofdtabel. Echter leeftijd is voor mij geen goed veld. Geboortedatum is veel beter anders moet je dagelijks/wekelijks de gegevens aanpassen elke keer als er iemand verjaard.

Jan
Jan R op 21/11/2014 08:07:40

Ik zou hobby's zeker in een afzonderlijke tabel stellen. via een 1 op veel relatie. Iemand kan toch ook geen of net veel hobby's hebben.

De gegevens welke altijd aanwezig zijn moeten inderdaad in de hoofdtabel. Echter leeftijd is voor mij geen goed veld. Geboortedatum is veel beter anders moet je dagelijks/wekelijks de gegevens aanpassen elke keer als er iemand verjaard.

Jan


Dat ligt er een beetje aan. Je kunt ook genoegen nemen met een textarea en kolomtype longtext. Dat biedt genoeg mogelijkheden om je hobby's te kunnen omschrijven. Wil de TS later nog nog gebruikers op hobby's kunnen filteren dan is het onvoldoende en zou er beter een aparte tabel voor aangemaakt kunnen worden zoals Jan beschrijft. In dat geval is het dan ook beter om een keuzelijst met hobby's aan de gebruiker voor te schotelen zodat er in de database telkens exact dezelfde waardes komen te staan voor mensen die dezelfde hobby hebben. Pas dan ben je later goed in staat om records te filteren
Alex Dijk op 20/11/2014 11:29:05

Vervolgens wil je de gebruikers een mogelijkheid geven om een profiel te creëren met bepaalde vaste waardes zoals: leeftijd, land van herkomst, hobby's

Je hebt het over 'vaste waardes'.
Hobby's kunnen wijzigen en leeftijd wijzigt sowieso elk jaar ;-)
Leeftijden moet je helemaal niet opslaan in een database. Dat veranderd ieder jaar maal 300 gebruikers ;-)

Gewoon de geboortedatum opslaan en je kunt uitrekenen hoe oud ze zijn.
Bedankt voor de reacties!

Maar hoe zorg je er dan voor hoe je die twee tabellen met elkaar kunt koppelen?
En is dan het beste om die waardes te creëren bij registratie? Of pas als die gene zijn of haar profiel gaat invullen?
Peter K op 20/11/2014 12:51:07

Alex,

Je kunt je nieuwe tabel bijvoorbeeld een kolom geven met de user_id.

Je hebt dus een tabel user:
user_id
gebruikersnaam
email

Tabel personalia:
personalia_id
user_user_id
leeftijd
hobby
land

In de kolom user_user_id vul je vervolgens het user_id in uit de tabel 'user'. Deze tabellen kun je ook nog aan elkaar koppelen in een later stadium.



Op de manier zoals peter zei kun je ze koppelen

Reageren