টুর্নামেন্টের ডাটাবেস ডিজাইনের সেরা উপায়


13

আমি আসন্ন ইউরো 2012 ফুটবল টুর্নামেন্টের সমস্ত ম্যাচে বাজি রাখার জন্য একটি ওয়েবপৃষ্ঠা তৈরি করছি। নকআউট পর্বের জন্য কোন পদ্ধতি গ্রহণ করা উচিত তা সিদ্ধান্ত নিতে কিছু সহায়তা দরকার।

আমি নীচে একটি মকআপ তৈরি করেছি, যা সমস্ত "পরিচিত" গ্রুপ পর্বের ম্যাচের ফলাফলগুলি সংরক্ষণ করার সময় আমি যথেষ্ট সন্তুষ্ট। এই ডিজাইনটি কোনও ব্যবহারকারী একটি সঠিক বাজি রেখেছেন কিনা তা পরীক্ষা করে নেওয়া খুব সহজ করে তোলে।

তবে কোয়ার্টার এবং সেমি ফাইনাল সঞ্চয় করার সর্বোত্তম উপায় কী? সেই ম্যাচগুলি গ্রুপ পর্বের ফলাফলের উপর নির্ভর করে।

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

বেসিক ডাটাবেস ডিজাইন


আপনি কি মাইএসকিউএল ব্যবহারে স্থির হয়ে আছেন বা বিকল্পের জন্য উন্মুক্ত?
জ্যাক বলছেন topanswers.xyz

খুব মীমাংসিত .. মাইএসকিউএল এর সাথে আমার কি কোনও সুবিধা / অসুবিধাগুলি সম্পর্কে সচেতন হওয়া উচিত?
hampusohlsson

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

ধন্যবাদ, তবে আমি মনে করি না যেহেতু আমি এর সাথে খুব বেশি পরিচিত না তাই আমি যেভাবেই বাধাগুলি ব্যবহার করব। আমার অ্যাপ্লিকেশনটির সমস্ত ডেটা এটি ডিবিতে প্রেরণের আগে বৈধতা দেবে, এটিকে সহজ রেখে
hampusohlsson

ভালো ভালো. অবশ্যই এটি ডিবিতে সহজ তবে এটি সম্পূর্ণ অন্যান্য কথোপকথন ;)
জ্যাক বলেছেন টপান্সওয়ার্স.অক্সিজ

উত্তর:


3

আমি নিজেই মডেলটিতে পূর্বনির্ধারিত সমস্ত তথ্য ঠিক করার চেষ্টা করে শুরু করব off

  • তারিখ / স্থানগুলোতে
  • কাঠামো (যেমন গ্রুপ / নকআউট পর্যায়)
  • বিধি (যেমন পয়েন্ট স্কোরিং, টাই ব্রেক ব্রেক)

এই তথ্যগুলির মধ্যে কিছুতে টেবিলগুলিতে ডেটা থাকবে, কিছু ভিউগুলিতে কোড যুক্ত যুক্তিযুক্ত হবে।

এরকম কিছু সম্ভবত:

  • দল (টিম_আইডি, গ্রুপ_কোড এনাম ('এ', 'বি', 'সি', 'ডি'), নাম)
  • ম্যাচ (ম্যাচ_আইডি, কিক অফ_এটি)
  • গ্রুপ_ম্যাচ (ম্যাচ_আইডি, দল_হাইড_হোম, টিম_আইডি_ওয়ে, গ্রুপ_কোড)
  • নকআউট_ম্যাচ (ম্যাচ_আইডি, নকআউট_কোড এনাম ('কিউ 1', 'কিউ 2', 'কিউ 3', 'কিউ 4', 'এস 1', 'এস 2', 'এফ')
  • ফলাফল (ম্যাচ_আইডি, স্কোর_হোম, স্কোর_ওয়ে)

দলগুলি কিউ 1 এ খেলে এমন তথ্য কখনও সরাসরি সংরক্ষণের প্রয়োজন হয় না কারণ এটি গ্রুপ পর্বের ফলাফলগুলি থেকে গণনা করা যেতে পারে। শুধুমাত্র হিসেবে টুর্নামেন্ট অগ্রগতি মধ্যে টিপে হয় পরিবর্তন করতে resultটেবিল।


3

আমি মনে করি টিম আইডি ব্যবহার করা সঠিক উপায়। ফাইনালের সমস্ত রাউন্ডের বিমূর্ততার আরেকটি স্তর কেবলমাত্র ডেটার সাথে ম্যাচ টেবিলকে পূর্ব-লোড করা ব্যতীত খুব বেশি সুবিধার জন্য অপ্রয়োজনীয় জটিলতা যুক্ত করে।

এটি সমর্থন করার জন্য ডেটা স্ট্রাকচারটি বেশ শক্ত দেখাচ্ছে। প্রাথমিক ম্যাচের ফলাফল আসার পরে কোয়ার্টার এবং সেমি ফাইনাল ম্যাচ টেবিলে যুক্ত করা দরকার the

   A
match 1 -----+
   B         A
          match 5 -----+
   C         C         |
match 2 -----+         |
   D                   A
                    match 7
   E                   F
match 3 -----+         |
   F         F         |
          match 6 -----+
   G         G
match 4 -----+
   H

... তবে এটি সম্ভবত কোনও ক্যোয়ারির মাধ্যমে করা যেতে পারে। আবার, কোয়েরির জটিলতা টিমের সংখ্যার উপর নির্ভর করে প্রচেষ্টার উপযুক্ত নাও হতে পারে


1

"ম্যাচগুলি" টেবিলের সমস্ত ম্যাচ সংরক্ষণ করা ভাল ধারণা idea তবে আমি এটিতে একটি অ্যাডিশনাল ফিল্ড "র‌্যাঙ্কিং" যুক্ত করব, কারণ পরে আপনার মেমরিতে টেবিলকে দক্ষতার সাথে জিজ্ঞাসা করার জন্য বাইনারি ট্রি তৈরি করা দরকার। এটি একটি ক্লাসিক র‌্যাঙ্কিং অ্যালগরিদম সমস্যা এবং আরও তথ্যের জন্য আপনি ধূসর কোড টুর্নামেন্টের জন্য গুগল করতে পারেন বা আমার স্ট্যাকওভারফ্লো ইতিহাসটি দেখতে পারেন। মূলত একটি টুর্নামেন্ট একটি বাইনারি গাছ। এখানে ধূসর কোডগুলি সম্পর্কে একটি ভাল নিবন্ধ: http://villemin.gerard.free.fr/Wwwgvmm/Numerati/CodeGray.htm । দুর্ভাগ্যক্রমে এটি ফরাসি র‌্যাঙ্কিং থেকে বাইনারি গাছ কীভাবে উত্পন্ন করা যায় তা এখানে: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/229068

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