पहले आवंटित प्रत्येक तालिका में एक विशिष्ट आईडी - प्राथमिक कुंजी (पी)
प्रश्न तालिका - एक के बाद एक प्रश्न
के साथ संबंध के लिए उपयोगकर्ता तालिका - - एक कई रिश्ते को साथ उपयोगकर्ता
उत्तर तालिका एक रिश्ता बनाने के लिए कई प्रश्न
Question
+--------------+------------+------------------+
| int | Id | PK |
| varchar(max) | question | |
| int | userId | FK (Foreign Key) |
| bool | answered | |
| bool | correct | |
+--------------+------------+------------------+
Answer
+--------------+------------+----+
| int | Id | PK |
| int | questionId | FK |
| varchar(max) | reason | |
+--------------+------------+----+
User
+---------------+-------------+--------------------------------------------+
| int | Id | PK |
| varchar (250) | deviceToken | (UUiD) // some unique identifier per phone |
+---------------+-------------+--------------------------------------------+
// other relevant stuff
जब ऐप डाउनलोड किया जाता है तो उपयोगकर्ता को यूयूआईडी का उपयोग करके चुपचाप पंजीकृत किया जा सकता है। केंद्रीय डेटाबेस को इन सभी सवालों को ट्रैक करने और फिर से शुरू करने के बजाय उत्तर देने वाले प्रश्नों का ट्रैक रखने की आवश्यकता होगी। 100 पंक्तियां बहुत अधिक नहीं हैं लेकिन उपयोगकर्ता संभावित रूप से 1000s या अधिक में भाग सकते हैं। एक अपडेट में यह प्रासंगिक नहीं है कि फोन में स्थानीय डेटाबेस को दोबारा शुरू करना धीमा हो सकता है (हालांकि यह कई पंक्तियों के साथ धीमा नहीं होगा, लाखों पंक्तियों वाले डेटाबेस में समय लगेगा) क्योंकि उम्मीद है कि अपडेट लेते हैं पहर।
यदि उपयोगकर्ता डिवाइस बदलता है तो यह जानकारी नए डिवाइस पर स्थानांतरित नहीं की जाती है। प्रत्येक डिवाइस को एक नए उपयोगकर्ता के रूप में माना जाता है। मुझे लगता है कि यह अच्छी तरह से काम करता है यदि आप लोगों को साइन अप नहीं करना चाहते हैं, लेकिन अपडेट के दौरान डेटा को संरक्षित करना चाहते हैं, या यदि ऐप अनइंस्टॉल किया गया है और एक डिवाइस पर पुनर्स्थापित किया गया है। इसकी सीमाएं हैं क्योंकि लोगों को साइन अप करने के लिए कहा जाता है। यदि उपयोगकर्ता एक ही डिवाइस के साथ गेम पर एक नई शुरुआत चाहते हैं तो आप हमेशा "आंकड़े रीसेट करें" विकल्प प्रदान कर सकते हैं और फिर उस डेटा को मिटा सकते हैं।
साझा प्राथमिकताओं का भी ऐप के लिए उपयोगकर्ता सेटिंग्स को सहेजने के लिए उपयोग किया जा सकता है, मुझे लगता है कि यह सौ प्रश्नों के लिए अधिक हो सकता है, यह SQLite डेटाबेस में इस जानकारी को स्टोर करने के लिए बेहतर होगा; जानकारी सर्वर पर रखा जा रहा है। जब भी कोई अपडेट होता है तो आप डेटा को मिटा नहीं सकते हैं, आपको उपभोक्ता की प्रगति के मौजूदा रिकॉर्ड रखना चाहिए। आप जानकारी को बनाए रखने के लिए उपभोक्ता के डिवाइस पर भरोसा नहीं कर सकते हैं। यदि कोई जानकारी है जिसे आप ट्रैक रखना चाहते हैं, आपको इसके लिए जिम्मेदारी लेनी होगी।
इसे स्थानीय रूप से फोन पर संग्रहीत किया जा सकता है और सर्वर से नियमित रूप से समन्वयित किया जा सकता है।
हमारे ऐप्स में, हम यह करते हैं कि हम इसे कैसे करते हैं और डेटा अपडेट से बचता है और हमारे पास लाखों पंक्तियां हैं। अधिक प्रश्न पूछने के लिए स्वतंत्र महसूस करें, हालांकि यह सब कुछ कैसे काम करता है इसके लिए एक वास्तविक ट्यूटोरियल (या कोड) देना स्टैक ओवरफ़्लो के लिए थोड़ा सा जवाब है।
स्रोत
2016-10-14 16:28:19
उत्तरों सवालों पर एक रेफरेंसियल बाधा होना चाहिए। उत्तर तालिका प्रश्नोत्तरी है। फिर आप प्रश्नों को बदलकर इसे तोड़ नहीं सकते हैं। – danny117
@Anene क्या आपने अपडेट का उपयोग करने का प्रयास किया था, जहां प्रश्न को हटाने के लिए क्लॉज है जो आपके क्रिएटिया को संतुष्ट नहीं करता है? –