শেষ পর্যন্ত, এটি ব্যবহার এবং আর্কিটেকচারে নেমে আসে।
স্থাপত্য
সিস্টেমটি "কোনও খেলাধুলা" পরিচালনা করে? আপনি যে ধারণাটি আপনার আর্কিটেকচার নভোচারী টুপিটি রেখেছেন এবং এমন একটি জেনেরিক সিস্টেম তৈরি করেছেন যা ভবিষ্যতের যে কোনও ধরণের খেলাধুলা পরিচালনা করতে পারে যা আজ অবধি নেই?
যদি তা হয় তবে স্পষ্টতই গতিশীল-নামযুক্ত টেবিলগুলি থাকা একটি বিশাল ব্যথা, সুতরাং প্রয়োজনে এন স্পোর্টসকে সমর্থন করে এমন একটি স্কিমা থাকা বোধগম্য হবে।
এটি বলেছিল, এই পদ্ধতির বিরুদ্ধে আমার খুব দৃ strong় পক্ষপাত রয়েছে: এটি প্রায় সবসময়ই বেশি কাজ এবং দরিদ্র ফলাফলের দিকে পরিচালিত করে। প্রতিটি খেলাধুলার জন্য পৃথক ইউআই, স্কিমা ইত্যাদি তৈরি করার ফলে শেষ পর্যন্ত আরও ভাল ব্যবহারকারীর অভিজ্ঞতা এবং কোড বজায় রাখা সহজতর হবে, যদিও এর অর্থ কিছু ডুবিলিকেশন (যেমন এটি এড়াতে / ছোট করতে হবে এটি একটি পৃথক প্রশ্ন)।
আপনি একাধিক খেলা খেলতে এমন খেলোয়াড়দের কীভাবে পরিচালনা করবেন? তারা কি দুটি এন্ট্রি পেয়েছে (যেমন, আপনি আলাদা লোক হিসাবে বিবেচনা করেন) বা আপনি তাদের সাথে নির্দিষ্ট কিছু করার চেষ্টা করছেন?
ব্যবহার
সুতরাং আসুন ধরে নেওয়া যাক আপনি গতিশীলভাবে খেলাধুলা করেন না (যেমন, কেউ যদি নতুন কোনও খেলা যোগ করতে চান তবে এটির জন্য উন্নয়নের প্রচেষ্টা প্রয়োজন)।
এমন কি এমন কোনও সময় রয়েছে যেখানে আপনি এক সাথে একাধিক খেলাধুলার খেলোয়াড় (বা আপনি উল্লিখিত অন্য কোনও বিষয়) প্রদর্শন করছেন?
আমি এটি কোনও অনুসন্ধান ফাংশনটির জন্য দেখতে পেলাম, যেখানে আপনি খেলোয়াড় বা দলের নাম (খেলাধূলা নির্বিশেষে) অনুসন্ধান করতে পারেন তবে এর বাইরে আমি অনেকগুলি ব্যবহারের ক্ষেত্রে কল্পনা করতে পারি না।
আপনার যদি কখনও এটি করার প্রয়োজন হয় না, তবে আপনার পদ্ধতির বিষয়টি পুরোপুরি ঠিক। আপনি এখানে পড়া বন্ধ করতে পারেন।
বিকল্প স্কিমাস
দেখেছে
আমি KISS এর ভক্ত। 15+ বছরের সফ্টওয়্যার বিকাশে, আমি "দর্শনের সবচেয়ে সহজ জিনিসটি তৈরি করে" দর্শনে ফিরে যেতে থাকি।
সুতরাং ক্রস-স্পোর্ট অনুসন্ধানের ক্রিয়াকলাপটি সত্যই একমাত্র ব্যবহারের ক্ষেত্র হিসাবে ধরে নিয়ে আমার প্রাথমিক প্রতিক্রিয়াটি হল ভিউ তৈরি করা:
SELECT PlayerName, 'NFL' as [Sport], TeamName FROM NFL_Players JOIN NFL_Teams ...
UNION
SELECT PlayerName, 'NHL' as [Sport], TeamName FROM NHL_Players JOIN NHL_Teams ...
UNION ....
অবশ্যই, আপনি যদি নতুন খেলা যোগ করেন তবে আপনাকে ভিউতে যুক্ত করতে হবে। অন্যান্য সাধারণ তথ্য অন্তর্ভুক্ত করার জন্য এটি দরকারী হতে পারে তবে এটি কী দেখানোর দরকার তার উপর নির্ভরশীল।
তাই সার্চ কোড (ব্যতীত হয়তো কিভাবে লিংক করতে বুদ্ধিমান বেশি বা কোন নির্দিষ্ট কোড আছে করার দরকার নেই আমি দেখুন সংজ্ঞা সমস্ত খেলাধুলা-নির্দিষ্ট কাপড় রাখার চেষ্টা করতাম /nhl/players/player-name
বনাম /nfl/...
বা তবে আপনার অ্যাপ্লিকেশান না)।
টেবিল উত্তরাধিকার
সারণির উত্তরাধিকার কাজ করতে পারে তবে এটি বেশ জটিল। আমার এটির সাথে এক টন অভিজ্ঞতা নেই এবং প্রকৃতপক্ষে, আমি মনে করি প্রতিবারই এটির মূল্যায়নের সাথে আমি জড়িত হয়েছি আমরা সহজ কিছু করে শেষ করেছি (যেমন আমি এখানে পরামর্শ দিচ্ছি)।
সুতরাং ব্যক্তিগতভাবে, কেন এটি কার্যকর হবে তা আমি এখনও খুঁজে পাইনি, তবে সম্ভবত কোনও দৃ conv়প্রত্যয়ী ব্যবহারের কেস রয়েছে (যা আমি জানি না) যা জটিলতাকে ন্যায্যতা দেয় (উদাহরণস্বরূপ, সারণীর উত্তরাধিকারটি অন্য কোনও সমাধানের চেয়ে ব্যবহারের ক্ষেত্রে সমাধান করে) ।
ক্রীড়া-নির্দিষ্ট বৈশিষ্ট্যের জন্য আলাদা সারণী
আপনি একটি একক players
টেবিল করতে পারেন যা সমস্ত স্পোর্টসের সমস্ত খেলোয়াড়ের জন্য সাধারণ বৈশিষ্ট্যযুক্ত রয়েছে এবং তারপরে nhl_players_details
প্লেয়ারআইডি এবং প্লেয়ারের অতিরিক্ত তথ্যের সাথে কলামগুলিতে থাকা সারণীর মতো অন্য সেট রয়েছে। যদি এখানে প্রচুর পরিমাণে সাধারণ গুণাবলী থাকে বা আপনার কাছে "সমস্ত ক্রীড়া থেকে সমস্ত খেলোয়াড়" ব্যবহার করে থাকে তবে এটি উপলব্ধি করতে পারে।
ক্রীড়া-নির্দিষ্ট বৈশিষ্ট্যের জন্য মূল মান জোড়
সম্পূর্ণরূপে বিকল্প পদ্ধতিতে: একটি আছে players
সারণী (আবার, নামের মত সাধারণ গুনাবলী সহ) এবং তারপর একটি player_data
আছে টেবিল PlayerId
, Sport
, Attribute
, Value
। প্রবেশ করানো বৈশিষ্ট্যের নামগুলি খেলাধুলার নির্দিষ্ট হবে। এটি আপনাকে স্কিমা পরিবর্তন না করে প্রয়োজনীয়ভাবে নতুন বৈশিষ্ট্য যুক্ত করতে দেয় (আপনার কোডটি অবশ্যই তাদের লোড / ডিসপ্লে করতে অবশ্যই জানতে হবে)। অপূর্ণতা হ'ল আপনি কিছুটা নিখুঁততা হারাবেন: মানটি সাধারণত স্ট্রিংয়ের ক্ষেত্র হয়, সুতরাং আপনার অ্যাপ্লিকেশন কোডটি দৃili়রোগী হতে হবে এবং স্ট্রিংটিকে value
একটি নির্দিষ্ট ডেটা টাইপের (যেমন পূর্ণসংখ্যার) রূপান্তরিত করার সম্ভাব্য ব্যর্থতাগুলি পরিচালনা করতে হবে ।
এই ধারণাটি অবশ্যই টিমস, গেমস ইত্যাদিতে প্রয়োগ করতে পারে