Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Projekt bazy danych dla gry wieloosobowej/pojedynczego quizu

W rzeczywistości twój system składa się z trzech logicznych części (modułów):

  • moduł użytkowników, który zawiera dane użytkownika i implementuje uwierzytelnianie oraz autoryzację działań użytkowników
  • moduł ankiet, który obejmuje zarządzanie pytaniami i odpowiedziami
  • moduł historii kwestionariuszy, który zawiera historię każdego użytkownika

Projekt bazy danych tych modułów może wyglądać następująco

MODUŁ UŻYTKOWNIKA:

rola - zawiera role użytkowników w systemie

  • id - unikalny identyfikator roli
  • nazwa - nazwa roli, na przykład admin, pracownik itp.

użytkownik - zawiera użytkowników i informacje o przypisanych im rolach

  • id - unikalny identyfikator użytkownika
  • nazwa użytkownika
  • hasło
  • role_id - identyfikator roli przypisanej użytkownikowi

MODUŁ KWESTIONARIUSZ:

temat - zawiera tematy pytań

  • id — unikalny identyfikator motywu
  • nazwa - nazwa motywu

pytanie - zawiera pytania

  • id — unikalny identyfikator pytania
  • topic_id — identyfikator tematu pytania
  • tekst - treść pytania
  • is_exam_question — pytanie egzaminacyjne czy nie
  • typ - typ odpowiedzi (boolean, checkboxy itp.)
  • trudność

odpowiedź - zawiera wszystkie odpowiedzi na pytania

  • id - unikalny identyfikator odpowiedzi
  • question_id — identyfikator pytania zawierającego odpowiedź
  • tekst - treść pytania
  • is_correct — flaga oznaczająca, że ​​odpowiedź jest prawdziwa lub fałszywa

pokój - zawiera informacje o pokojach

  • id - unikalny identyfikator rumu
  • nazwa - nazwa rumu
  • pojemność - maksymalna liczba pracowników, którzy mogą dołączyć do pokoju
  • typ - typ pokoju:grupowy, solo lub itp.
  • learing_type - typ sali:egzamin, praktyka itp.

użytkownik_w_pokoju - zawiera informacje o użytkownikach, którzy dołączyli do pokoju

  • user_id - identyfikator użytkownika, który dołączył do pokoju
  • room_id — identyfikator pokoju
  • score - aktualny wynik użytkownika w pokoju

MODUŁ HISTORII:

user_question_history - zawiera informacje o pytaniach, na które odpowiedział użytkownik

  • user_id — identyfikator użytkownika
  • room_id — identyfikator pokoju, w którym użytkownik odpowiadał na pytania
  • question_id — identyfikator pytania, na które użytkownik odpowiedział
  • score — ocena użytkownika według pytania

user_answer_history - zawiera informacje o odpowiedziach wybranych przez użytkownika

  • user_id — identyfikator użytkownika
  • room_id — identyfikator pokoju, w którym użytkownik odpowiadał na pytania
  • question_id — identyfikator pytania, na które użytkownik odpowiedział
  • answer_id - identyfikator odpowiedzi wybranej przez użytkownika

Zastosowanie tego schematu daje możliwość budowania różnych raportów. Na przykład możesz wyświetlić wyniki wszystkich użytkowników według pokoju

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>

Lub możesz zobaczyć szczegółowe informacje o odpowiedziach użytkownika

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>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pyodbc nie radzi sobie poprawnie z danymi Unicode

  2. Token Firebase FCM – kiedy wysłać na serwer?

  3. Jak dodać ciąg do wartości kolumny w MySQL?

  4. zapisz wyniki zapytania sql do pliku w mysql

  5. Przykład instrukcji JDBC — wstawianie, aktualizacja, usuwanie wsadowe