Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Desain Basis Data untuk permainan Multiplayer/Kuis Tunggal

Faktanya, sistem Anda memiliki tiga bagian logis (modul):

  • modul pengguna yang berisi data pengguna dan mengimplementasikan otentikasi dan otorisasi tindakan pengguna
  • modul kuesioner yang mencakup pengelolaan soal dan jawaban
  • modul histori kuesioner yang berisi histori oleh setiap pengguna

Desain database dari modul-modul tersebut dapat terlihat sebagai berikut

MODUL PENGGUNA:

peran - berisi peran pengguna dalam sistem

  • id - pengenal unik peran
  • nama - nama peran, misalnya admin, pekerja, dll.

pengguna - berisi pengguna dan informasi tentang peran yang diberikan kepada mereka

  • id - pengenal unik pengguna
  • nama pengguna
  • sandi
  • role_id - pengenal peran yang diberikan kepada pengguna

MODUL KUESIONER:

topik - berisi tema pertanyaan

  • id - pengenal unik tema
  • nama - nama tema

pertanyaan - berisi pertanyaan

  • id - pengenal unik pertanyaan
  • topic_id - pengenal topik pertanyaan
  • teks - isi pertanyaan
  • is_exam_question - pertanyaan ujian atau bukan
  • jenis - jenis jawaban (boolean, kotak centang, dll.)
  • kesulitan

jawaban - berisi semua jawaban pertanyaan

  • id - pengenal unik jawaban
  • question_id - pengenal pertanyaan yang berisi jawaban
  • teks - isi pertanyaan
  • is_correct - tandai yang artinya jawaban benar atau salah

kamar - berisi informasi tentang kamar

  • id - pengenal unik rum
  • nama - nama rum
  • kapasitas - jumlah maksimum pekerja yang dapat bergabung ke ruangan
  • tipe - tipe kamar:grup, solo, dll.
  • learing_type - tipe kamar:ujian, latihan, dll.

ruang_pengguna - berisi informasi tentang pengguna yang bergabung ke ruangan

  • user_id - pengenal pengguna yang bergabung ke ruang
  • room_id - pengenal ruangan
  • skor - skor saat ini dari pengguna di ruangan

MODUL SEJARAH:

user_question_history - berisi informasi tentang pertanyaan yang dijawab oleh pengguna

  • user_id - pengenal pengguna
  • room_id - pengenal ruangan tempat pengguna menjawab pertanyaan
  • question_id - pengenal pertanyaan yang dijawab oleh pengguna
  • skor - skor pengguna berdasarkan pertanyaan

riwayat_jawaban_pengguna - berisi informasi tentang jawaban yang dipilih oleh pengguna

  • user_id - pengenal pengguna
  • room_id - pengenal ruangan tempat pengguna menjawab pertanyaan
  • question_id - pengenal pertanyaan yang dijawab oleh pengguna
  • answer_id - pengenal jawaban yang dipilih pengguna

Penggunaan skema ini memberikan kemampuan untuk membuat laporan yang berbeda. Misalnya, Anda dapat menampilkan hasil semua pengguna berdasarkan ruangan

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>

Atau Anda dapat melihat informasi detail tentang jawaban pengguna

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. Prosedur Tersimpan MySQL vs. kueri kompleks

  2. Bisakah saya SSH ke MySQL dengan alat GUI?

  3. Jenis penginisialisasi untuk 'System.Data.Entity.Migrations.DbMigrationsConfiguration`1' memberikan pengecualian

  4. Bagaimana cara mengubah data vertikal menjadi data horizontal dengan SQL?

  5. Mengunggah gambar ke Server Jarak Jauh, iPhone