database ontwerp, hulp nodig....
deelnemers aan een test kunnen scoren op 10 onderdelen, denk aan:
snelheid
kwaliteit
nauwkeurigheid
effectiviteit
efficientie
etc.
deze onderdelen zitten in een tabel:
onderdelen tabel
-------------------
onderdeel_id
naam
iedere deelnemer zit in een deelnemerstabel
deelnemer tabel
--------------------
deelnemer_id
naam
functie
nu wil ik de resultaten van de test opslaan, maar ik weet niet goed hoe ik dit slim kan doen....een idee dat ik heb is dit:
resultaat tabel
-------------------
resultaat_id
deelnemer_id
onderdeel_id
score
maar dan krijg ik voor iedere deelnemer die een test doet 10 entries en dus een enorme tabel als er 10000 man meedoet.....en ik moet veel queries doen op deze tabel, om gemiddelden te berekenen per onderdeel, per functie van deelnemer, etc...
heeft iemand een idee of ik iets over het hoofd zie of een denkfout maak?
Alvast bedankt,
//K
En 10 x 10.000 records = 100.000, dat is dus nog steeds 10x niks... Zet daar eens 1000x zoveel in, dan heb je het ergens over.
Maar wat bedoel je precies met 'nu kun je prachtige indexen maken op de resultaten en daar snel de gewenste data uithalen.'
Is dat het koppelen van bijvoorbeeld het onderdeel_id in de resultaat tabel aan de onderdeel_naam?
Quote:
in·dex (de ~ (m.), ~en/indices)
1 register, inhoudsopgave
2 'index librorum prohibitorum', eertijds lijst van door de roomse curie verboden boeken
3 toegevoegd cijfertje of lettertje dat een grootheid in een bepaalde categorie rangschikt
4 verhoudingscijfer
5 [Belg., niet alg.] prijsindex => prijsindexcijfer
1 register, inhoudsopgave
2 'index librorum prohibitorum', eertijds lijst van door de roomse curie verboden boeken
3 toegevoegd cijfertje of lettertje dat een grootheid in een bepaalde categorie rangschikt
4 verhoudingscijfer
5 [Belg., niet alg.] prijsindex => prijsindexcijfer
En hier een link naar de MySQL-handleiding: link
Wanneer je goede indexen aanmaakt en gebruikt, kun je queries wel een factor 1000 versnellen. Doe je dit echter verkeerd, kun je de complete database op zijn bek laten gaan... Performance is dan ver te zoeken.
Maar begin met een goed datamodel, dat is de basis voor ieder goed systeem Ga je nu nog niet druk maken over indexen, je hebt op dit moment geen enkel probleem met de perfomance.
En wanneer je geen problemen hebt, ga je ook niet op zoek naar oplossingen. Dat wordt ook lastig, een niet-bestaand probleem kun je niet oplossen.
Edit: Wanneer je noodgedwongen écht MySQL wilt gaan gebruiken, gebruik dan wel de innoDB-engine en vergeet niet om de juiste foreign key's aan te maken! Gekloot met MyISAM zou ik mijn grootste vijand nog niet aanraden...
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Quote:
Wanneer je noodgedwongen écht MySQL wilt gaan gebruiken
Noodgedwongen is dit dat ook de meest populaire web database ;D
Martijn! schreef op 02.09.2007 22:22:
Noodgedwongen is dit dat ook de meest populaire web database ;D
'noodgedwongen' mag je ook lezen als 'weet niet dat er andere/betere bestaan'...Quote:
Wanneer je noodgedwongen écht MySQL wilt gaan gebruiken
Noodgedwongen is dit dat ook de meest populaire web database ;D
Hét grote probleem, en direct ook voordeel voor beginnners, is dat MySQL de grootste fouten nog vergeeft. Dat jij een stuk tekst van 300 karakters in een veld van 255 karakters stopt, daar maalt MySQL niet om. In eerste instantie ziet de programmeur ook niet dat er e.e.a. goed fout gaat, maar later blijkt toch een deel van de data pleite te zijn... Maar ja, dan is het systeem al zo ver af dat men niet meer overstapt op een database die direct een keiharde foutmelding geeft. En dat zou je wel mogen verwachten! Hierdoor lijkt MySQL in eerste instantie een hele leuke database, maar onder motorkap zit een draak van een engine verstopt. Vroeg of laat krijg je daarmee te maken.
Wanneer je de boel instelt op STRICT-mode en je gebruikt versie 5 of hoger, wordt het al wel een stuk beter, maar het is nog steeds niet van het niveau zoals je dat van andere databases bent gewend.
Nu wordt het wel een beetje simpel een bash-MySQL-topic...
Quote:
Wanneer je de boel instelt op STRICT-mode en je gebruikt versie 5 of hoger, wordt het al wel een stuk beter, maar het is nog steeds niet van het niveau zoals je dat van andere databases bent gewend.
Ik ben het met je eens dat versie 5 een hele verbetering is. Ik heb ook wel eens wat gelezen over rare fouten in MySQL. Ook heb ik eens een lijstje gezien met fouten/rare dingen in PostGreSQL.
Maar ik zeg niet voor niets "web database". Ik ben er namelijk van overtuigt dat PostGreSQL meer een echte database wil zijn. MySQL is deze weg sinds versie 5 ook ingeslagen volgens mij.
Maar het is maar net wat je gewend bent en waar je de beschikking over hebt, dit is meestal MySQL.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B