আমি বেশিরভাগই ডিমের জবাবের সাথে একমত হই যে আপনি প্রতি ব্যবসায় প্রতি বস্তুগুলিতে আপনার মডেল তৈরি করতে চান - ব্যবসায় যে সমস্যাগুলি সমাধান করতে চাইছে তা আপনি মডেল ক্লাসগুলি কীভাবে তৈরি করবেন তা চালানো উচিত। অনুশীলনে, আমি দেখতে পেয়েছি যে প্রতি টেবিলের জন্য একটি মডেল তৈরি করা শুরু করার জন্য ভাল জায়গা। একটি সঠিকভাবে ডিজাইন করা স্কিমা সম্ভবত আপনার ব্যবসায়ের প্রক্রিয়াগুলি নকল করতে পারে যা আপনার অ্যাপ্লিকেশন কোডে মডেল করতে হবে - এটি ডোমেন মডেলও বলে।
কোনও অবজেক্ট / রিলেশনাল ম্যাপিং স্তরটি ব্যবহার করা দরকারী তাই আপনার ডোমেন মডেলটিতে ডেটা অ্যাক্সেস স্তরে পুনরাবৃত্ত কলগুলির প্রয়োজন ছাড়াই ডাটাবেস স্কিমার মতো একই সম্পর্ক রয়েছে। উদাহরণ হিসাবে পিএইচপি-র জন্য স্বতন্ত্র চেক আউট করুন । স্কিমা এবং ডোমেন মডেল উভয়ই ব্যবসায়ের প্রক্রিয়াগুলি সমর্থন করার জন্য ডিজাইন করা উচিত।
এটি মার্জান ভেনিমার উত্তরের প্রথম অংশকে নিয়ে যায়:
আমি বলছি যে টেবিল প্রতি মডেল কেবল শ্রেণিক কাঠামোয় আপনার ডাটাবেস পুনরায় তৈরি করছে। এটি অ্যানিমিক মডেল হিসাবে পরিচিত এবং একটি অ্যান্টি-প্যাটার্ন হিসাবে বিবেচিত।
একটি রক্তহীন ডোমেন মডেল বিরোধী প্যাটার্ন। ভেনেমার পরামর্শ অনুসারে একটি "প্রতি টেবিলে মডেল" কে "আপনার ডাটাবেস পুনরায় তৈরি করা" হিসাবে দেখা যেতে পারে, তবে এটি একা এনেমিক ডোমেন মডেল বলা একেবারেই ভুল।
মার্টিন ফাউলারের কাছ থেকে:
অ্যানেমিক ডোমেন মডেলটির প্রাথমিক লক্ষণটি হ'ল প্রথম ব্লাশটি এটিকে আসল জিনিসটির মতো দেখায়। ডোমেন স্পেসে নামগুলির নাম অনুসারে অনেকগুলি অবজেক্ট রয়েছে এবং এই বস্তুগুলি সত্যিকারের ডোমেন মডেলগুলির সমৃদ্ধ সম্পর্ক এবং কাঠামোর সাথে সংযুক্ত। আপনি যখন আচরণটি দেখেন তখন ধরা পড়ে, এবং আপনি বুঝতে পেরেছেন যে এই জিনিসগুলির উপর খুব কমই কোনও আচরণ রয়েছে, যা সেগুলি গিটার এবং সেটটারগুলির ব্যাগের চেয়ে কিছুটা বেশি করে তোলে।
(জোর, আমার)
অ্যানিমিক ডোমেন মডেলের মূল কারণটি হ'ল ডোমেন মডেল ক্লাসগুলিতে আচরণের বা পদ্ধতির অভাব।
এটি কারণ শ্রেণিগুলির ডেটা এবং আচরণ উভয়ই থাকে। যদি আপনি আপনার মডেলগুলি একটি একক টেবিলের মধ্যে সীমাবদ্ধ করেন তবে আপনি একাধিক টেবিল থেকে ডেটা এবং আচরণের মোকাবেলা করার জন্য কোড (আচরণ) কোথায় রাখবেন?
আবার, আপনি নিজের ডোমেন মডেলগুলিতে আচরণ রাখতে পারেন এবং করা উচিত, এমনকি যদি তারা কেবল একটি টেবিলে মানচিত্র করে। একাধিক টেবিলগুলিকে প্রভাবিত করে এমন আচরণটি একাধিক টেবিলগুলিতে মানচিত্রের ক্ষেত্রে একাধিক বস্তুকে প্রভাবিত করে। ডোমেন ড্রাইভড ডিজাইন হ'ল ভেনিয়ামার উল্লিখিত একই সমস্যার সঠিকভাবে দৃষ্টিভঙ্গির একটি দৃষ্টিভঙ্গি: "আপনি একাধিক টেবিল থেকে ডেটা এবং আচরণের মোকাবেলায় যে কোডটি (আচরণ) করছেন তা আপনি কোথায় রাখবেন?"
এবং উত্তরটি একটি সমষ্টিগত রুট । মার্টিন ফওলার বলেছেন:
সমষ্টি হ'ল ডোমেন-চালিত ডিজাইনের একটি নিদর্শন। একটি ডিডিডি সমষ্টি হ'ল ডোমেন অবজেক্টগুলির একটি ক্লাস্টার যা একক ইউনিট হিসাবে বিবেচিত হতে পারে। উদাহরণ একটি অর্ডার এবং এর লাইন-আইটেম হতে পারে, এগুলি পৃথক বস্তু হতে পারে তবে অর্ডারটিকে (তার লাইন আইটেমগুলির সাথে একত্রে) একক সমষ্টি হিসাবে বিবেচনা করা কার্যকর।
(জোর, আমার)
একটি "ডোমেন অবজেক্টের গুচ্ছ "টিকে" ডোমেন মডেলগুলি একাধিক টেবিলের মানচিত্রে "হিসাবেও দেখা যেতে পারে। একাধিক টেবিলকে প্রভাবিত করে এমন আচরণকে সমষ্টিগত রুটে সংজ্ঞায়িত করা উচিত - এমন এক শ্রেণি যা "জিনিস" কে একাধিক টেবিল বা বস্তুগুলিকে প্রভাবিত করে:
আবার, মার্টিন ফাউলারের কাছ থেকে:
একটি সমষ্টিতে প্রায়শই সরল ক্ষেত্রগুলির সাথে একসাথে বহুবিধ সংগ্রহ থাকে।
ওপির মূল প্রশ্নের উত্তর দিতে:
... প্রতি ডাটাবেস সারণীতে একটি মডেল তৈরি করা ভাল অনুশীলন হিসাবে বিবেচিত হবে? এই পদ্ধতিতে দু'বার লেখা হয় না।
আমি বলব এটি শুরু করার জন্য এটি ভাল জায়গা, তবে সচেতন থাকুন যে আপনার স্কিমা এবং অবজেক্ট মডেলটি 100% এর সাথে মেলে না। অবজেক্ট মডেলটি ব্যবসায়ের বিধি প্রয়োগ এবং প্রয়োগের সাথে আরও বেশি যত্নশীল হওয়া উচিত। মডেমার এবং স্কেলযোগ্য পদ্ধতিতে স্কিমাটি ব্যবসায়ের ডেটা সংরক্ষণের দিকে আরও বেশি মনোযোগী হওয়া উচিত।
নিয়ামক প্রতি একটি মডেল ভাল অনুশীলন হবে না, যদিও ভিউ মডেল নামে পরিচিত মডেলটির বিভিন্নতা রয়েছে যা নিয়ামক স্তরের সাথে খাপ খায় না। একটি ভিউ মডেল কোনও নির্দিষ্ট ধরণের ডিসপ্লেতে ফিট করার জন্য ডোমেন মডেলটির পুনর্গঠন, এটি কোনও জিওআই অ্যাপ্লিকেশনে কোনও ওয়েব পৃষ্ঠা বা ফর্ম হোক।