Relationship
রিলেশনশিপ
রিলেশনশিপ (Relationship)
১. ভূমিকা — পরিবারের সম্পর্কের মতো!
তোমার পরিবারে বিভিন্ন সম্পর্ক আছে। একজন বাবার অনেক সন্তান থাকতে পারে (One-to-Many)। একজন স্বামীর একজন স্ত্রী থাকে (One-to-One)। একটি বিশ্ববিদ্যালয়ে একজন ছাত্র অনেক কোর্সে ভর্তি হতে পারে এবং একটি কোর্সে অনেক ছাত্র থাকতে পারে (Many-to-Many)।
ডেটাবেজের টেবিলগুলোর মধ্যেও ঠিক এমনই সম্পর্ক থাকে — একে বলে Relationship (রিলেশনশিপ)!
মজার তথ্য: ই-কমার্স সাইট দারাজ (Daraz) এর ডেটাবেজে Customer ও Order এর মধ্যে One-to-Many সম্পর্ক আছে। একজন Customer অনেক Order দিতে পারে। আবার Order ও Product এর মধ্যে Many-to-Many সম্পর্ক — একটি Order এ অনেক পণ্য, একটি পণ্য অনেক Order এ!
২. সমস্যা — টেবিলগুলো কি সম্পূর্ণ আলাদা?
আলাদা টেবিল (সম্পর্ক ছাড়া):
Students: 101-রাহেলা, 102-করিম
Subjects: M001-গণিত, P001-পদার্থ
Results: ???
কোন ছাত্র কোন বিষয়ে পরীক্ষা দিয়েছে?
কোন শিক্ষক কোন বিভাগে পড়ান?
কোন পণ্য কোন অর্ডারে আছে?
এই প্রশ্নগুলোর উত্তর পেতে Relationship দরকার!
৩. চিত্রের মাধ্যমে বোঝো
তিন ধরনের Relationship:
One-to-One (এক-থেকে-এক):
Student ──────── NID Card
[101] ←→ [NID-1234]
একজন ছাত্রের একটিমাত্র NID Card
One-to-Many (এক-থেকে-অনেক):
Teacher ──────── Students
[T001] ←──┬── [S001]
├── [S002]
└── [S003]
একজন শিক্ষক অনেক ছাত্র পড়ান
Many-to-Many (অনেক-থেকে-অনেক):
Students ──────── Subjects
[S001] ──┬──── [M001-গণিত]
[S002] ──┤──── [P001-পদার্থ]
[S003] ──┤──┬─ [C001-রসায়ন]
└──┘
একজন ছাত্র অনেক বিষয়, একটি বিষয়ে অনেক ছাত্র
৪. বাস্তব জীবনের সাথে মিল
উপমা: ডেটাবেজ Relationship হলো ঠিক যেমন বাংলাদেশের পারিবারিক বন্ধন। এক মা-বাবার অনেক সন্তান (One-to-Many)। একজনের একটাই NID (One-to-One)। বিশ্ববিদ্যালয়ে ছাত্র ও কোর্সের সম্পর্ক (Many-to-Many) — একজন ছাত্র অনেক কোর্স নেয়, এক কোর্সে অনেক ছাত্র।
Module 1: Relationship কী? (What is a Relationship?)
📌 সংজ্ঞা
Relationship হলো দুটি বা তার বেশি টেবিলের মধ্যে যৌক্তিক সংযোগ যা Foreign Key এর মাধ্যমে প্রতিষ্ঠিত হয়। এটি বলে দেয় এক টেবিলের Record অন্য টেবিলের কতটি Record এর সাথে সংযুক্ত।
Relationship এর ধরন
| ধরন | সংকেত | উদাহরণ |
|---|---|---|
| One-to-One | 1:1 | ছাত্র ↔ NID Card |
| One-to-Many | 1:N | শিক্ষক → ছাত্র |
| Many-to-Many | M:N | ছাত্র ↔ বিষয় |
Module 2: One-to-One Relationship (১:১)
📌 সংজ্ঞা
One-to-One (1:1) সম্পর্কে একটি টেবিলের একটি Record অন্য টেবিলের মাত্র একটি Record এর সাথে সংযুক্ত।
উদাহরণ: Employee ↔ EmployeeDetail
Employees Table: EmployeeDetail Table:
┌──────┬──────────┐ ┌──────┬──────────┬──────────┐
│EmpID │ নাম │ │EmpID │ পাসপোর্ট │ ঠিকানা │
│ (PK) │ │ │ (FK) │ │ │
├──────┼──────────┤ ├──────┼──────────┼──────────┤
│ E001 │ রাহেলা │ ←── │ E001 │ BB123456 │ ঢাকা │
│ E002 │ করিম │ ←── │ E002 │ CC789012 │ চট্টগ্রাম│
└──────┴──────────┘ └──────┴──────────┴──────────┘
একজন Employee এর একটিমাত্র Detail Record।
১:১ কখন ব্যবহার হয়?
- অতিরিক্ত তথ্য আলাদা রাখতে (Optional তথ্য)
- Security কারণে সংবেদনশীল তথ্য আলাদা করতে
- Performance উন্নত করতে (বড় টেবিল ছোট রাখা)
Module 3: One-to-Many Relationship (১:N)
📌 সংজ্ঞা
One-to-Many (1:N) সম্পর্কে একটি টেবিলের একটি Record অন্য টেবিলের অনেকগুলো Record এর সাথে সংযুক্ত।
উদাহরণ: Department → Students
Departments Table: Students Table:
┌──────┬──────────┐ ┌──────┬──────────┬──────┐
│DeptID│ বিভাগ │ │RollID│ নাম │DeptID│
│ (PK) │ │ │ (PK) │ │ (FK) │
├──────┼──────────┤ ├──────┼──────────┼──────┤
│ D001 │ বিজ্ঞান │ ←─┬─│ 101 │ রাহেলা │ D001 │
│ D002 │ ব্যবসা │ ├─│ 103 │ সুমাইয়া │ D001 │
│ D003 │ মানবিক │ └─│ 105 │ রফিক │ D001 │
└──────┴──────────┘ │ 102 │ করিম │ D002 │
│ 104 │ নাসরিন │ D002 │
└──────┴──────────┴──────┘
একটি বিভাগে অনেক ছাত্র।
কিন্তু একজন ছাত্র একটিমাত্র বিভাগে।
১:N এর বাস্তব উদাহরণ
| Parent (১) | Child (N) | সম্পর্ক |
|---|---|---|
| শিক্ষক | ছাত্র | একজন শিক্ষক অনেক ছাত্র পড়ান |
| বিভাগ | কর্মচারী | একটি বিভাগে অনেক কর্মচারী |
| গ্রাহক | অর্ডার | একজন গ্রাহক অনেক অর্ডার দেয় |
| দেশ | শহর | একটি দেশে অনেক শহর |
Module 4: Many-to-Many Relationship (M:N)
📌 সংজ্ঞা
Many-to-Many (M:N) সম্পর্কে উভয় টেবিলের একটি Record অপর টেবিলের অনেকগুলো Record এর সাথে সংযুক্ত।
উদাহরণ: Students ↔ Subjects
সরাসরি M:N সংযোগ সম্ভব নয়!
মাঝে একটি Junction Table দরকার:
Students Table: Subjects Table:
┌──────┬──────────┐ ┌─────────┬────────────┐
│RollID│ নাম │ │SubjCode │ বিষয়নাম │
│ (PK) │ │ │ (PK) │ │
├──────┼──────────┤ ├─────────┼────────────┤
│ 101 │ রাহেলা │ │ M001 │ গণিত │
│ 102 │ করিম │ │ P001 │ পদার্থ │
│ 103 │ সুমাইয়া │ │ C001 │ রসায়ন │
└──────┴──────────┘ └─────────┴────────────┘
Junction Table → Enrollments (মাঝের টেবিল):
┌──────┬─────────┬────────┐
│RollID│SubjCode │ Marks │
│ (FK) │ (FK) │ │
├──────┼─────────┼────────┤
│ 101 │ M001 │ 90 │ ← রাহেলা গণিত
│ 101 │ P001 │ 85 │ ← রাহেলা পদার্থ
│ 102 │ M001 │ 88 │ ← করিম গণিত
│ 103 │ M001 │ 92 │ ← সুমাইয়া গণিত
│ 103 │ C001 │ 87 │ ← সুমাইয়া রসায়ন
└──────┴─────────┴────────┘
M:N এর বাস্তব উদাহরণ
| Table 1 | Table 2 | Junction Table |
|---|---|---|
| ছাত্র | বিষয় | Enrollments |
| পণ্য | অর্ডার | OrderItems |
| ডাক্তার | রোগী | Appointments |
| লেখক | বই | BookAuthors |
Module 5: ER Diagram (Entity-Relationship Diagram)
ER Diagram চিহ্ন:
Rectangle (আয়তক্ষেত্র) = Entity (Table)
Ellipse (উপবৃত্ত) = Attribute (Field)
Diamond (হীরা) = Relationship
Line (রেখা) = সংযোগ
1, N, M = Cardinality (সংখ্যা সম্পর্ক)
স্কুলের ER Diagram:
[Students]───1────teaches────N───[Teachers]
│ │
M │
│ │
enrolls │
│ │
N │
│ │
[Subjects]──────────────────────────
Cardinality:
1──1 = One-to-One
1──N = One-to-Many
M──N = Many-to-Many
Module 6: বাংলাদেশের বাস্তব উদাহরণ
হাসপাতাল ডেটাবেজ:
Doctors (ডাক্তার) Patients (রোগী)
┌──────┬──────────┐ ┌──────┬──────────┐
│DocID │ নাম │ │PatID │ নাম │
│ (PK) │ │ │ (PK) │ │
└──────┴──────────┘ └──────┴──────────┘
│ │
└──────── M:N ───────────────┘
│
Appointments
┌──────┬──────┬──────────┐
│DocID │PatID │ তারিখ │
│ (FK) │ (FK) │ │
└──────┴──────┴──────────┘
একজন ডাক্তার অনেক রোগী দেখেন।
একজন রোগী অনেক ডাক্তারের কাছে যান।
→ Many-to-Many → Appointments টেবিল দরকার
🧠 মূল শিক্ষা
মনে রাখো: Relationship তিন ধরনের — 1:1 (এক-থেকে-এক), 1:N (এক-থেকে-অনেক), M:N (অনেক-থেকে-অনেক)। M:N সম্পর্ক সরাসরি রাখা যায় না — মাঝে একটি Junction Table দরকার।
🔁 নিজে পরীক্ষা করো
❓ প্রশ্ন ১: One-to-Many ও Many-to-Many এর পার্থক্য কী? ✅ উত্তর: One-to-Many: একটি Record অনেকের সাথে, কিন্তু সেই অনেকটি শুধু একটির সাথে। Many-to-Many: উভয় দিকেই অনেকের সাথে অনেক।
❓ প্রশ্ন ২: Many-to-Many সম্পর্কে Junction Table কেন দরকার? ✅ উত্তর: Relational Database সরাসরি M:N সম্পর্ক সমর্থন করে না। Junction Table দুটি FK ব্যবহার করে M:N কে দুটি 1:N এ রূপান্তর করে।
❓ প্রশ্ন ৩: ER Diagram এ Rectangle ও Diamond কী নির্দেশ করে? ✅ উত্তর: Rectangle = Entity (টেবিল), Diamond = Relationship (দুটি টেবিলের সম্পর্ক)।
❓ প্রশ্ন ৪: "একজন মা অনেক সন্তানের মা, কিন্তু প্রতিটি সন্তানের একজনই মা" — এটি কোন ধরনের Relationship? ✅ উত্তর: One-to-Many (1:N) — একজন মা (1) অনেক সন্তান (N)।
📝 HSC পরীক্ষার প্রস্তুতি
পরীক্ষায় যা আসতে পারে
🎯 তিন ধরনের Relationship এর সংজ্ঞা ও উদাহরণ (৬ নম্বর) 🎯 Many-to-Many Relationship এ Junction Table কেন দরকার? (৩ নম্বর) 🎯 একটি বাস্তব পরিস্থিতির জন্য Relationship নির্ণয় করো (৪ নম্বর) 🎯 ER Diagram এর চিহ্নসমূহ (২ নম্বর)
সাধারণ ভুলসমূহ
⚠️ M:N সরাসরি ডেটাবেজে রাখার চেষ্টা — Junction Table ছাড়া M:N সম্ভব নয় ⚠️ 1:N কে N:1 মনে করা — দিক গুরুত্বপূর্ণ ⚠️ সব সম্পর্ককে Many-to-Many মনে করা
মনে রাখার কৌশল
💡 1:1 = দাম্পত্য (স্বামী-স্ত্রী) 💡 1:N = মা-সন্তান (একজন মা অনেক সন্তান) 💡 M:N = ছাত্র-বিষয় (অনেক ছাত্র, অনেক বিষয়) → Junction Table দরকার
✅ সারাংশ
- Relationship: দুটি টেবিলের মধ্যে যৌক্তিক সংযোগ
- 1:1: প্রতিটির সাথে মাত্র একটি — Employee ↔ Passport
- 1:N: একটির সাথে অনেক — Department → Students
- M:N: অনেকের সাথে অনেক — Students ↔ Subjects
- Junction Table: M:N কে দুটি 1:N এ রূপান্তর করে
- ER Diagram: Rectangle=Entity, Diamond=Relationship, Ellipse=Attribute
Relationship তুলনা সারণি
| ধরন | সংকেত | উদাহরণ | Junction Table? |
|---|---|---|---|
| One-to-One | 1:1 | ছাত্র ↔ NID | না |
| One-to-Many | 1:N | বিভাগ → ছাত্র | না |
| Many-to-Many | M:N | ছাত্র ↔ বিষয় | হ্যাঁ |
🎯 অনুশীলন প্রশ্ন
১. নিচের প্রতিটির Relationship ধরন নির্ণয় করো:
- একটি বই ও তার লেখক (একজন লেখক)
- একজন লেখক ও তার বইগুলো
- একটি কোর্স ও তার ছাত্রছাত্রী
২. Many-to-Many Relationship এ Junction Table কেন দরকার? উদাহরণ দাও।
৩. একটি Library Database এ Books ও Members এর মধ্যে Relationship ব্যাখ্যা করো।
৪. ER Diagram এর চিহ্নগুলো ব্যাখ্যা করো।
৫. MCQ: "একটি Order এ অনেক পণ্য এবং একটি পণ্য অনেক Order এ থাকতে পারে" — এটি কোন Relationship? (ক) One-to-One (খ) One-to-Many (গ) Many-to-Many (ঘ) Self Relationship উত্তর: (গ) Many-to-Many