একটি সমীক্ষার জন্য ডেটাবেস ডিজাইন [বন্ধ]


129

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

আমি দুটি সম্ভাব্য সমাধান নিয়ে এসেছি:

  1. প্রতিটি জরিপ জমা দেওয়ার জন্য উত্তর রয়েছে এমন একটি বিশাল টেবিল তৈরি করুন। প্রতিটি কলাম জরিপ থেকে একটি উত্তর অনুরূপ হবে। যেমন সার্ভেআইডি, উত্তর 1, উত্তর 2, উত্তর 3

    এই সমীক্ষায় প্রচুর প্রশ্ন রয়েছে এবং জরিপটি পরিবর্তন করতে হয় তবে এটি খুব নমনীয় বলে মনে হয় না বলেই আমি এটি সেরা উপায় বলে মনে করি না।

  2. অন্য যে জিনিসটি আমি ভেবেছিলাম তা হ'ল একটি প্রশ্ন সারণী এবং উত্তর সারণী তৈরি করা। জরিপের জন্য প্রশ্ন টেবিলে সমস্ত প্রশ্ন থাকবে। উত্তর সারণীতে জরিপ থেকে পৃথক উত্তর থাকবে, প্রতিটি সারি একটি প্রশ্নের সাথে যুক্ত।

    একটি সহজ উদাহরণ:

    tblSurvey : সার্ভেআইডি

    tblQuestion : প্রশ্নিআইডি , সার্ভেআইডি , প্রশ্নোত্তর, প্রশ্ন

    tblAnswer : AnswerID, আইডি , QuestionID , উত্তর

    tblUser : ইউজারআইডি, ইউজারনেম

    এর সাথে আমার সমস্যাটি হ'ল এমন অনেকগুলি উত্তর থাকতে পারে যা উত্তর টেবিলটিকে বেশ বিশাল করে তুলবে। পারফরম্যান্সের ক্ষেত্রে আমি নিশ্চিত যে এটি এত দুর্দান্ত।

আমি কোন ধারণা এবং পরামর্শ প্রশংসা করব।


"বেশ বিশাল" কত? আমাদের একটি অনুমান দিন, আমরা কি এক মিলিয়ন বা এক হাজার মিলিয়ন সম্পর্কে কথা বলছি?
জর্জি কর্ডোবা

1
এসকিউএল সার্ভারগুলি আসলে 'টন' ডেটার সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। আপনি যে প্রকল্পের কথা বলেছেন তার সাথে কাজ করতে আপনার খুব বেশি সমস্যা হবে না।
ক্রিস

উত্তর:


122

আমি মনে করি যে আপনার # 2 মডেলটি ঠিক আছে, তবে আপনি আরও জটিল মডেলটি দেখে নিতে পারেন যা প্রশ্ন এবং প্রাক-তৈরি উত্তরগুলি সরবরাহ করে (প্রস্তাবিত উত্তরগুলি) সংরক্ষণ করে এবং তাদেরকে বিভিন্ন সমীক্ষায় পুনরায় ব্যবহার করার অনুমতি দেয়।

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

survey_model_02


1
ডাটাবেস স্কিমা তৈরি করতে আপনি কোন সরঞ্জামটি ব্যবহার করেছেন?
AndHeiberg

আমি আলটোভা ইউমোডেল ব্যবহার করি। এটি দ্রুত, মডেলিং স্ট্রাকচারগুলির বিস্তৃত নির্বাচনের প্রস্তাব দেয় এবং প্রতিটি ফর্ম্যাটকে অনেকটা সংরক্ষণ করে। যদিও, এটি ব্যয় করে।
ওবিমোদ

9
আপনি অঙ্কনওও ব্যবহার করতে পারেন এটি নিখরচায় ডাব্লু / কোনও সাইনআপ এবং ব্যবহার করা সহজ।
usr4896260

3
কেন আমাদের আছে Survey_Question_Answerএবং Answer? শুধু কি Answerযথেষ্ট নয়?
আবুবকর আহমদ

1
আমি মনে করি Answerযথেষ্ট, Survery_question_answerঅপ্রয়োজনীয়
ব্যাটম্যান

62

আমার নকশা নীচে প্রদর্শিত হয়।

সর্বশেষতম স্ক্রিপ্টটি এখানে রয়েছে https://gist.github.com/durrantm/1e618164fd4acf91e372 এ রয়েছে

স্ক্রিপ্ট এবং মাইএসকিএল workbench.mwb ফাইলটি https://github.com/durrantm/survey এ উপলব্ধ
এখানে চিত্র বর্ণনা লিখুন


হাই, আমি আপনার নকশা পছন্দ। টেবিলগুলির জন্য দয়া করে কোনও ডেটা নমুনা (ডাম্প) আছে? সত্যই প্রশংসা করবে
এমেকা মাবাঃ

হাই! আপনার কাজের জন্য প্রথম ধন্যবাদ এটি দুর্দান্ত! আপনি কি আপনার কোনও একটি টেমপ্লেটে হাইরাচি বিবেচনা করেছেন? ব্যবহারকারীরা সাধারণত তাদের নেতা সম্পর্কে তথ্য দেয় এবং এই নেতাদের তাদের নেতাদের সম্পর্কে তথ্যাদি ইত্যাদি রয়েছে। এবং ব্যবহারকারীরা বিভিন্ন বিভাগে (এইচআর, উত্পাদনের) কাজ করেন এবং এগুলির পাশাপাশি একটি শ্রেণিবদ্ধতা থাকতে পারে। সুতরাং প্রতিবেদন করার সময় প্রায়শই এই সংস্থা স্তরের মধ্যে পার্থক্য করা প্রয়োজন to
ruedi

@ মাইকেল: এটি সত্যই সহায়ক। বসন্ত ব্যবহার করে জাভাটির জন্য আপনার কোনও রেফারেন্স / গিথুব লিঙ্ক রয়েছে?
সাগর পান্ডা

আমি এখনও এটির চেষ্টা করছি option_groupsএবং এর মধ্যে এবং option_choicesকীভাবে ব্যবহারের ক্ষেত্রে তফাত রয়েছে ।
পিএইচপি নুব

@ পিএইচপিএনউব আমি মনে করি, নাম হিসাবে এটি সহজভাবে বিকল্পগুলির গোষ্ঠীবদ্ধ করে । সুতরাং যদি আপনি উদাহরণস্বরূপ 1 থেকে 5 এর মধ্যে রেট দিতে পারেন, তবে option_groupsআপনাকে সঠিকভাবে অনুমতি দেওয়া উচিত যদি আমি এই অধিকারটি পাচ্ছি।
displayname

18

অবশ্যই # 2 বিকল্প, এছাড়াও আমি মনে করি আপনার বর্তমান স্কিমাতে একটি তদারকি থাকতে পারে, আপনি অন্য একটি টেবিল চাইবেন:

+-----------+
| tblSurvey |
|-----------|
| SurveyId  |
+-----------+

+--------------+
| tblQuestion  |
|--------------|
| QuestionID   |
| SurveyID     |
| QuestionType |
| Question     |
+--------------+

+--------------+
| tblAnswer    |
|--------------|
| AnswerID     |
| QuestionID   |
| Answer       |
+--------------+

+------------------+
| tblUsersAnswer   |
|------------------|
| UserAnswerID     |
| AnswerID         |
| UserID           |
| Response         |
+------------------+

+-----------+
| tblUser   |
|-----------|
| UserID    |
| UserName  |
+-----------+

প্রতিটি প্রশ্নেরই সম্ভবত উত্তরগুলির একটি সেট সংখ্যা রয়েছে যা ব্যবহারকারীরা বেছে নিতে পারেন, তারপরে প্রকৃত প্রতিক্রিয়াগুলি অন্য টেবিলে ট্র্যাক করা হবে।

ডাটাবেসগুলি অনেকগুলি ডেটা সঞ্চয় করার জন্য ডিজাইন করা হয়েছে এবং বেশিরভাগ স্কেল খুব ভাল। আর কেবলমাত্র স্পেসে সঞ্চয় করার জন্য কম সাধারণ ফর্ম ব্যবহার করার সত্যিকারের প্রয়োজন নেই।


হাই, আমার একটি প্রশ্ন আছে জরিপটি উত্তর টেবিলের পাশাপাশি উপস্থিত থাকতে হবে না বা জরিপের সংস্করণ সময়ের সাথে মিল রেখে কোনও টাইম স্ট্যাম্প অন্তর্ভুক্ত করা উচিত নয়? আপনি যদি আপনার আসল সমীক্ষায় কোনও প্রশ্ন sertedোকান, প্রশ্নপত্রে পরিবর্তন হবে এবং উত্তরগুলি অজ্ঞাতসারে পরিণত হবে। বা যদি এটি অপ্রয়োজনীয় হয়, আপনি কীভাবে ব্যাখ্যা করতে পারেন?
শুভম

3

সাধারণ নিয়ম হিসাবে, কোনও ব্যবহারকারী পরিবর্তন করতে পারে এমন কোনও কিছুর উপর ভিত্তি করে স্কিমা সংশোধন করা (যেমন সমীক্ষায় কোনও প্রশ্ন যুক্ত করা) মোটামুটি গন্ধযুক্ত বিবেচনা করা উচিত। এমন কিছু ক্ষেত্রে রয়েছে যেখানে এটি উপযুক্ত হতে পারে, বিশেষত বিপুল পরিমাণে ডেটা নিয়ে কাজ করার সময়, তবে আপনি ডুব দেওয়ার আগে আপনি কী নিয়ে যাচ্ছেন তা জেনে রাখুন each , এবং প্রশ্ন-অজ্ঞাত পদ্ধতিতে বিশ্লেষণ করা খুব কঠিন।

আমি মনে করি আপনার দ্বিতীয় পদ্ধতিটি সর্বোত্তম, তবে আপনি যদি নিশ্চিত হন যে আপনার প্রচুর পরিমাণে উদ্বেগ রয়েছে, অতীতে আমার জন্য কাজ করা একটি জিনিস একটি সংকর পদ্ধতির:

  1. আপনি যেমন 2 হিসাবে বর্ণনা করেছেন তেমন প্রতি-প্রতিক্রিয়া প্রতিক্রিয়াগুলি সঞ্চয় করতে বিশদ প্রতিক্রিয়া সারণীগুলি তৈরি করুন This আপনি সম্ভবত এই ডেটাটির জন্য সংরক্ষণাগার বা বিস্তারের কোনও ফর্ম প্রয়োগ করতে চান।
  2. প্রয়োজনে 1 থেকে প্রতিক্রিয়া সারণী তৈরি করুন। ব্যবহারকারীরা যখনই ফলাফলের জন্য একটি সাধারণ টেবিল দেখতে চান এটি ব্যবহার করা যেতে পারে।
  3. যে কোনও বিশ্লেষণের জন্য রিপোর্টিংয়ের উদ্দেশ্যে করা দরকার, 1 থেকে ডেটার উপর ভিত্তি করে অতিরিক্ত সারসংক্ষেপ ডেটা তৈরি করতে কাজের সময়সূচী করুন।

এটি বাস্তবায়নের জন্য আরও অনেক বেশি কাজ, সুতরাং আপনি যদি নিশ্চিত না জানেন যে এই টেবিলটি ব্যাপক আকারে উদ্বেগের মধ্যে চলেছে তবে আমি সত্যিই এটির পরামর্শ দেব না।


1

দ্বিতীয় পদ্ধতির সেরা।

আপনি যদি এটিকে আরও সাধারণ করতে চান তবে আপনি প্রশ্নের ধরণের জন্য একটি সারণী তৈরি করতে পারেন

সাধারণ জিনিসগুলি হ'ল:

  • ডাটাবেস স্থাপন করুন এবং ডিফল্ট হিসাবে সিটিতে নয়, নিজের ডিস্কে লগ করুন
  • প্রয়োজনীয় হিসাবে ডেটাবেস তৈরি করুন যাতে ডাটাবেস বাড়ার সময় আপনার বিরতি না থাকে

আমাদের দশ লক্ষ লক্ষ সারি সহ এসকিউএল সার্ভার সারণীতে লগ টেবিল রয়েছে।


1

2 নং ঠিক আছে।

মাত্র 4 টি কলামযুক্ত একটি টেবিলের জন্য এটি কোনও সমস্যা হওয়া উচিত নয়, এমনকি ভাল কয়েক মিলিয়ন সারিও। অবশ্যই এটি আপনি কোন ডাটাবেসটি ব্যবহার করছেন তার উপর নির্ভর করতে পারে। এটি যদি এসকিউএল সার্ভারের মতো কিছু হয় তবে কোনও সমস্যা হবে না।

আপনি সম্ভবত tblAnswer টেবিলের মধ্যে প্রশ্নআইডি ফিল্ডে একটি সূচক তৈরি করতে চান।

অবশ্যই, আপনি কোন ডেটাবেস এবং সেই সাথে আনুমানিক ভলিউম ব্যবহার করছেন তা নির্দিষ্ট করতে হবে।


0

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


1
আমি উত্তর টেবিলের মধ্যে মন্তব্যগুলি রাখতে না পারার কারণ আছে কি?
মাইকেল

0

নম্বর 2 সঠিক। আপনি কোনও পারফরম্যান্স সমস্যা সনাক্ত না করা অবধি সঠিক নকশা ব্যবহার করুন। বেশিরভাগ আরডিবিএমএসের সরু তবে খুব দীর্ঘ টেবিলের সমস্যা হবে না।


0

একটি বড় উত্তর টেবিল থাকা, এবং নিজেই, কোনও সমস্যা নয়। সূচি এবং সীমাবদ্ধতা যতক্ষণ না ভাল সংজ্ঞায়িত হয় ততক্ষণ আপনার ভাল হতে হবে fine আপনার দ্বিতীয় স্কিমা আমার কাছে ভাল লাগছে।


0

যথাযথ সূচকে দেওয়া আপনার দ্বিতীয় সমাধানটি স্বাভাবিক হয় এবং একটি traditionalতিহ্যগত সম্পর্কযুক্ত ডাটাবেস সিস্টেমের জন্য ভাল।

আমি জানি না কত বিশাল বিশাল তবে এটি কয়েক মিলিয়ন উত্তর ছাড়াই সমস্যা হওয়া উচিত।


0

আপনি JSON স্ট্রিং হিসাবে পুরো ফর্মটি সঞ্চয় করতে বেছে নিতে পারেন।

আপনার প্রয়োজনীয়তা সম্পর্কে নিশ্চিত নয়, তবে এই পদ্ধতিটি কিছু পরিস্থিতিতে কাজ করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.