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

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


ফাংশনাল নির্ভরতা কী?

DBMS-এ ফাংশনাল নির্ভরতা, নাম অনুযায়ী, একটি টেবিলের অ্যাট্রিবিউটগুলোর মধ্যে পারস্পরিক নির্ভরশীলতার সম্পর্ক। E. F. Codd দ্বারা পরিচয় করানো, এটি ডেটা রিডানডেন্সি প্রতিরোধে সাহায্য করে এবং খারাপ ডিজাইন চিনতে সাহায্য করে।

ধারণাটি ভালোভাবে বোঝার জন্য, ধরা যাক P হলো A এবং B অ্যাট্রিবিউটসহ একটি রিলেশন। ফাংশনাল নির্ভরতা -> (তীর চিহ্ন) দ্বারা প্রকাশ করা হয়।

তবে নিম্নলিখিত অ্যাট্রিবিউটগুলোর মধ্যে ফাংশনাল নির্ভরতা তীর চিহ্ন দিয়েও প্রকাশ করা যাবে:

A -> B


উপরের কথা নিম্নলিখিত বোঝায়:

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

উদাহরণ

নিচের উদাহরণটি ফাংশনাল নির্ভরতা বোঝার জন্য সহজ করবে:

আমাদের একটি <Department> টেবিল আছে দুটি অ্যাট্রিবিউটসহ - DeptId এবং DeptName।

DeptId = Department ID
DeptName = Department Name


DeptId আমাদের প্রাইমারি কি। এখানে, DeptId অনন্যভাবে DeptName অ্যাট্রিবিউটকে চিহ্নিত করে। এর কারণ হলো যদি আপনি ডিপার্টমেন্টের নাম জানতে চান, তবে প্রথমে আপনার কাছে DeptId থাকতে হবে।

DeptId
DeptName
001
Finance
002
Marketing
003
HR


সুতরাং, উপরের DeptId এবং DeptName এর মধ্যে ফাংশনাল নির্ভরতা DeptId DeptName-এর ওপর ফাংশনালি নির্ভরশীল হিসেবে নির্ধারিত করা যাবে:

DeptId -> DeptName


ফাংশনাল নির্ভরতার প্রকারভেদ

ফাংশনাল নির্ভরতার তিনটি রূপ রয়েছে:

  • তुच্ছ ফাংশনাল নির্ভরতা (Trivial Functional Dependency)
  • অতুচ্ছ ফাংশনাল নির্ভরতা (Non-Trivial Functional Dependency)
  • সম্পূর্ণ অতুচ্ছ ফাংশনাল নির্ভরতা (Completely Non-Trivial Functional Dependency)

তুচ্ছ ফাংশনাল নির্ভরতা দিয়ে শুরু করা যাক:

তুচ্ছ ফাংশনাল নির্ভরতা (Trivial Functional Dependency)

এটি ঘটে যখন B, A-র একটি সাবসেট হয়:

A ->B


উদাহরণ

আমরা একই <Department> টেবিল দুটি অ্যাট্রিবিউট নিয়ে তুচ্ছ নির্ভরতা বোঝার জন্য বিবেচনা করছি।

নিচের ফাংশনাল নির্ভরতা তুচ্ছ কারণ DeptId হলো DeptId এবং DeptName-এর একটি সাবসেট।

{ DeptId,  DeptName } -> Dept Id


অতুচ্ছ ফাংশনাল নির্ভরতা (Non-Trivial Functional Dependency)

এটি ঘটে যখন B, A-র সাবসেট না হয়:

A ->B


উদাহরণ

DeptId ->  DeptName

উপরেরটি একটি অতুচ্ছ ফাংশনাল নির্ভরতা কারণ DeptName, DeptId-র একটি সাবসেট নয়।

সম্পূর্ণ অতুচ্ছ ফাংশনাল নির্ভরতা (Completely Non-Trivial Functional Dependency)

এটি ঘটে যখন A intersection B নাল হয়:

A ->B

আর্মস্ট্রং-এর অксиোম (Armstrong's Axioms) ফাংশনাল নির্ভরতার বৈশিষ্ট্য

আর্মস্ট্রং-এর অксиোম বৈশিষ্ট্য 1974 সালে William Armstrong দ্বারা ফাংশনাল নির্ভরতা সম্পর্কে যুক্তি করার জন্য বিকসিত করা হয়েছিল।

এই বৈশিষ্ট্যটি নিম্নলিখিত নিয়মগুলো প্রস্তাব করে যা সত্য হবে যদি নিচের শর্তগুলো পূরণ হয়:

  • ট্রানজিটিভিটি (Transitivity)
    যদি A->B এবং B->C, তবে A->C অর্থাৎ একটি ট্রানজিটিভ রিলেশন।
  • রিফ্লেক্সিভিটি (Reflexivity)
    A-> B, যদি B, A-র একটি সাবসেট হয়।
  • অগমেন্টেশন (Augmentation)
    শেষ নিয়মটি প্রস্তাব করে: AC->BC, যদি A->B

  1. DBMS-এ এক-से-এক সম্পর্ক

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

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

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