কম্পিউটার টিউটোরিয়াল

DBMS-এ নির্ভরতার প্রকারভেদ


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


এটি নিচে দেখানো হয়েছে:

DBMS-এ নির্ভরতার প্রকারভেদ

পূর্ণ-ফাংশনাল নির্ভরতা

একটি অ্যাট্রিবিউট অন্য একটি অ্যাট্রিবিউটের ওপর পূর্ণ-ফাংশনালি নির্ভরশীল, যদি সেটি সেটির ওপর ফাংশনালি নির্ভরশীল হয় কিন্তু তার যেকোনো উপযুক্ত সাবসেটের ওপর নয়।

উদাহরণস্বরূপ, একটি অ্যাট্রিবিউট 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- দ্বারা নির্ধারিত হতে পারে, যা রিলেশনটিকে আংশিক নির্ভরশীল করে।


  1. DBMS-এ এক-से-বহু বা বহু-से-এক সম্পর্ক

  2. DBMS-এ ডেটা ডিকশনারি

  3. DBMS-এ ফাংশনাল নির্ভরতা

  4. DBMS-এ ডেডলক (Deadlocks)