it-swarm.asia

تصميم قاعدة بيانات الاستبيان - أيهما أفضل؟

لدي صفحة html طويلة واحدة ، والعديد من مجموعات الأسئلة مقسمة إلى أقسام صغيرة (حوالي 15 قسمًا فرعيًا في صفحة واحدة) ، مجموع الأسئلة حوالي 100 سؤال: يختلف من الإدخال ، الاختيار من متعدد ، مربعات الاختيار ، أزرار الاختيار ، textarea ، وتحميل الملف. يمكن أن يحتوي سؤال واحد على العديد من الإجابات التي تم الحصول عليها إما من مجموعة مربعات الاختيار أو مجموعة قائمة التحديد أو مجموعة التحديد المتعدد أو جميعها مجمعة في إجابة واحدة. اعتقدت أنني سأستخدم تصميم قاعدة البيانات هذه أدناه ولكن اكتشفت مؤخرًا أنها ليست الطريقة الجيدة بعد كل شيء.

  1. يمكن أن يكون لدى عميل واحد مجموعة واحدة فقط من الأسئلة: عميل واحد لكل 100 سؤال.
  2. بالنسبة للنهج القديم ، لا أحتفظ بالسؤال في قاعدة البيانات ولكني أسنده ثابتًا في PHP الترميز بدلاً من ذلك. المشكلة هي أنه يجب مقارنة السؤال في PHP لمزامنتها مع الإجابة في قاعدة البيانات. إذا تم تغيير/حذف/نقل سؤال واحد من PHP ، فسوف أضيع بالتأكيد لمطابقته مع الإجابة في قاعدة بيانات الاستبيان. حل أفضل؟
  3. هل يمكنني الاحتفاظ بإجابات متعددة تم الحصول عليها من عناصر متعددة في شكل واحد في حقل واحد كإجابة واحدة؟ كيف يمكنني استرداد هذا الحقل وعرضه مرة أخرى لعرض العملاء على النموذج؟
  4. أي خيار في الأسفل يجب أن أذهب إليه؟

الخيار 1: النهج القديم (جدول 1)

الجدول: استبيان

  • المعرّف (PK)
  • هوية الزبون
  • الحالة
  • أ 1
  • أ 2
  • A3
  • .
  • .
  • .
  • أ 100

الخيار 2: نهج جديد (جدولان)

الجدول: سؤال

  • QID (PK)
  • سؤال (varchar)

الجدول: الإجابة

  • AID (PK)
  • هوية الزبون
  • QID (عدد)
  • الجواب (varchar)

أو الخيار 3؟

15
Modular

بالتأكيد لا ترميز الاستبيان الخاص بك. استخدم قاعدة بيانات علائقية أو ملفات xml. أقترح الجداول التالية

  • Questionnaire: الوصف العام للاستبيان. العنوان واسم المسح وتاريخ إصدار الاستبيان والإصدار وما إلى ذلك.

  • Section: الأقسام التي يتكون منها الاستبيان. رقم القسم وعنوان القسم والوصف.

  • Question: الأسئلة التي تخص القسم. رقم السؤال ، نص السؤال ، الوصف ، نوع السؤال (النص ، الاختيار من متعدد ، إلخ.).

  • Question_Choice: الإجابات المحتملة لسؤال يقابل مربعات الاختيار المفردة وأزرار الاختيار وما إلى ذلك. نص الاختيار ورقم الاختيار والنظام.

  • Respondent: الأشخاص الذين يجيبون على الأسئلة. البيانات الشخصية ، رقم المستخدم.

  • Interview: مقابلات أو اختبارات أو استطلاعات (تعتمد على طبيعة الاستبيان) مملوكة لمجيب واحد واستبيان واحد. إذا كان بإمكان المجيب دائمًا الإجابة على استبيان واحد فقط (أو إذا كان الاستطلاع مجهولاً) ، فهذا الجدول قديم ويمكن دمجه مع جدول المستجيبين. تاريخ المقابلة (أو تاريخ الاختبار أو تاريخ المسح) ، المحاور (إن وجد).

  • Answer: إجابات تخص مقابلة واحدة (أو المستجيب ، انظر أعلاه) وسؤال واحد. الإجابة على النص (بالنسبة إلى أسئلة نوع النص) ، الاختيار (لأزرار الاختيار).

  • Answer_Choice: الاختيارات التي تنتمي إلى إجابة واحدة و Question_Choice واحد عندما يمكن التحقق من اختيارات متعددة.

هذا نهج طبيعي جدا. ومع ذلك ، يمكنك أن تقرر ربط الخيارات في سلسلة واحدة أو تخزينها كنمط بت أو تبسيطها بطريقة أخرى حسب احتياجاتك.

17
Olivier Jacot-Descombes

أنت بحاجة إلى بعض الجداول ،

1 - الأسئلة (معرف السؤال ، نوع الإدخال ، مرئي ، نوع السؤال ، نص السؤال ، الإجابات المتوقعة ....)

2 - الإجابات (معرف السؤال ، معرف المستخدم ، معرف النشاط ، الإجابة ....)

3 - المستخدمون (معرف المستخدم واسم المستخدم ......)

4 - جدول لإجراء نشاط سؤال/إجابة (معرف النشاط ، البيانات/الوقت ، معرف المستخدم)

قد ترغب أيضًا في أن يكون لديك جدول يحدد الأسئلة التي يجب تطبيقها لكل نشاط - إما مجمعة حسب المستخدم أو ربما مجموعة أسئلة. ستكون المفاتيح الخارجية/الأساسية هي الأعمدة التي لها نفس الاسم في جداول متعددة ويجب فهرستها.

إذا كنت تستخدم هذه البنية ، يجب أن تكون قادرًا على إضافة سؤال أو مستخدم أو تغيير إجابة دون الحاجة إلى تغيير مخططك أو رمز العرض التقديمي - تأكد من إنشاء رمز العرض بشكل ديناميكي في وقت التشغيل - ما عليك سوى إضافة سجل في المكان المناسب.

قد يستغرق هذا النهج وقتًا أطول للتطوير في البداية من النهج الثابت المشفر ، ولكن الحفاظ عليه أبسط كثيرًا لأنك ستحتاج فقط إلى تغيير البيانات لتغيير السلوك.

(نصيحة ، لإنشاء طبقة العرض التقديمي الخاص بك ، ستحتاج إلى استعلام يحصل على الأسئلة المناسبة ليتم عرضها ، ثم قم بالمرور من خلال مجموعة النتائج هذه واستدعاء طريقة لتقديم سؤال على الشاشة ، والطرق لاختيار المناسبة لتكون مناسبة عرض هذا السؤال [مربع نص ، مجموعة راديو ، الخ])

6
adam f