Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक मल्टीप्लेयर/एकल प्रश्नोत्तरी खेल के लिए डेटाबेस डिजाइन

वास्तव में, आपके सिस्टम में तीन तार्किक भाग (मॉड्यूल) होते हैं:

  • उपयोगकर्ता मॉड्यूल जिसमें उपयोगकर्ता डेटा होता है और प्रमाणीकरण और उपयोगकर्ता कार्यों के प्राधिकरण को लागू करता है
  • प्रश्नावली मॉड्यूल जिसमें प्रश्नों और उत्तरों का प्रबंधन शामिल है
  • प्रश्नावली इतिहास मॉड्यूल जिसमें प्रत्येक उपयोगकर्ता द्वारा इतिहास शामिल है

उन मॉड्यूल का डेटाबेस डिज़ाइन निम्नानुसार दिख सकता है

उपयोगकर्ता मॉड्यूल:

भूमिका - सिस्टम में उपयोगकर्ता भूमिकाएं शामिल हैं

  • आईडी - भूमिका की विशिष्ट पहचानकर्ता
  • नाम - भूमिका का नाम, उदाहरण के लिए, व्यवस्थापक, कार्यकर्ता, आदि।

उपयोगकर्ता - इसमें उपयोगकर्ता होते हैं और भूमिकाओं के बारे में जानकारी उन्हें सौंपी जाती है

  • आईडी - उपयोगकर्ता की विशिष्ट पहचानकर्ता
  • उपयोगकर्ता नाम
  • पासवर्ड
  • role_id - पहचानकर्ता की भूमिका उपयोगकर्ता को सौंपी गई थी

प्रश्नावली मॉड्यूल:

विषय - इसमें प्रश्न विषय शामिल हैं

  • आईडी - विषय की विशिष्ट पहचानकर्ता
  • नाम - विषय का नाम

प्रश्न - इसमें प्रश्न शामिल हैं

  • आईडी - प्रश्न का विशिष्ट पहचानकर्ता
  • topic_id - प्रश्न का विषय पहचानकर्ता
  • पाठ्य - प्रश्न की सामग्री
  • is_exam_question - परीक्षा प्रश्न है या नहीं
  • प्रकार - उत्तरों का प्रकार (बूलियन, चेकबॉक्स या आदि)
  • कठिनाई

उत्तर - प्रश्नों के सभी उत्तर शामिल हैं

  • id - उत्तर की विशिष्ट पहचानकर्ता
  • question_id - उस प्रश्न का पहचानकर्ता जिसमें उत्तर है
  • पाठ्य - प्रश्न की सामग्री
  • is_rect - ध्वज जिसका अर्थ है कि उत्तर सही है या गलत

कमरा - कमरों के बारे में जानकारी शामिल है

  • आईडी - रम की विशिष्ट पहचानकर्ता
  • नाम - रम का नाम
  • क्षमता - कर्मचारियों की अधिकतम संख्या जो कमरे में शामिल हो सकते हैं
  • प्रकार - कमरे का प्रकार:समूह, एकल या आदि।
  • learing_type - कमरे का प्रकार:परीक्षा, अभ्यास या आदि।

user_in_room - उन उपयोगकर्ताओं के बारे में जानकारी है जो कमरे में शामिल हुए थे

  • user_id - उस उपयोगकर्ता का पहचानकर्ता जो कमरे में शामिल हुआ था
  • room_id - कमरे की पहचानकर्ता
  • स्कोर - कमरे में उपयोगकर्ता का वर्तमान स्कोर

इतिहास मॉड्यूल:

user_question_history - उन सवालों के बारे में जानकारी शामिल है जिनका जवाब उपयोगकर्ता ने दिया था

  • user_id - उपयोगकर्ता का पहचानकर्ता
  • room_id - उस कमरे की पहचानकर्ता जहां उपयोगकर्ता ने सवालों के जवाब दिए हैं
  • question_id - उस प्रश्न की पहचानकर्ता जिसका उत्तर उपयोगकर्ता ने दिया था
  • स्कोर - प्रश्न द्वारा उपयोगकर्ता स्कोर

user_answer_इतिहास - उपयोगकर्ता द्वारा चुने गए उत्तरों के बारे में जानकारी शामिल है

  • user_id - उपयोगकर्ता का पहचानकर्ता
  • room_id - उस कमरे की पहचानकर्ता जहां उपयोगकर्ता ने सवालों के जवाब दिए हैं
  • question_id - उस प्रश्न की पहचानकर्ता जिसका उत्तर उपयोगकर्ता ने दिया था
  • answer_id - उस उत्तर की पहचानकर्ता जिसे उपयोगकर्ता चुना गया था

इस स्कीमा का उपयोग विभिन्न रिपोर्ट बनाने की क्षमता देता है। उदाहरण के लिए, आप सभी उपयोगकर्ताओं के परिणाम को कमरे के अनुसार प्रदर्शित कर सकते हैं

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>

या आप उपयोगकर्ता के उत्तरों के बारे में विस्तृत जानकारी देख सकते हैं

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. MySql:Tinyint (2) बनाम tinyint(1) - क्या अंतर है?

  2. mysql त्रुटि 2005 - अज्ञात MySQL सर्वर होस्ट 'लोकलहोस्ट' (11001)

  3. mysql निहित प्रतिबद्धता को कैसे रोकें?

  4. Mysqli रोलबैक काम नहीं कर रहा है

  5. PHP में MySQL *.sql फ़ाइलें चलाना