Faktisk har dit system tre logiske dele (moduler):
- brugermodul, der indeholder brugerdata og implementerer godkendelse og godkendelse af brugerhandlinger
- spørgeskemamodul, der inkluderer håndtering af spørgsmål og svar
- spørgeskemahistorikmodul, der indeholder historik for hver bruger
Databasedesign af disse moduler kan se ud som følger
BRUGERMODUL:
rolle - indeholder brugerroller i systemet
- id - entydig identifikator for rollen
- navn - rollenavnet, f.eks. admin, arbejder osv.
bruger - indeholder brugere og oplysninger om roller, der blev tildelt dem
- id - unikt id for brugeren
- brugernavn
- adgangskode
- rolle_id - identifikator rollen blev tildelt til brugeren
SPØRGESKEMAER MODUL:
emne - indeholder spørgsmålstemaer
- id - unik identifikator for temaet
- navn - et navn på temaet
spørgsmål - indeholder spørgsmål
- id - entydig identifikator for spørgsmålet
- topic_id - emne-id for spørgsmålet
- tekst - indholdet af spørgsmålet
- is_exam_question - eksamensspørgsmål eller ej
- type - type svar (boolesk, afkrydsningsfelter eller osv.)
- besvær
svar - indeholder alle svar på spørgsmål
- id - entydig identifikator for svaret
- spørgsmåls-id - identifikator for spørgsmålet, der indeholder svaret
- tekst - indholdet af spørgsmålet
- er_korrekt - flag, der betyder, at svaret er sandt eller falsk
værelse - indeholder oplysninger om lokaler
- id - unik id for rom
- navn - navnet på rommen
- kapacitet - det maksimale antal medarbejdere, der kan slutte sig til lokalet
- type - værelsestype:gruppe, solo eller osv.
- learing_type - lokaletype:eksamen, praksis eller osv.
bruger_i_værelse - indeholder oplysninger om brugere, der blev tilsluttet rummet
- bruger_id - id for den bruger, der blev knyttet til rummet
- room_id - id for rummet
- score - nuværende score for brugeren i rummet
HISTORIEMODUL:
user_question_history - indeholder oplysninger om spørgsmål, som blev besvaret af brugeren
- user_id - identifikator for brugeren
- room_id - identifikator for det rum, hvor brugeren besvarede spørgsmål
- spørgsmåls-id - identifikator for spørgsmålet, der blev besvaret af brugeren
- score - brugerscore efter spørgsmålet
user_answer_history - indeholder oplysninger om svar, som er valgt af brugeren
- user_id - identifikator for brugeren
- room_id - identifikator for det rum, hvor brugeren besvarede spørgsmål
- question_id - identifikator for spørgsmålet, som blev besvaret af brugeren
- svar_id - identifikator for det svar, der blev valgt til brugeren
Brug af dette skema giver mulighed for at bygge forskellige rapporter. For eksempel kan du vise resultatet for alle brugere efter rum
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>
Eller du kan se detaljerede oplysninger om brugerens svar
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>