multi dimensionale array's
Deze id's worden opgehaald uit de table met users maar ik heb de voor en achternamen van de gebruikers appart opgeslagen in een andere table.
nu wil ik van deze array een 2dimensionale array maken zodat ik de userID's in deze array kan koppelen aan de voor en achternamen van de gebruikers.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
$UserID = array(1,2,3,4,5,6,7,8,9);
$multiArray = array(
array(1,"Voornaam,"Achternaam"),
array(2,"Voornaam,"Achternaam"),
array(3,"Voornaam,"Achternaam"),
array(4,"Voornaam,"Achternaam"),
array(5,"Voornaam,"Achternaam"),
array(6,"Voornaam,"Achternaam"),
);
$multiArray = array(
array(1,"Voornaam,"Achternaam"),
array(2,"Voornaam,"Achternaam"),
array(3,"Voornaam,"Achternaam"),
array(4,"Voornaam,"Achternaam"),
array(5,"Voornaam,"Achternaam"),
array(6,"Voornaam,"Achternaam"),
);
etc...
De voornamen moeten dus uit een andere table gehaald worden waar de UserID gelijk is aan de UserID die in de array zit.
Hoe store ik dit met een loop in een multidimensional array en hoe echo ik de waardes dan weer appart?
Ik heb een tabel met Usernames en daarbij de ID's , daarnaast wou ik voor netheid en overzichtelijkheid de account informatie en de persoonlijke informatie gescheiden houden en alles onderlink te linken met als primary key de UserID. ik heb er een tijd over nagedacht en heb tijdens de database normaliseringsfase besloten om het zo te doen.
En ik vindt het zelf ook niet de beste reden om het zo te doen in de Database maar ik volg momenteel een opleiding in de I.T. en daar adviseerden ze mij om het op deze manier te doen. zelf heb ik het liever bij elkaar staan.
ALLES wat bij elkaar hoort moet bij elkaar in een tabel en je moet geen extra tabellen aanmaken omdat dit "netter" uitziet. Je moet immers rekening houden met extra Joins ( onnodig in dit geval bijv. ) en andere dingen die je query langzamer maken en meer van je server vragen.
Verder moet de query die Ger je geeft d.m.v. PHP uitgevoerd worden. Google maar op mysqli of PDO om te zien hoe dit in zijn werk gaat. Een hele handige tutorial is
http://phptuts.nl/view/41/
de persoon van wie ik les krijgt heeft 25 jaar bij microsoft gewerkt met een focus op de database , toen ik liet zien hoe ik het normaal deed werd het direct afgekeurd en ging hij ook uitleggen hoe normalisering werkt waardoor ik dacht dat die manier een stuk beter werkte of beter was voor traffic handling. maar na een paar dagen zo gewerkt te hebben wekt het alleen nog maar irritatie op , onduidelijkheid en meer query's voor hetzelfde resultaat
een gebruiker heeft een voor en achternaam een geboortedatum en een wachtwoord, en zo je wilt een gebruikersnaam. dit hoort bij elkaar en kan in één tabel.
daarin tegen kan een gebruiker meerdere berichten plaatsen. dit past dus niet in dezelfde tabel aangezien je nooit van te voren weet of een gebruiker berichten zal gaan plaatsen en hoeveel. Hiervoor krijg je dus een aparte tabel.
account_login_info
account_id, user_name, user_pwd
account_personal_info
account_id, first_name, last_name, email_address
account_address_info
account_id, street, house_number, zip_code, city
In het kader van Projection-Join Normalisation kan je stellen dat al die tabellen in 5NF staan.
Nu zijn in de eerste twee tabellen de gegevens vereist (anders gezegd 1 to Always 1 Relationship),
dus als je deze twee tabellen samenvoegt staat ie nog steeds in 5NF.
Dus heeft het uit elkaar trekken van die tabel op die manier niets met normalizeren meer te maken, als je dan nog een stapje hoger wilt moet je voor elk attribuut een tabel maken.
Maar dat wil niet zeggen dat het niet mag, het is niet ongebruikelijk om het op deze manier te doen, maar dan gebeurt het vanuit veiligheidsoverwegingen.
Als we dan stellen dat de gegevens in de derde tabel optioneel zijn (1 to 1 or 0), is dat een andere reden
om de tabellen op te splitsen.
Toevoeging op 05/04/2014 11:13:07:
En frank dat is inderdaad precies de manier waarop ik het altijd doe. Ik was alleen erg in de war gebracht door de uitleg over normalisatie. Maar als ik het op de manier doe zoals jij het beschreef is het goed?