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

एक ऑनलाइन सर्वेक्षण के लिए एक डेटाबेस मॉडल। भाग 3

भाग 2 . के निष्कर्ष में लेखों की इस श्रृंखला में, मैंने उल्लेख किया है कि मैं और अधिक उन्नत सुविधाएँ जोड़ूंगा, जैसे:

  • प्रश्नों का सशर्त क्रम एक सर्वेक्षण में या, दूसरे शब्दों में, सर्वेक्षण के माध्यम से एक सशर्त पथ की संभावना
  • प्रशासन सर्वेक्षण के
  • रिपोर्ट और विश्लेषण

ऑनलाइन सर्वेक्षण . से संबंधित इस तीसरे लेख में , मैं प्रश्नों के सशर्त क्रम का समर्थन करने के लिए कार्यक्षमता का विस्तार करूंगा।

भविष्य में, हम ऐसे प्रश्न जोड़ सकते हैं जिनके लिए रेटेड प्रतिक्रिया की आवश्यकता होती है। उदाहरण के लिए:"आपको डेटाबेस डिज़ाइन कितना पसंद है, 1 और 100 के बीच की दर (1 के साथ यह दर्शाता है कि आप इसे बहुत कम पसंद करते हैं और 100 यह दर्शाता है कि आप इसे बहुत पसंद करते हैं)?"

सशर्त पथ

हम उपयोगकर्ता प्रतिक्रियाओं के आधार पर उपयोगकर्ता को प्रस्तुत किए गए प्रश्नों पर कुछ शर्तें निर्धारित करना चाहते हैं। उदाहरण के लिए, यदि प्रश्न 4 का उत्तर "हाँ" है, तो हम प्रश्न 5 पूछते हैं और प्रश्न 6 को छोड़ देते हैं; जबकि यदि प्रश्न 4 का उत्तर "नहीं" है, तो हम प्रश्न 5 को छोड़ देते हैं और प्रश्न 6 पूछते हैं।

इसलिए हमें यह परिभाषित करने की आवश्यकता है कि कौन से प्रश्न सशर्त हैं और किसी प्रश्न के उत्तर के आधार पर प्रश्नों को कैसे "छोड़ें"।

प्रारंभ में, सशर्त पथ को सरल रखने के लिए, हम बहुविकल्पीय प्रश्नों पर आधारित शर्तों की अनुमति नहीं देंगे, बल्कि केवल ध्रुवीय (हां या नहीं) प्रश्नों के लिए अनुमति देंगे। डिज़ाइन को बहुविकल्पीय प्रश्नों के आधार पर सशर्त पथ का समर्थन करने के लिए बढ़ाया जा सकता है, लेकिन यह अधिक जटिल है और मैं सरल शुरुआत करना चाहता हूं।

यह महत्वपूर्ण है कि एप्लिकेशन प्रत्येक प्रश्न के लिए इस प्रवाह की जांच करे, क्योंकि पिछले प्रश्न का उत्तर वर्तमान प्रश्न के लिए प्रवाह तय कर सकता है (पिछली प्रतिक्रिया के आधार पर किसी प्रश्न को छोड़ने के लिए)।

प्रशासन और रिपोर्ट

अभी के लिए, हम ऑनलाइन सर्वेक्षणों के व्यवस्थापकों को नहीं जोड़ेंगे, लेकिन इसे अगले विस्तार के लिए रखेंगे।

कुछ रिपोर्ट और विश्लेषण की आवश्यकता होगी; हालांकि, मैं इसे अगले संस्करण के लिए रखूंगा क्योंकि मैं बाद में विश्लेषण करने के लिए पहले कुछ जानकारी संग्रहीत करना चाहता हूं।

इकाई और संबंध

सर्वेक्षण के माध्यम से सशर्त पथ के लिए, मैं question_order का विस्तार करूंगा जो प्रत्येक सर्वेक्षण के लिए परिभाषित है और सर्वेक्षण को प्रश्नों से जोड़ता है। जैसा कि बताया गया है, अभी के लिए, सशर्त छलांग केवल ध्रुवीय प्रश्नों पर आधारित होगा, इसलिए मैं सकारात्मक प्रतिक्रिया के मामले में प्रदर्शित करने के लिए अगला प्रश्न और नकारात्मक प्रतिक्रिया के मामले में अगला प्रश्न प्रदर्शित करने के लिए परिभाषित कर सकता हूं।

औपचारिक डिजाइन

आइए भाग 1 . में बनाए गए ERD का विस्तार करें लेखों की इस श्रृंखला के।

मैं conditional_order जोड़ूंगा question_order . से लिंक किया गया; जैसा कि मैंने पहले उल्लेख किया है, मैं ध्रुवीय प्रश्नों पर आधारित सर्वेक्षण के माध्यम से केवल सशर्त आदेश का समर्थन करूंगा। अब, इसे लागू करने के कुछ तरीके हैं। मेरी जरूरतें सीधी हैं, इसलिए मैं सीधे-सीधे कार्यान्वयन को चुनूंगा। यदि आपकी आवश्यकताएँ अधिक जटिल हैं, तो आपको अधिक जटिल समाधान की आवश्यकता होगी।

वर्तमान प्रश्न की प्रतिक्रिया के आधार पर पूछे जाने वाले "अगले" प्रश्न को परिभाषित करना अच्छा होगा, लेकिन यह हमें बाद में सर्वेक्षण में किसी प्रश्न को छोड़ने की अनुमति नहीं देगा, इसलिए हमें अधिक लचीलेपन की आवश्यकता है।

एक तरीका यह निर्दिष्ट करना है कि सकारात्मक प्रतिक्रिया के मामले में कितने प्रश्नों को आगे बढ़ाना है और कितने नकारात्मक प्रतिक्रिया पर आगे बढ़ना है; हालांकि, मुझे यह निर्दिष्ट करना होगा कि किस प्रश्न के लिए छलांग लागू होती है और किस प्रश्न के उत्तर का उपयोग किया जाना है। तो मेरे उदाहरण का समर्थन करने के लिए:यदि प्रश्न 4 का उत्तर "हां" है, तो हम प्रश्न 5 पूछते हैं और प्रश्न 6 को छोड़ देते हैं, जबकि यदि प्रश्न 4 का उत्तर "नहीं" है, तो हम प्रश्न 5 को छोड़ देते हैं और प्रश्न 6 पूछते हैं - इसके लिए दो प्रविष्टियों की आवश्यकता होती है, जिनमें से दोनों प्रश्न 4 के उत्तर की जांच करते हैं, एक आगे बढ़ने वाला एक प्रश्न (हमेशा की तरह) और एक आगे दो प्रश्नों को छोड़ देता है (एक प्रश्न को छोड़ने के लिए), और दूसरी शर्त की जांच प्रश्न 5 का उत्तर देने के बाद की जाती है जो प्रश्न छोड़ देता है 6.

  +-------------------+----------------------+------------------------+------------------------+ 
  | question_order_id | response_to_question | positive_response_jump | negative_response_jump |
  +-------------------+----------------------+------------------------+------------------------+
  | 4                 | 4                    | 1                      | 2                      |
  +-------------------+----------------------+------------------------+------------------------+
  | 5                 | 4                    | 1                      | null                   |
  +-------------------+----------------------+------------------------+------------------------+

एक विकल्प अगले प्रश्न की आईडी निर्दिष्ट करना है जिस पर किसी विशेष प्रतिक्रिया के मामले में सर्वेक्षण कूदना चाहिए:सकारात्मक प्रतिक्रिया के मामले में अगला प्रश्न और नकारात्मक के मामले में अगला प्रश्न प्रतिक्रिया। इस दृष्टिकोण के पेशेवरों और विपक्ष हैं। यह लूप होने की अनुमति देगा, जिसे एक व्यवस्थापक नोटिस नहीं कर सकता है। हालांकि, लूप एक वांछित प्रभाव हो सकता है ताकि आप अंतिम प्रश्न उत्तरदाता से पूछ सकें कि क्या वे सर्वेक्षण के साथ समाप्त हो गए हैं और यदि वे "नहीं" का जवाब देते हैं, तो पहले प्रश्न पर वापस आएं। इसके अलावा, सकारात्मक या नकारात्मक प्रतिक्रिया के मामले में कूदने के लिए प्रश्नों को सर्वेक्षण के लिए निर्दिष्ट प्रश्नों के क्रम के लिए विदेशी कुंजी के रूप में स्थापित किया जा सकता है ताकि हम सुनिश्चित रूप से जान सकें कि निर्दिष्ट प्रश्न सर्वेक्षण में परिभाषित किया गया है। संदर्भात्मक अखंडता के माध्यम से कार्यान्वित तर्क में यह एक अच्छी जांच है। मुझे लगता है कि यह शायद बेहतर समाधान है, इसलिए आपको ईआरडी में यही मिलेगा।

तो मेरे उदाहरण का समर्थन करने के लिए:यदि प्रश्न 4 का उत्तर "हां" है, तो हम प्रश्न 5 पूछते हैं और प्रश्न 6 को छोड़ देते हैं, जबकि यदि प्रश्न 4 का उत्तर "नहीं" है, तो हम प्रश्न 5 को छोड़ देते हैं और प्रश्न 6 पूछते हैं।

जैसा कि बताया गया है, हमारे पास दो पंक्तियां हैं:

Survey #1, question #4, response to question #4, positive response: next question order id = 5, negative response: next question order id = 6.

Survey #1, question #5, response to question #4, positive response: next question order id = 7. We will never get to question #5 if the response to question #4 was negative, so we always skip question #6 after asking question #5.

  +--------+----------+----------------------+-------------------------------+-------------------------------+
  | survey | question | response_to_question | positive_response_question_id | negative_response_question_id |
  +--------+----------+----------------------+-------------------------------+-------------------------------+
  | 1      | 4        | 4                    | 5                             | 6                             |
  +--------+----------+----------------------+-------------------------------+-------------------------------+
  |        | 5        | 4                    | 7                             | null                          |
  +--------+----------+----------------------+-------------------------------+-------------------------------+

शर्त सेट करते समय, हम यह सुनिश्चित करने के लिए एक विदेशी कुंजी (अनिवार्य नहीं) का उपयोग करेंगे कि अगला प्रश्न मौजूद है। शून्य मान का उपयोग उस पथ के लिए किया जाता है जो संभव नहीं है या, यदि कोई अगला प्रश्न निर्दिष्ट नहीं है, तो सर्वेक्षण को सशर्त रूप से समाप्त करने के लिए उपयोग किया जाता है।




मैंने उन तालिकाओं को रंग दिया है जो भाग 1 . में बनाई गई थीं लेख श्रृंखला के  पीले में, तालिकाएं भाग 2 में जोड़ी गई हैं नारंगी में, और नई जोड़ी गई तालिका  हरे रंग में, ताकि जोड़ देखना आसान हो जाए।

निष्कर्ष

सर्वेक्षण के माध्यम से सशर्त चरणों के प्रबंधन के लिए वर्णित समाधानों में से कोई भी अंतिम नियम-आधारित प्रणाली नहीं है, लेकिन मेरा एक लक्ष्य चीजों को सरल और सीधा रखना है। जटिलता में भारी चीजों के बिना लचीलेपन की अनुमति देना। और, मैं खुद को दोहराऊंगा, आपकी अन्य आवश्यकताएं हो सकती हैं। अपनी आवश्यकताओं की पहचान करें; आपको जो चाहिए उसे लागू या अनुकूलित करें। मैं पहिए के पुन:उपयोग में दृढ़ता से विश्वास करता हूं और पहिया का पुन:आविष्कार नहीं करता हूं।

अब हमने उन सुधारों को लागू करना शुरू कर दिया है जिन पर लेखों की इस श्रृंखला के भाग 1 और 2 में चर्चा की गई थी।

अगले लेखों में, मैं इन सुविधाओं के लिए समर्थन जोड़ूंगा:

  • सर्वेक्षणों का प्रशासन
  • रिपोर्ट और विश्लेषण

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संरचित क्वेरी भाषा – SQL सीखने का महत्व

  2. पेरकोना डीबी क्या है

  3. SQL में किसी तालिका में पंक्तियों की संख्या की गणना कैसे करें

  4. DevOps को अपने अनुप्रयोग विकास को अनुकूलित करने के लिए DBaaS (डेटाबेस-ए-ए-सर्विस) का उपयोग कैसे करना चाहिए

  5. TimescaleDB को आसानी से कैसे परिनियोजित करें