In feite heeft uw systeem drie logische delen (modules):
- gebruikersmodule die gebruikersgegevens bevat en authenticatie en autorisatie van gebruikersacties implementeert
- vragenlijstenmodule met beheer van vragen en antwoorden
- vragenlijsten geschiedenismodule die de geschiedenis van elke gebruiker bevat
Het databaseontwerp van die modules kan er als volgt uitzien
GEBRUIKERSMODULE:
rol - bevat gebruikersrollen in het systeem
- id - unieke identificatie van de rol
- naam - de rolnaam, bijvoorbeeld admin, worker, etc.
gebruiker - bevat gebruikers en informatie over rollen die aan hen zijn toegewezen
- id - unieke identificatie van de gebruiker
- gebruikersnaam
- wachtwoord
- role_id - identifier de rol is toegewezen aan de gebruiker
VRAGENLIJSTMODULE:
onderwerp - bevat vraagthema's
- id - unieke identificatie van het thema
- naam - een naam van het thema
vraag - bevat vragen
- id - unieke identificatie van de vraag
- topic_id - onderwerp-ID van de vraag
- tekst - inhoud van de vraag
- is_exam_question - examenvraag of niet
- type - type antwoorden (boolean, selectievakjes of etc.)
- moeilijkheid
antwoord - bevat alle antwoorden op vragen
- id - unieke identificatie van het antwoord
- question_id - identificatie van de vraag die het antwoord bevat
- tekst - inhoud van de vraag
- is_correct - markeer dat het antwoord waar of onwaar is
kamer - bevat informatie over kamers
- id - unieke identificatie van de rum
- naam - naam van de rum
- capaciteit - het maximale aantal werknemers dat kan deelnemen aan de ruimte
- type - kamertype:groep, solo of etc.
- learing_type - kamertype:examen, praktijk of etc.
user_in_room - bevat informatie over gebruikers die zijn toegevoegd aan de kamer
- user_id - identificatie van de gebruiker die aan de kamer was toegevoegd
- room_id - identifier van de kamer
- score - huidige score van de gebruiker in de kamer
GESCHIEDENISMODULE:
user_question_history - bevat informatie over vragen die door de gebruiker zijn beantwoord
- user_id - identificatie van de gebruiker
- room_id - identificatie van de ruimte waar de gebruiker vragen heeft beantwoord
- question_id - identificatie van de vraag die door de gebruiker is beantwoord
- score - gebruikersscore per vraag
user_answer_history - bevat informatie over antwoorden die door de gebruiker zijn gekozen
- user_id - identificatie van de gebruiker
- room_id - identificatie van de ruimte waar de gebruiker vragen heeft beantwoord
- question_id - identificatie van de vraag die door de gebruiker is beantwoord
- answer_id - identificatie van het antwoord dat door de gebruiker is gekozen
Het gebruik van dit schema geeft de mogelijkheid om verschillende rapporten te bouwen. U kunt bijvoorbeeld het resultaat van alle gebruikers per kamer weergeven
SELECT r.id,
r.name,
u.username,
ur.score
FROM room as r
LEFT JOIN user_in_room as ur ON ur.room_id = r.id
LEFT JOIN user as u ON u.id = ur.user_id
WHERE r.id = <id>
Of u kunt gedetailleerde informatie over de antwoorden van de gebruiker bekijken
SELECT
q.text,
a.text
FROM user_in_room as ur ON ur.room_id = r.id
LEFT JOIN user_question_history as uqh ON ugh.user_id = ur.user_id AND ugh.root_id = ur.room_id
LEFT JOIN question as q ON q.id = ugh.question_id
LEFT JOIN user_answer_history as uah ON uah.user_id = ugh.user_id AND uah.room_id = ugh.room_id AND uah.question_id = ugh.question_id
LEFT JOIN answer as a ON a.id = uah.answer_id
WHERE ur.room_id = <id> AND ur.user_id = <id>