প্রশ্নাবলির ডাটাবেস ডিজাইন - কোন উপায়ে ভাল?


15

আমার এক লম্বা এইচটিএমএল পৃষ্ঠা রয়েছে, বিভিন্ন সেট প্রশ্নের ছোট ছোট বিভাগে বিভক্ত হয়েছে (প্রায় এক পৃষ্ঠায় 15 টি উপ-বিভাগ), মোট প্রশ্নগুলির প্রায় 100 টি প্রশ্ন: ইনপুট, একাধিক পছন্দ, চেকবক্স, রেডিও বোতাম, টেক্সারিয়া, এবং ফাইল আপলোড। একটি প্রশ্নে অনেকগুলি উত্তর থাকতে পারে যা চেকবক্সের দল, নির্বাচিত তালিকার গ্রুপ, একাধিক-নির্বাচনের গ্রুপ বা তাদের সমস্ত উত্তরকে একত্রিত করে প্রাপ্ত হয়েছিল। আমি ভেবেছিলাম আমি নীচে এই ডাটাবেস ডিজাইনটি ব্যবহার করব তবে ইদানীং খুঁজে পেয়েছি যে এটি সর্বোপরি ভাল পদ্ধতির নয়।

  1. একজন গ্রাহকের কাছে কেবলমাত্র একটি সেট প্রশ্ন থাকতে পারে: প্রতি 100 টি প্রশ্নে একজন গ্রাহক।
  2. পুরানো পদ্ধতির জন্য আমি ডাটাবেসে প্রশ্ন রাখি না তবে পরিবর্তে পিএইচপি কোডিংয়ে ধ্রুবক হিসাবে নিয়োগ করি। সমস্যাটি হ'ল পিএইচপিতে প্রশ্নের তুলনা করতে হবে এটি ডাটাবেসের উত্তরের সাথে সিঙ্ক্রোনাইজ করতে। যদি একটি প্রশ্ন পিএইচপি থেকে পরিবর্তন / মুছে ফেলা / সরানো হয়ে থাকে, তবে আমি অবশ্যই প্রশ্নাবলীর ডাটাবেসে উত্তরটির সাথে এটি মিলিয়ে যেতে চাই। এর চেয়ে ভাল সমাধান?
  3. আমি কি একাধিক উপাদান থেকে প্রাপ্ত একাধিক উত্তরকে এক ক্ষেত্র হিসাবে উত্তর হিসাবে রাখতে পারি? আমি কীভাবে এই ক্ষেত্রটি পুনরুদ্ধার করতে এবং ফর্মটিতে গ্রাহক দেখার জন্য এটি আবার প্রদর্শন করতে পারি?
  4. নীচে কোন বিকল্পের জন্য যাওয়া উচিত?

বিকল্প 1: পুরানো পদ্ধতির (1 টেবিল)

টেবিল: প্রশ্নাবলী

  • আইডি (পিকে)
  • CustomerID
  • অবস্থা
  • ক 1
  • A2,
  • A3 তে
  • A100

বিকল্প 2: নতুন পদ্ধতি (2 টেবিল)

টেবিল: প্রশ্ন

  • কিউআইডি (পিকে)
  • প্রশ্ন (বার্তা)

টেবিল: উত্তর

  • এইড (পিকে)
  • CustomerID
  • কিউআইডি (ইনট্রি)
  • উত্তর (বর্ণ)

বা বিকল্প 3?


আপনি অ্যাপ্লিকেশন সম্পর্কে আরও তথ্য যুক্ত করতে পারেন দয়া করে। - প্রশ্নাবলী গতিশীলভাবে তৈরি করা হয়? আইই: এই প্রশ্নাবলীর এই প্রশ্নগুলি থাকা উচিত এবং অন্য প্রশ্নাবলীতে এই অন্যান্য প্রশ্ন থাকা উচিত। - প্রশ্নাবলীর জন্য প্রশ্নগুলি গতিশীল? আইই: গ্রাহক পরে নতুন প্রশ্ন যুক্ত করতে পারেন। নির্বিশেষে এটি গতিশীল সিস্টেম বা স্থিতিশীল সিস্টেম হলেও আপনাকে 1: 1 প্রশ্ন-উত্তর ফলাফল 1: এম এর চেয়ে আলাদাভাবে সংরক্ষণ করতে হবে: এম প্রশ্ন: ডিবিতে উত্তর
জাম্বোনিলি

হ্যাঁ এবং না যথাক্রমে (গতিশীল প্রশ্ন দ্বিতীয় স্তরের পরে হতে পারে তবে এখন নয়।)
মডিউলার

আমি এই 100 টি প্রশ্নটি বন্ধ করার পক্ষে ভোট দিয়েছি : ইনপুট, একাধিক পছন্দ, চেকবক্স, রেডিও বোতাম, টেক্সারিয়া এবং ফাইল আপলোড থেকে পৃথক হতে পারে দরকারী হিসাবে খুব বেশি বিস্তৃত।
ইভান ক্যারল

উত্তর:


17

অবশ্যই আপনার প্রশ্নাবলি হার্ড কোড করবেন না। একটি রিলেশনাল ডাটাবেস বা এক্সএমএল ফাইল ব্যবহার করুন। আমি নিম্নলিখিত সারণি প্রস্তাব

  • Questionnaire: প্রশ্নাবলীর সাধারণ বিবরণ। শিরোনাম, জরিপের নাম, প্রশ্নাবলী প্রকাশের তারিখ, সংস্করণ এবং আরও অনেক কিছু।

  • Section: বিভাগগুলি একটি প্রশ্নাবলী তৈরি করা হয়। বিভাগের সংখ্যা, বিভাগের শিরোনাম, বিবরণ।

  • Question: একটি বিভাগ সম্পর্কিত প্রশ্ন। প্রশ্নের সংখ্যা, প্রশ্নের পাঠ্য, বিবরণ, প্রশ্নের ধরণ (পাঠ্য, একাধিক পছন্দ ইত্যাদি)।

  • Question_Choice: একক চেকবক্স, রেডিও বোতাম এবং এর সাথে সম্পর্কিত কোনও প্রশ্নের সাথে সম্পর্কিত উত্তরগুলি। পছন্দের পাঠ্য, পছন্দ নম্বর, ক্রম।

  • Respondent: প্রশ্নগুলির উত্তর দেওয়ার ব্যক্তিরা। ব্যক্তিগত তথ্য, ব্যবহারকারীর নম্বর।

  • Interview: একজন উত্তরদাতা এবং একটি প্রশ্নোত্তরের অন্তর্ভুক্ত সাক্ষাত্কার বা পরীক্ষা বা জরিপ (প্রশ্নাবলীর প্রকৃতির উপর নির্ভরশীল)। যদি কোনও উত্তরদাতা সর্বদা একটি মাত্র প্রশ্নাবলীর উত্তর দিতে পারে (বা সমীক্ষাটি বেনামে থাকে), এই টেবিলটি অপ্রচলিত এবং প্রতিক্রিয়াশীল টেবিলের সাথে একত্রীকরণ করা যেতে পারে। সাক্ষাত্কারের তারিখ (বা পরীক্ষার তারিখ বা জরিপের তারিখ), সাক্ষাত্কার (যদি এটি প্রয়োগ হয়)।

  • Answer: একটি সাক্ষাত্কার (বা উত্তরদাতা, উপরে দেখুন) এবং একটি প্রশ্নের উত্তর question উত্তরের পাঠ্য (পাঠ্যের ধরণের প্রশ্নের জন্য), পছন্দ (রেডিও বোতামগুলির জন্য)।

  • Answer_Choice: একাধিক উত্তর এবং একটি প্রশ্ন_ভিত্তিক পছন্দগুলি যখন একাধিক পছন্দগুলি পরীক্ষা করা যায়।

এটি একটি খুব স্বাভাবিক পদ্ধতি; তবে, আপনি পছন্দগুলি এক স্ট্রিংয়ের সাথে যুক্ত করে বা বিট প্যাটার্ন হিসাবে সংরক্ষণ করতে বা আপনার প্রয়োজনের উপর নির্ভর করে অন্য কোনও উপায়ে সরল করার সিদ্ধান্ত নিতে পারেন।


6

আপনার কয়েকটি টেবিল দরকার,

1 - প্রশ্নগুলি (প্রশ্ন আইডি, ইনপুট ধরণের, দৃশ্যমান, প্রশ্নের ধরণ, প্রশ্নের পাঠ্য, প্রত্যাশিত উত্তরগুলি ....)

2 - উত্তর (প্রশ্ন আইডি, ব্যবহারকারী আইডি, ক্রিয়াকলাপ আইডি, উত্তর ....)

3 - ব্যবহারকারী (ব্যবহারকারী আইডি, ব্যবহারকারীর নাম ......)

4 - একটি প্রশ্ন / উত্তর ক্রিয়াকলাপ (ক্রিয়াকলাপ আইডি, ডেটা / সময়, ব্যবহারকারীর আইডি) রাখার জন্য একটি সারণী

আপনি একটি টেবিল রাখতে পছন্দ করতে পারেন যা প্রতিটি ক্রিয়াকলাপের জন্য প্রয়োগ করা উচিত এমন প্রশ্নগুলি নির্দিষ্ট করে - ব্যবহারকারী দ্বারা গোষ্ঠীভুক্ত হতে পারে বা একটি প্রশ্ন সংগ্রহ হতে পারে। বিদেশী / প্রাথমিক কীগুলি একাধিক সারণীতে একই নামযুক্ত কলামগুলি হবে এবং সূচিযুক্ত হওয়া উচিত।

আপনি যদি এই কাঠামোটি ব্যবহার করেন তবে আপনার স্কিমা বা উপস্থাপনা কোডটি পরিবর্তন না করেই আপনি কোনও প্রশ্ন বা ব্যবহারকারী যুক্ত করতে বা একটি উত্তর পরিবর্তন করতে সক্ষম হবেন - তা নিশ্চিত করুন যে উপস্থাপনা কোডটি চলমান সময়ে গতিশীলভাবে তৈরি হয়েছে - আপনাকে কেবল একটি রেকর্ড যুক্ত করতে হবে উপযুক্ত জায়গায়।

এই কোডটি হার্ড কোডড পদ্ধতির চেয়ে প্রাথমিকভাবে বিকাশ করতে আরও বেশি সময় নিতে পারে তবে আচরণটি পরিবর্তনের জন্য আপনাকে কেবল ডেটা পরিবর্তন করতে হবে বলে এটি বজায় রাখতে আরও সহজ হবে।

(একটি টিপ, আপনার উপস্থাপনা স্তর তৈরি করার জন্য, আপনাকে এমন একটি কোয়েরির প্রয়োজন হবে যা যথাযথ প্রশ্নগুলি প্রদর্শিত হবে, তারপরে এই ফলাফলটি সেট করে লুপ করুন এবং স্ক্রিনে প্রশ্নটি রেন্ডার করার জন্য একটি পদ্ধতি কল করুন, যে পদ্ধতিগুলি উপযুক্ত তা পছন্দ করে এই প্রশ্নের উপস্থাপনা [পাঠ্য বাক্স, রেডিও গ্রুপ, ইত্যাদি]


টেবিল # 4 সম্পর্কে +1 নিশ্চিত নয়, তবে সামগ্রিকভাবে ভাল উত্তর। বিশেষত আমি একবচনীয় টেবিলের নাম থেকে বহুবচন অর্থাৎ প্রশ্ন >> প্রশ্নগুলিতে পরিবর্তন পছন্দ করি।
লেফ রিফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.