চলুন জানি Functional Dependency কি এবং কেন এটা এতো গুরত্বপূর্ণ। DBMS পর্ব ৩.১
পুরান ঢাকায় আমরা যারা থাকি তাদের কাছে কাচ্চি ভালো লাগবে এটাই স্বাভাবিক। অনেক খিদা লেগেছে। তো এর জন্য কাচ্চি প্রিফার করবেন নিশ্চই। এখন কাচ্চি আনতে হলে দরকার টাকা। এই মুহুর্তে নেই হাতে ক্যাশ, তো নিমিষেই ভাবলেন করবেন ক্যাশআউট।আবার ক্যাশআউট করতে যাওয়া লাগল স্পেসিফিক দোকানে। তো এই কাচ্চি খেতে গিয়ে কত কি না করা লাগল তাইনা?
একটু ভেবে দেখে, এই সামান্য কাচ্চি খেতেই কত কিছুর উপর নির্ভর করতে হলো তাইনা?
বাস্তব জীবনেও দেখা যায় কোন না কোন কিছুর সাথে কিছু না কিছুর নির্ভরশীলতা আছে। একটা হলেই কেবল অন্যটার শুরু সম্ভব!
এই যেমন শিক্ষক প্রশ্ন করলে পরীক্ষা হবে, আবার খাতা দেখা হলেই কেবল নম্বর পাওয়া যাবে, আবার নম্বর সব পেলেই কেবল মূল রেজাল্ট পাবলিশ করা যাবে।
জীবন মানেই ডাটা আর ডাটা মানেই ডাটাবেজ ! ডাটাবেজে এতো এতো ডাটা থাকে, একটার সাথে আরেকটার সম্পর্ক যেমন থাকে তেমন আবার নির্ভরশীলতাও থাকে !
এটাই হচ্ছে সহজ ভাষায় “Functional Dependency” !
উপরের এই সিম্পল টেবিলে এমপ্লয়িদের বয়স তো বেতন দেয়া আছে । এখন ধরুন যখন আমি আইডি ১০০ এর রেজাল্ট দেখতে চাইব তখন শুধু ১০০ এর আইডি যেই টাপলে আছে সেটাই দেখাবে কেননা আইডি এখানে প্রাইমারি কি।
অন্যান্য এট্রিবিউটগুলো তাহলে এই প্রাইমারি কি অর্থাৎ আইডির উপর নির্ভর করছে! তাহলে ডিপেন্ডেন্সিটা নিচের মতো করে লিখাটাও একটা আর্ট থুক্কু কনভেনশন !
ID — — — –> Name, Age, Salary
ID থেকে একটা এরো চলে গেল বাকী এট্রিবিউটদের কাছে ! বাহ কি কিউট না? আমারা বুঝে ফেলেছি ডিপেন্ডেন্সি কি জিনিস !
আরেকটা এক্সাম্পল দেখিঃ
উপরের এই এক্সাম্পলে দেখা গেল, একে অপরের উপর নির্ভরশীলতারও দেখি আবার নাম আছে ! যাক গে, কাজের কথায় আসি।
১) শুধু class_id দিয়ে বের করা যাবে শিক্ষার্থীর নামে, বয়স
২) শুধু project_id দিয়ে বের করা যাবে প্রজেক্টের নাম
৩) class_id এবং project_id উভয় একসাথে মিলে বের করা যাবে কত নম্বর পাওয়া গেল !
১ এবং ২ এর নির্ভরশীলতার নাম “ Partial Dependency” কেননা এরা এককভাবে সম্পূর্ণ না হলেও কয়েকটা এট্রিবিউট আলাদা বের করতে পারে।
একটা টেবিলে প্রাইমারী কি দিয়ে সব টাপল বের করা যায়। এখন যদি দেখা যায় প্রাইমারি কি ছাড়াও অন্য কোন কি বা এট্রিবিউট দিয়ে পার্শিয়ালি কিছু এট্রিবিউট বের করা যায় তবে সেটা পার্শিয়াল ডিপেন্ডেন্সী বলে।
আরেকধরণের নামকরা ডিপেন্ডেসী আছে সেটা হলো “Transitive Dependency”
নিচের এক্সাম্পল আবার দেখিঃ
এই কাল্পনিক ডাটাবেজের ক্ষেত্রে দেখা গেল class_id এবং registration_no এই দুইজন মিলে বের করল dept_id কে এবং এরপর এই dept_id এর সাহয্যে বের করা যাচ্ছে dept_name, dept_building_no !
এ যেন দূর সম্পর্কের আত্ত্বীয়তার সম্পর্ক !
এই ফাংশনাল ডিপেন্ডেন্সির কিছু নিয়ম আছে সেটা আগামী পর্বে জানাব। তবে কেনই বা দরকার হয় এটার?
উত্তরঃ আপনি ব্যক্তি জীবনে যদি অন্যের উপর বেশি নির্ভরশীল হয়ে পড়েন তবে কি সেটা ঠিক হবে?
এইযে কিউট ডাটাবেজগুলা ওদেরও ইচ্ছা হয় স্বনীর্ভর হতে ! 💩Jokes apart !
ডাটাবেজের নরমালাইজেশন করতে হলে আগে জানতে হয় কার সাথে কার কোন কোন দিক দিয়ে নির্ভরশীলতার সম্পর্ক রয়েছে।
তো আজ এই পর্যন্তই ! শেয়ার দিতে অনেক দোয়া পাবেন । আল্লাহ্ হাফেজ।