Hoe een tabel opbouwen voor uitslag quiz
Nu zou ik willen dat ik statistieken uit die database kan halen, voorbeeld
0-10% 25 mensen die die score hebben
11-20% 50 mensen
enzovoort.
Nu ben ik er niet zo zeker van hoe ik deze tabel best opbouw... dat ik het aan quiz_id moet koppelen is geen probleem.
Zou ik best elke waarde apart opslaan bijvoorbeeld
quiz_id 5 waarde 65
quiz_id 5 waarde 67
Of zou ik werken via
quiz_id 0_10 11_20 21_30
Ik weet niet goed wat best te doen. Op de eerste manier heb ik alle waarden nog, op de 2e manier heb ik veel minder info...
Mijn kennis van tabellen opbouwen laat me hier wat in de steek en weet niet goed wat te beslissen... Iemand suggesties?
je zou ook nog dmv ip adres kunnen kijken of er al eerder een quiz gemaakt is vanaf die computer (let op, dit is niet identiek) en wanneer (dus met datum erbij enz.)
persoonlijk zou ik id gebruiken, ipv quiz_id, en deze op numeriek zetten. (tenzij er verschillende quizes zijn, dan de volgende opbouw: id, quiz_id, uitslag)
Dan zou ik moeten alle rijen opvragen en bewerken of ze groter dan 70% zijn of kleiner.
Dan heb ik enkel nog maar het resultaat van Jouw score was 70%, 600 mensen scoorden hoger, 1500 mensen lager bijvoorbeeld.
Mocht ik dan een diagram willen maken van 0-10% 11-20% etc dan zou ik 1 niet goed weten hoe er aan te beginnen, 2 het een zware berekening kan worden.
Nu zou ik kunnen besluiten om beide manieren toe te passen natuurlijk...
Zou je dus voorstellen om gewoon elk percentage op te slaan en het te laten berekenen? (dan is mijn volgend probleem hoe maar daar kan ik zelf misschien eerst nog eens over nadenken... :s)
Begin te denken dat ik ze beide zou kunnen gebruiken...
als het een koppeltabel is begin ik ook met een id
bijv (klant: id, naam | producten: id, naam | verkoop: id, kid, pid)
dit is nu maar een idioot voorstel
Maar ik wil gewoon zeggen dat ik altijd gewoon id eerst gebruik als ik een query maak met meerdere tabellen word het vanzelf duidelijk.
tabel zou er eerder zo uitzien (vanuitgaande dat ik elk resultaat apart opsla)
id | quiz_id | uitslag | ip | timestamp
Wat ik wil bereiken
- uitslagen in ranges [0-10] [11-20] ... [91-100]
- vanuit een resultaat uitslag bepalen hoeveel er hoger of lager hebben gescoord
Nu weet ik niet of het verstandig is om elke waarde apart op te slaan en daar dan die ranges van te moeten bepalen (het kunnen echt wel duizenden records worden...)
Bijgevolg weet ik niet goed hoe ik mijn tabellen dan wel best opbouw
ik zou kunnen doen
id | quiz_id | range0_10 | range1_11| ... | ip | timestamp
Voordeel : -gemakkelijk uit de database te lezen
Nadeel: -onmogelijk te bepalen wie er hoger of lager heeft dan de gegeven score
-De statistieken zijn oncompleet
Ik vermoed nu dat ik beide best zou gebruiken... om andere waarden op te vragen...
Maar een database later aanpassen is erg lastig, daarom dat ik hoopte dat iemand met meer ervaring mij goede raad zou kunnen geven ;)
Moeten deelnemers aan een quiz zich bijvoorbeeld eerst aanmelden? In zo'n geval heb je in ieder geval een gebruikers tabel nodig. Of wil je alleen anonieme gegevens opslaan?
Ben je van plan 1 quiz te houden of ga je er meerdere aanbieden? Hoe ga je de vragen en antwoorden op die quiz opslaan? Hoe ga je de resultaten opslaan (wat dus eigenlijk je vraag is)?
Maar goed, als ik zo al bezig ben lijkt het erop dat je nog wel wat werk hebt aan het ontwerpen van je datamodel.
Sowieso ga je niet meerdere gegevens in 1 record opslaan. Daar gebruik je te allen tijde aparte records voor. Zodra het erop neer komt dat je dat wel gaat doen, zul je nog eens terug moeten naar de tekentafel, want dan klopt je datamodel niet.
Antwoorden en vragen zijn al met elkaar gelinkt...
De enige link die er met de tabel quiz_statistieken moet zijn is de quiz_id
Het ontwerpen van mijn datamodel is dus reeds klaar, het gaat er mij gewoon om hoe ik de tabel quiz_statistieken best zou inrichten zodat ik de waardes er kan uitlezen zoals ik het wil.
Namelijk met ranges, en absolute waarden.
Zoals jij het weergeeft moet ik wel met absolute waarden werken want meerdere gegevens in 1 record opslaan is not done?
Dus jij zou alle percentages apart opslaan en van daaruit de ranges opbouwen?
uitlagen
----------
id
quiz_id
percentage
ip
datum (dit opslaan als DATETIME en niet als TIMESTAMP)
Vervolgens kun je met een eenvoudige query die ranges dan wel gaan bepalen.
Ok bedankt ik zal het zo proberen.