Hoe een tabel opbouwen voor uitslag quiz

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel

Michiel

03/06/2007 22:35:00
Quote Anchor link
Ik heb een quiz die ik opbouw uit een database. Nu op het einde van de quiz is de uitslag een percentage. Voorbeeld 75% jaloers ofzo.

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?
 
PHP hulp

PHP hulp

21/05/2024 21:45:18
 
Terence Hersbach

Terence Hersbach

03/06/2007 22:59:00
Quote Anchor link
Je hebt zelf al je antwoord gegeven..
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)
 
Michiel

Michiel

03/06/2007 23:10:00
Quote Anchor link
Het probleem is dat ik via de eerste manier niet goed weet hoe ik die getallen moet bewerken. En dat het een heel groot aantal kan worden. Stel iemand doet een quiz en heeft het resultaat 70%

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...
 
Red Crew

Red Crew

03/06/2007 23:13:00
Quote Anchor link
Ik begin elke tabel met id
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.
 
Michiel

Michiel

03/06/2007 23:22:00
Quote Anchor link
ja dat snap ik wel, ik had het ook te simpel voorgesteld

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 ;)
 
Joren de Wit

Joren de Wit

03/06/2007 23:23:00
Quote Anchor link
Inventariseren. Dat is het sleutelwoord in zo'n probleem.

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.
 
Michiel

Michiel

03/06/2007 23:41:00
Quote Anchor link
Enkel anonieme gegevens, er is meer dan één quiz (daarom de link quiz_id)

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?
 
Joren de Wit

Joren de Wit

03/06/2007 23:46:00
Quote Anchor link
Mensen hebben jouw quiz doorlopen en daar rolt een bepaalt percentage uit? Dan zou ik dat gewoon in een tabel opslaan. Dus bijvoorbeeld:

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.
 
Michiel

Michiel

03/06/2007 23:50:00
Quote Anchor link
Ok bedankt ik zal het zo proberen.
 



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.