DBMS-এ নির্ভরতা হলো দুটি বা ততোধিক অ্যাট্রিবিউটের মধ্যে সম্পর্ক। DBMS-এ এর নিম্নলিখিত প্রকারগুলো রয়েছে:
- ফাংশনাল নির্ভরতা (Functional Dependency)
- পূর্ণ ফাংশনাল নির্ভরতা (Fully-Functional Dependency)
- ট্রানজিটিভ নির্ভরতা (Transitive Dependency)
- মাল্টিভ্যালুড নির্ভরতা (Multivalued Dependency)
- আংশিক নির্ভরতা (Partial Dependency)
ফাংশনাল নির্ভরতা দিয়ে শুরু করা যাক:
ফাংশনাল নির্ভরতা
যদি একটি টেবিলে সংরক্ষিত তথ্য একই টেবিলের অন্য তথ্যকে অনন্যভাবে নির্ধারণ করতে পারে, তবে এটি ফাংশনাল নির্ভরতা বলা হয়। একই রিলেশনের দুটি অ্যাট্রিবিউটের মধ্যে এই আসল আপনাকে একটি সংযোগ হিসেবে বিবেচনা করতে পারেন।
যদি P, Q কে ফাংশনালি নির্ধারণ করে, তবে
| P -> Q |
একটি উদাহরণ দেখি:
<Employee>
| EmpID | EmpName | EmpAge |
| E01 | Amit | 28 |
| E02 | Rohit | 31 |
উপরোক্ত টেবিলে, EmpName EmpID-এর ওপর ফাংশনালি নির্ভরশীল কারণ EmpID-এর দেওয়া মানের জন্য EmpName শুধু একটি মান গ্রহণ করতে পারে:
| EmpID -> EmpName |
এটি নিচে দেখানো হয়েছে:

পূর্ণ-ফাংশনাল নির্ভরতা
একটি অ্যাট্রিবিউট অন্য একটি অ্যাট্রিবিউটের ওপর পূর্ণ-ফাংশনালি নির্ভরশীল, যদি সেটি সেটির ওপর ফাংশনালি নির্ভরশীল হয় কিন্তু তার যেকোনো উপযুক্ত সাবসেটের ওপর নয়।
উদাহরণস্বরূপ, একটি অ্যাট্রিবিউট Q অন্য একটি অ্যাট্রিবিউট P-র ওপর পূর্ণ-ফাংশনালি নির্ভরশীল, যদি সেটি P-র ওপর ফাংশনালি নির্ভরশীল হয় কিন্তু P-এর যেকোনো উপযুক্ত সাবসেটের ওপর নয়।
একটি উদাহরণ দেখি:
<ProjectCost>
| ProjectID | ProjectCost |
| 001 | 1000 |
| 002 | 5000 |
<EmployeeProject>
| EmpID | ProjectID | Days (প্রজেক্টে ব্যয় করা দিন) |
| E099 | 001 | 320 |
| E056 | 002 | 190 |
উপরোক্ত রিলেশনগুলো বিবেচনা করে:
| EmpID, ProjectID, ProjectCost -> Days |
তবে, এটি পূর্ণ-ফাংশনালি নির্ভরশীল নয়।
যেখানে সাবসেট {EmpID, ProjectID} সহজে কর্মচারীর প্রজেক্টে ব্যয় করা {Days} নির্ধারণ করতে পারে।
এটি আমাদের পূর্ণ-ফাংশনাল নির্ভরতা দেয়:
| {EmpID, ProjectID} -> (Days) |
ট্রানজিটিভ নির্ভরতা
যখন একটি পরোক্ষ সম্পর্ক ফাংশনাল নির্ভরতা তৈরি করে, তখন এটিকে ট্রানজিটিভ নির্ভরতা বলা হয়।
যদি P -> Q এবং Q -> R সত্য হয়, তবে P-> R একটি ট্রানজিটিভ নির্ভরতা।
মাল্টিভ্যালুড নির্ভরতা
যখন একটি টেবিলে এক বা একাধিক সারির অস্তিত্ব একই টেবিলে এক বা একাধিক অন্য সারির বোঝায়, তখন মাল্টিভ্যালুড নির্ভরতা ঘটে।
যদি একটি টেবিলে P, Q এবং R অ্যাট্রিবিউট থাকে, তবে Q এবং R হলো P-এর মাল্টিভ্যালুড সত্য।
এটি ডাবল তীর দিয়েক প্রতীকবদ্ধ করা হয়:
| ->-> |
আমাদের উদাহরণের জন্য:
| P->->Q Q->->R |
উপরোক্ত কেসে, মাল্টিভ্যালুড নির্ভরতা তখনই আছে যখন Q এবং R স্বাধীন অ্যাট্রিবিউট।
আংশিক নির্ভরতা
আংশিক নির্ভরতা ঘটে যখন একটি নন-প্রাইম অ্যাট্রিবিউট একটি ক্যান্ডিডেট কির অংশের ওপর ফাংশনালি নির্ভরশীল হয়।
2nd Normal Form (2NF) আংশিক নির্ভরতা দূর করে। একটি উদাহরণ দেখি:
<StudentProject>
| StudentID | ProjectNo | StudentName | ProjectName |
| S01 | 199 | Katie | Geo Location |
| S02 | 120 | Ollie | Cluster Exploration |
উপরোক্ত টেবিলে আংশিক নির্ভরতা আছে; দেখি কিভাবে:
প্রাইম কি অ্যাট্রিবিউটগুলো হলো StudentID এবং ProjectNo।
উল্লেখিত সূত্র অনুযায়ী, নন-প্রাইম অ্যাট্রিবিউটগুলো অর্থাৎ StudentName এবং ProjectName একটি ক্যান্ডিডেট কির অংশের ওপর ফাংশনালি নির্ভরশীল হতে হবে আংশিক নির্ভরতা হতে।
StudentName StudentID- দ্বারা নির্ধারিত হতে পারে, যা রিলেশনটিকে আংশিক নির্ভরশীল করে।
ProjectName ProjectID- দ্বারা নির্ধারিত হতে পারে, যা রিলেশনটিকে আংশিক নির্ভরশীল করে।