৬.৪ ডেটাবেজ রিলেশন (Database Relation)

এইচএসসি আইসিটি অধ্যায় ৬ এর টপিক: ডেটাবেজ রিলেশন ও ই-আর ডায়াগ্রাম। One-to-One, One-to-Many, Many-to-Many রিলেশনশিপ এবং ER Diagram এর প্রতীক নিয়ে আলোচনা।

শেখা শুরু করুন

৬.৪ ডেটাবেজ রিলেশন (Database Relation)

  1. ৬.৪ ডেটাবেজ রিলেশন (Database Relation)
  2. ফেসবুকের রিলেশনশিপ!
  3. ডেটাবেজ রিলেশনশিপ কী?
  4. রিলেশনশিপের প্রকারভেদ
  5. ১. ওয়ান-টু-ওয়ান (One-to-One) রিলেশনশিপ
  6. One-to-One ডায়াগ্রাম
  7. ২. ওয়ান-টু-মেনি (One-to-Many) রিলেশনশিপ
  8. One-to-Many ডায়াগ্রাম
  9. ৩. মেনি-টু-মেনি (Many-to-Many) রিলেশনশিপ
  10. Many-to-Many রিলেশন বাস্তবায়ন
  11. ই-আর ডায়াগ্রাম (ER Diagram)
  12. ER ডায়াগ্রামের প্রতীকসমূহ
  13. একটি পূর্ণাঙ্গ ER ডায়াগ্রাম উদাহরণ
  14. রিলেশনাল মডেল ও নরমালাইজেশন
  15. নিজেকে যাচাই করো
  16. সারসংক্ষেপ

৬.৪ ডেটাবেজ রিলেশন (Database Relation)

এই লেকচার শেষে আমরা-

১। ডেটাবেজ রিলেশনশিপের ধারণা ব্যাখ্যা করতে পারব।
২। বিভিন্ন প্রকার রিলেশনশিপ (One-to-One, One-to-Many, Many-to-Many) বিশ্লেষণ করতে পারব।
৩। এনটিটি রিলেশনশিপ (ER) ডায়াগ্রামের প্রতীক ও ব্যবহার বর্ণনা করতে পারব।
৪। রিলেশনাল ডেটাবেজ মডেল ও নরমালাইজেশনের প্রাথমিক ধারণা ব্যাখ্যা করতে পারব।

স্বাগতম সবাইকে আমাদের আজকের ক্লাসে। আজ আমরা ডেটাবেজ ম্যানেজমেন্ট সিস্টেমের খুবই গুরুত্বপূর্ণ একটি টপিক নিয়ে আলোচনা করব, আর সেটি হলো 'ডেটাবেজ রিলেশন'। এই লেকচার শেষে আমরা ডেটাবেজ রিলেশনশিপের ধারণা একদম পরিষ্কারভাবে বুঝতে পারব। বিভিন্ন প্রকার রিলেশনশিপ যেমন One-to-One, One-to-Many এবং Many-to-Many কীভাবে কাজ করে তা উদাহরণসহ দেখব। এছাড়া ER ডায়াগ্রামের প্রতীকগুলো চিনে নিজে ডায়াগ্রাম আঁকতে শিখব। চলো তাহলে শুরু করা যাক।

ফেসবুকের রিলেশনশিপ!

ফেসবুক প্রোফাইল ও পোস্ট:
- তোমার প্রোফাইল কয়টি? ১টি
- তুমি পোস্ট করেছ কয়টি? অনেকগুলো

তাহলে তোমার সাথে তোমার পোস্টের সম্পর্ক কী?
- ১ : অনেক (One-to-Many)

বাস্তব জগত পুরোটাই সম্পর্কে (Relationship) আবদ্ধ। ডেটাবেজেও ঠিক তাই ঘটে।

আচ্ছা, ক্লাস শুরুর আগে একটা খুব পরিচিত উদাহরণ দেই। তোমরা তো সবাই ফেসবুক ব্যবহার করো, তাই না? একটু ভাবো তো, তোমার ফেসবুক প্রোফাইল কয়টা? নিশ্চয়ই একটা। কিন্তু তুমি আজ পর্যন্ত কয়টা স্ট্যাটাস দিয়েছ বা ছবি আপলোড করেছ? অনেকগুলো, তাই না? এই যে তোমার একটা আইডির সাথে অনেকগুলো পোস্টের কানেকশন, এটাই হলো ডেটাবেজ রিলেশনশিপ। এখানে সম্পর্কটা হলো 'একজন বনাম অনেকগুলো'। ডেটাবেজে আমরা একে বলি One-to-Many রিলেশন। চলো বিষয়টি বিস্তারিত দেখি।

ডেটাবেজ রিলেশনশিপ কী?

সংজ্ঞা:
ডেটাবেজের দুটি বা ততোধিক টেবিলের মধ্যে লজিক্যাল সম্পর্ক স্থাপন করাকে ডেটাবেজ রিলেশনশিপ বলে।

শর্তসমূহ:
১. অন্তত দুটি টেবিল থাকতে হবে।
২. উভয় টেবিলে একটি কমন ফিল্ড (Common Field) থাকতে হবে।
৩. সাধারণত প্রাইমারি কি (Primary Key)ফরেন কি (Foreign Key) এর মাধ্যমে এই সম্পর্ক তৈরি হয়।

রিলেশনশিপ মানেই হলো সম্পর্ক। কিন্তু ডেটাবেজে কার সাথে কার সম্পর্ক? সোজা উত্তর হলো—টেবিলের সাথে টেবিলের। তবে চাইলেই যেকোনো দুটি টেবিলের মধ্যে সম্পর্ক করা যায় না। এর জন্য কিছু শর্ত আছে। প্রথমত, অন্তত দুটি টেবিল তো থাকতেই হবে। দ্বিতীয় এবং সবচেয়ে গুরুত্বপূর্ণ শর্ত হলো, দুটি টেবিলের মধ্যে কথা বলার জন্য অন্তত একটি সাধারণ বিষয় বা Common Field থাকতে হবে। যেমন ধরো, দুটি ভিন্ন ক্লাসের ছাত্রের মধ্যে বন্ধুত্ব হতে গেলে যেমন একজন কমন মিউচুয়াল ফ্রেন্ড লাগে, ঠিক তেমনই এখানেও একটি কমন ফিল্ড লাগে। সাধারণত এক টেবিল প্রাইমারি কি এবং অন্য টেবিলের ফরেন কি দিয়ে এই কমন ফিল্ডের কাজটা করে।

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

ডেটাবেজ রিলেশনশিপ মূলত ৩ প্রকার:

  1. ওয়ান-টু-ওয়ান (One-to-One / 1:1)
  2. ওয়ান-টু-মেনি (One-to-Many / 1:N)(সবচেয়ে বেশি ব্যবহৃত)
  3. মেনি-টু-মেনি (Many-to-Many / M:N)

সম্পর্ক তো অনেক রকমের হয়। ডেটাবেজেও তাই। প্রধানত তিন ধরণের রিলেশন আমরা দেখব। ছবিতে দেখো—প্রথমটি হলো ওয়ান-টু-ওয়ান বা ১:১, দ্বিতীয়টি ওয়ান-টু-মেনি বা ১:অনেক, এবং তৃতীয়টি মেনি-টু-মেনি বা অনেক:অনেক। নাম শুনেই হয়তো কিছুটা আঁচ করতে পারছ এদের কাজ কী। এর মধ্যে ওয়ান-টু-মেনি বা ১:N রিলেশনটিই আমরা সফটওয়্যার বানানোর সময় সবচেয়ে বেশি ব্যবহার করি। চলো একে একে গভীরে যাই।

১. ওয়ান-টু-ওয়ান (One-to-One) রিলেশনশিপ

সংজ্ঞা:
যখন টেবিল A-এর একটি রেকর্ডের সাথে টেবিল B-এর শুধুমাত্র একটি রেকর্ডের সম্পর্ক থাকে।

বাস্তব উদাহরণ:
- কলেজ ও প্রিন্সিপাল: একটি কলেজে একজনই প্রিন্সিপাল থাকেন, আবার একজন ব্যক্তি একটি কলেজেরই প্রিন্সিপাল হন।
- দেশ ও রাজধানী: একটি দেশের একটিই রাজধানী।
- ব্যক্তি ও এনআইডি (NID): একজন ব্যক্তির একটিই NID নম্বর থাকে।

প্রথমে আসি ওয়ান-টু-ওয়ান রিলেশনে। এটা খুব সহজ। একটার সাথে শুধুই একটা। যেমন ধরো, আমাদের কলেজে প্রিন্সিপাল স্যার কয়জন? একজন। আবার একজন প্রিন্সিপাল স্যার একই সময়ে কয়টি কলেজের দায়িত্বে থাকেন? সাধারণত একটিরই। বা ধরো তোমার NID কার্ড। তোমার একটাই NID, আবার ওই নাম্বারের কার্ডটিও শুধুই তোমার। পৃথিবীর আর কারো সাথে সেটা মিলবে না। যখন ডেটাবেজে এমন পরিস্থিতি আসে, তখন আমরা ১:১ রিলেশন ব্যবহার করি।

One-to-One ডায়াগ্রাম

টেবিল ১: Person (ID, Name)
টেবিল ২: Passport (Passport_No, Issue_Date, Person_ID)

সম্পর্ক:
[Person ID: 101] <-----> [Passport for ID: 101]

এখানে একজন ব্যক্তির একাধিক পাসপোর্ট থাকতে পারে না (সাধারণ নিয়মে) এবং একটি পাসপোর্ট একাধিক ব্যক্তির হতে পারে না।

স্ক্রিনে দেখো দুটি টেবিল। বামে ব্যক্তি বা Person টেবিল, ডানে পাসপোর্ট টেবিল। দেখো ১০১ আইডির যে ব্যক্তি, তার সাথে পাসপোর্ট টেবিলে শুধুমাত্র একটি রেকর্ডেরই লিংক আছে। পাসপোর্টের টেবিলেও ওই ব্যক্তির আইডি একবারই এসেছে। এটিই ভিজ্যুয়াল রিপ্রেজেন্টেশন। অর্থাৎ, বাম পাশ থেকে ১টি টান দিলে ডান পাশেও ১টিতেই গিয়ে মিলবে।

২. ওয়ান-টু-মেনি (One-to-Many) রিলেশনশিপ

সংজ্ঞা:
টেবিল A-এর একটি রেকর্ডের সাথে টেবিল B-এর একাধিক রেকর্ডের সম্পর্ক। কিন্তু B-এর একটির সাথে A-এর একটিরই সম্পর্ক।

বাস্তব উদাহরণ:
- মা ও সন্তান: মায়ের অনেক সন্তান থাকতে পারে, কিন্তু সন্তানের মা একজনই।
- বিভাগ ও কর্মী: এক বিভাগে অনেক কর্মী কাজ করে, কিন্তু একজন কর্মী এক বিভাগেই থাকে।
- কাস্টমার ও অর্ডার: এক কাস্টমার অনেক অর্ডার দিতে পারেন।

এটি ডেটাবেজে সবচেয়ে বেশি ব্যবহৃত হয়।

এবার আসি সবচেয়ে গুরুত্বপূর্ণ রিলেশনে—ওয়ান-টু-মেনি। ভালো করে খেয়াল করো। এক দিকে এক, অন্য দিকে অনেক। যেমন ধরো—একজন মায়ের তিনজন সন্তান থাকতে পারে। এখানে মা ১, সন্তান ৩। কিন্তু উল্টো করে ভাবো, প্রত্যেক সন্তানের মা কয়জন? একজনই। তাই এটি One-to-Many। বা ধরো তুমি যখন অনলাইনে শপিং করো, তুমি একা অনেকগুলো অর্ডার প্লেস করতে পারো। তাই কাস্টমার টেবিলের সাথে অর্ডার টেবিলের সম্পর্ক হলো ওয়ান-টু-মেনি।

One-to-Many ডায়াগ্রাম

টেবিল ১: Customer (ID, Name)
টেবিল ২: Order (Order_ID, Date, Customer_ID)

দৃশ্যপট:
- কাস্টমার 'Rahim' (ID: 01) তিনটি অর্ডার দিয়েছেন।
- Order টেবিলে 'Rahim'-এর ID তিনবার এসেছে।

[Customer: 01] --< [Order A, Order B, Order C]

এই ছবিটা দেখো। বাম পাশে কাস্টমার টেবিলে 'রহিম' সাহেব আছেন একবার। কিন্তু ডান পাশে অর্ডার টেবিলে তার আইডি এসেছে তিনবার, কারণ তিনি তিনটা ভিন্ন ভিন্ন অর্ডার করেছেন। বাম পাশ থেকে একটা লাইন বেরিয়ে ডান পাশে গিয়ে তিন ভাগে ভাগ হয়ে গেছে। এটাই হলো ওয়ান-টু-মেনি রিলেশনের মূল চিত্র। এখানে কাস্টমার আইডি হলো কমন ফিল্ড, যা অর্ডার টেবিলে ফরেন কি হিসেবে কাজ করছে।

৩. মেনি-টু-মেনি (Many-to-Many) রিলেশনশিপ

সংজ্ঞা:
টেবিল A-এর একাধিক রেকর্ডের সাথে টেবিল B-এর একাধিক রেকর্ডের সম্পর্ক।

উদাহরণ:
- ছাত্র ও কোর্স: একজন ছাত্র একাধিক কোর্স নেয়, আবার একটি কোর্সে অনেক ছাত্র থাকে।
- ডাক্তার ও রোগী: একজন ডাক্তার অনেক রোগী দেখেন, একজন রোগীও প্রয়োজনে একাধিক ডাক্তারের কাছে যান।
- লেখক ও বই: এক লেখক অনেক বই লেখেন, আবার একটি বই (সংকলন) অনেক লেখকের হতে পারে।

এবার আসো জটিলে। অনেক-বনাম-অনেক। কলেজে তুমি কি শুধু একটা সাবজেক্ট পড়ো? না, বাংলা, ইংরেজি, আইসিটি—অনেকগুলো পড়ো। আবার আইসিটি ক্লাস কি শুধু তুমি একা করো? না, তোমার ক্লাসের ১০০ জন স্টুডেন্ট করে। তাহলে দেখো, স্টুডেন্টের দিক থেকেও অনেক সাবজেক্ট, আবার সাবজেক্টের দিক থেকেও অনেক স্টুডেন্ট। দুই পাশেই 'অনেক'। এটাই Many-to-Many রিলেশনশিপ।

Many-to-Many রিলেশন বাস্তবায়ন

সমস্যা:
রিলেশনাল ডেটাবেজে সরাসরি Many-to-Many সম্পর্ক তৈরি করা যায় না।

সমাধান:
'Junction Table' বা 'Link Table' ব্যবহার।

প্রক্রিয়া:
১. Student টেবিল
২. Course টেবিল
৩. Registration টেবিল (Junction Table) - এখানে Student_ID এবং Course_ID দুটোই থাকবে।

এটি মূলত দুটি 1:N রিলেশনে ভেঙে ফেলা হয়।

একটা মজার এবং জরুরি টেকনিক্যাল বিষয় বলি। কম্পিউটার বা ডেটাবেজ সফটওয়্যার সরাসরি এই Many-to-Many সম্পর্ক হ্যান্ডেল করতে পারে না। তাই আমরা চালাকি করে মাঝখানে একটা তৃতীয় টেবিল বসাই, যাকে বলে 'জংশন টেবিল' বা 'লিঙ্ক টেবিল'। এটা অনেকটা ঘটকের মতো কাজ করে দুই পক্ষের মধ্যে সম্পর্ক ঠিক রাখার জন্য। ছবিতে দেখো, স্টুডেন্ট আর কোর্সের মাঝখানে 'রেজিস্ট্রেশন' নামে একটা টেবিল আছে। এই টেবিলটিই মনে রাখে কোন স্টুডেন্ট কোন কোর্স নিয়েছে।

ই-আর ডায়াগ্রাম (ER Diagram)

এতক্ষণ আমরা যা মুখে বা টেবিল দিয়ে বুঝলাম, সেটাকে যখন ইঞ্জিনিয়াররা কাগজে-কলমে ডিজাইন করেন, তখন তারা এক বিশেষ ধরণের ছবি আঁকেন। এটাকে বলে ই-আর ডায়াগ্রাম। চলো দেখি এটা কী এবং কীভাবে আঁকতে হয়।

ER ডায়াগ্রামের প্রতীকসমূহ

প্রধান ৩টি উপাদান:

  1. Entity (এনটিটি): যার তথ্য রাখা হয়।
    - প্রতীক: আয়তক্ষেত্র (Rectangle) ▭
    - উদাহরণ: Student, Teacher

  2. Attribute (অ্যাট্রিবিউট): বৈশিষ্ট্য।
    - প্রতীক: উপবৃত্ত (Oval) ⬯
    - উদাহরণ: Name, Roll

  3. Relationship (রিলেশনশিপ): সম্পর্ক।
    - প্রতীক: রম্বস বা ডায়মন্ড (Diamond) ◇
    - উদাহরণ: Reads, Teaches

ই-আর ডায়াগ্রাম আঁকার জন্য আমাদের ৩টি প্রধান জ্যামিতিক শেপ বা প্রতীক চিনতে হবে। স্ক্রিনে দেখো— এক, আয়তক্ষেত্র বা Rectangle—এটা দিয়ে এনটিটি বোঝায়, যেমন স্টুডেন্ট বা টিচার। দুই, উপবৃত্ত বা চ্যাপ্টা গোল—এটা দিয়ে বৈশিষ্ট্য বা Attribute বোঝায়, যেমন নাম, রোল। তিন, রম্বস বা ডায়মন্ড শেপ—এটা দিয়ে সম্পর্ক বোঝায়। এই তিনটা শেপ মনে রাখা খুব জরুরি। পরীক্ষায় প্রায়ই এই প্রতীকগুলো আঁকতে আসে।

একটি পূর্ণাঙ্গ ER ডায়াগ্রাম উদাহরণ

এবার চলো সব জোড়া লাগিয়ে একটা পূর্ণাঙ্গ ডায়াগ্রাম দেখি। এখানে 'Student' এবং 'Course' হলো দুটি এনটিটি, তাই ওরা আছে আয়তক্ষেত্রের ভেতর। মাঝখানে ডায়মন্ড শেপে লেখা 'Enrolls', মানে স্টুডেন্ট কোর্সে ভর্তি হয়—এটা হলো রিলেশন। আর স্টুডেন্টের মাথার উপর গোল করে তার নাম ও আইডি দেওয়া আছে, এগুলো হলো তার বৈশিষ্ট্য। দেখো কত সুন্দর একটা ম্যাপ তৈরি হয়ে গেল! তোমরা ভিডিওটি একটু পজ করে এই ডায়াগ্রামটি খাতায় এঁকে ফেলো তো। এটা আঁকলে কনসেপ্ট একদম ক্লিয়ার হয়ে যাবে।

রিলেশনাল মডেল ও নরমালাইজেশন

রিলেশনাল মডেল:
- ১৯৭০ সালে E.F. Codd এটি প্রস্তাব করেন।
- বর্তমানে প্রায় সব জনপ্রিয় ডেটাবেজ (MySQL, Oracle, SQL Server) এই মডেল ব্যবহার করে।

নরমালাইজেশন (Normalization):
- বড় জটিল টেবিলকে ভেঙে ছোট ও সহজ করার প্রক্রিয়া।
- মূল লক্ষ্য: ডেটার পুনরাবৃত্তি (Redundancy) কমানো।
- ডেটাবেজকে সুশৃঙ্খল ও ত্রুটিমুক্ত করা।

এই যে টেবিল আর রিলেশনের ধারণা, এটা ১৯৭০ সালে ই.এফ. কড নামের একজন বিজ্ঞানী প্রথম দিয়েছিলেন। তার এই আইডিয়া থেকেই আজকের আধুনিক সব ডেটাবেজ তৈরি হয়েছে। আর নরমালাইজেশন হলো টেবিলকে ভেঙে গুছিয়ে রাখার পদ্ধতি, যাতে একই ডেটা বারবার লিখতে না হয় বা ডুপ্লিকেট না থাকে। নরমালাইজেশন নিয়ে আমরা পরের কোনো ক্লাসে বিস্তারিত জানব, আজ শুধু নামটা জেনে রাখো যে এটা টেবিল ভাঙার বা ছোট করার একটা নিয়ম।

নিজেকে যাচাই করো

প্রশ্ন ১: একজন মানুষ ও তার ফিঙ্গারপ্রিন্ট - এটি কোন রিলেশন?
(ক) 1:1 (খ) 1:N (গ) M:N

প্রশ্ন ২: একটি লাইব্রেরি ও অনেক বই - এটি কোন রিলেশন?
(ক) 1:1 (খ) 1:N (গ) M:N

ভিডিও পজ করে উত্তর ভাবো এবং মিলিয়ে নাও।

ক্লাস শেষ করার আগে ছোট একটা কুইজ। নিজেকে একটু যাচাই করে নাও। প্রথম প্রশ্ন: একজন মানুষ আর তার হাতের ছাপ বা ফিঙ্গারপ্রিন্ট—এটা কোন রিলেশন? একটু ভাবো... ঠিক ধরেছ, এটা ১:১ (One-to-One)। কারণ একজনের ইউনিক ফিঙ্গারপ্রিন্ট একটাই। দ্বিতীয় প্রশ্ন: লাইব্রেরি ও বই? একটা লাইব্রেরিতে অনেক বই থাকে, তাই এটা ১:এন (One-to-Many)। আশা করি তোমরা সঠিক উত্তর দিতে পেরেছ।

সারসংক্ষেপ

আজ আমরা যা শিখলাম:

  1. রিলেশনশিপ তৈরির জন্য কমন ফিল্ড (Common Field) প্রয়োজন।
  2. রিলেশনশিপ ৩ প্রকার: 1:1, 1:N, M:N
  3. সবচেয়ে বেশি ব্যবহৃত হয় One-to-Many (1:N)
  4. ER ডায়াগ্রাম হলো ডেটাবেজের নকশা বা ব্লুপ্রিন্ট (Entity, Attribute, Relation)।

আজকে আমরা অনেক গুরুত্বপূর্ণ বিষয় শিখলাম। ১:১, ১:অনেক রিলেশনগুলো আমাদের আশেপাশেই দেখা যায়, শুধু একটু খেয়াল করলেই বুঝবে। আর ER ডায়াগ্রাম আঁকাটা প্র্যাকটিস করো। একজন ভালো ডেটাবেজ ডিজাইনার হতে গেলে এটা তোমার প্রথম হাতিয়ার। আজকের ক্লাস এ পর্যন্তই। সবাই ভালো থেকো, দেখা হবে পরের ক্লাসে নতুন কোনো টপিক নিয়ে।

অধ্যায় ৬.৪: ডেটাবেজ রিলেশন (Database Relation) ও ই-আর মডেল

পড়তে প্রায় 12 মিনিট

লেকচারে আমরা ফেসবুকের উদাহরণের মাধ্যমে ডেটাবেজ রিলেশনশিপের প্রাথমিক ধারণা পেয়েছি। এই রিডিং ম্যাটেরিয়ালে আমরা দেখব কীভাবে লজিক্যালি এই সম্পর্কগুলো তৈরি করা হয়। ডেটাবেজ রিলেশনশিপ হলো রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেমের (RDBMS) মূল ভিত্তি। যখন ডেটাবেজের দুটি টেবিলের মধ্যে একটি সাধারণ ফিল্ডের (Common Field) উপর ভিত্তি করে তথ্যের আদান-প্রদানের সম্পর্ক তৈরি করা হয়, তাকে ডেটাবেজ রিলেশনশিপ বলে। এটি ছাড়া ডেটা ইন্টিগ্রিটি বা তথ্যের সত্যতা ও নির্ভরযোগ্যতা রক্ষা করা অসম্ভব।

ডেটাবেজ রিলেশনশিপ কী?

সহজ কথায়, ডেটাবেজের বিভিন্ন টেবিলের মধ্যে লজিক্যাল সংযোগ স্থাপন করাই হলো রিলেশনশিপ। এর ফলে ব্যবহারকারী খুব সহজে একাধিক টেবিল থেকে প্রয়োজনীয় তথ্য খুঁজে বের করতে পারে।

সংজ্ঞা (Definition): ডেটাবেজের দুটি বা ততোধিক টেবিলের ডেটার মধ্যে একটি কমন ফিল্ডের (Common Field) মাধ্যমে লজিক্যাল সম্পর্ক স্থাপন করাকে ডেটাবেজ রিলেশনশিপ বলে। এর প্রধান উদ্দেশ্য হলো ডেটা ডুপ্লিকেশন বা পুনরাবৃত্তি কমানো এবং ডেটা ইন্টিগ্রিটি বজায় রাখা।

রিলেশনশিপ তৈরি করার জন্য কিছু নির্দিষ্ট শর্ত পূরণ করতে হয়। এই শর্তগুলো পূরণ না হলে রিলেশনাল ডেটাবেজ সঠিকভাবে কাজ করবে না।

রিলেশনশিপ তৈরির শর্তসমূহ (Conditions):
- অন্তত দুটি টেবিল থাকতে হবে।
- টেবিলগুলোর মধ্যে একটি কমন ফিল্ড (Common Field) থাকতে হবে।
- কমন ফিল্ডের ডেটা টাইপ (Data Type) এবং ফিল্ড সাইজ (Field Size) উভয় টেবিলে হুবহু একই হতে হবে।
- অন্তত একটি টেবিলে ওই কমন ফিল্ডটি প্রাইমারি কি (Primary Key) হিসেবে থাকতে হবে।

রিলেশনশিপের প্রকারভেদ ও প্রায়োগিক বিশ্লেষণ

ডেটাবেজ ডিজাইনের সময় ডেটার ধরন ও ব্যবহারের ওপর ভিত্তি করে রিলেশনশিপ নির্ধারণ করা হয়। প্রধানত তিন ধরনের রিলেশনশিপ রয়েছে:

  1. ওয়ান-টু-ওয়ান (One-to-One / 1:1)
  2. ওয়ান-টু-মেনি (One-to-Many / 1:N)
  3. মেনি-টু-মেনি (Many-to-Many / M:N)

ডেটাবেজ রিলেশনশিপের প্রকারভেদ

পরীক্ষার টিপস (Exam Tip): উদ্দীপক দেখে রিলেশনশিপ শনাক্ত করার উপায়:
- যদি সম্পর্কটি 'একজন-একটি' হয় (যেমন: একজন ব্যক্তির একটিই পাসপোর্ট) -> One-to-One
- যদি সম্পর্কটি 'একজন-অনেক' হয় (যেমন: একজন কাস্টমার অনেকগুলো পণ্য কিনছেন) -> One-to-Many
- যদি সম্পর্কটি 'অনেক-অনেক' হয় (যেমন: অনেক ছাত্র অনেক বিষয়ে ভর্তি হয়েছে) -> Many-to-Many
উদ্দীপকের টেবিলগুলোর ডেটা দেখে বা বর্ণনা পড়ে এই 'ম্যাপিং' বুঝতে হবে।

১. ওয়ান-টু-ওয়ান (One-to-One / 1:1) রিলেশনশিপ

যখন কোনো ডেটাবেজের একটি টেবিলের একটি রেকর্ডের সাথে অন্য একটি টেবিলের শুধুমাত্র একটি রেকর্ডের সম্পর্ক থাকে, এবং একইভাবে দ্বিতীয় টেবিলের একটি রেকর্ডের সাথে প্রথম টেবিলের শুধুমাত্র একটি রেকর্ডের সম্পর্ক থাকে, তখন তাকে ওয়ান-টু-ওয়ান রিলেশনশিপ বলে।

বাস্তব জীবনে এটি খুব কম ব্যবহৃত হয়। সাধারণত টেবিল স্প্লিটিং (Table Splitting) বা নিরাপত্তার জন্য এটি লাগে। যেমন: একজন এমপ্লোয়ি এবং তার কনফিডেন্সিয়াল স্যালারি ডিটেইলস যদি আলাদা টেবিলে রাখা হয়।

উদাহরণ (Example): Person এবং Passport টেবিল।

টেবিল-১: Person
| NID (PK) | Name | Age |
|---|---|---|
| 101 | Rahim | 30 |
| 102 | Karim | 35 |

টেবিল-২: Passport
| Passport_No (PK) | Issue_Date | NID (FK + Unique) |
|---|---|---|
| P-550 | 01-01-2023 | 101 |
| P-551 | 15-02-2023 | 102 |

ব্যাখ্যা: এখানে Person টেবিলের NID হলো প্রাইমারি কি। Passport টেবিলে NID হলো ফরেন কি। যেহেতু একজন ব্যক্তির একটিই পাসপোর্ট, তাই Passport টেবিলে NID ফিল্ডটি অবশ্যই 'Unique' হতে হবে (রিপিট হতে পারবে না)।

২. ওয়ান-টু-মেনি (One-to-Many / 1:N) রিলেশনশিপ

এটি রিলেশনাল ডেটাবেজের সবচেয়ে জনপ্রিয় ও বহুল ব্যবহৃত রিলেশনশিপ। যখন কোনো একটি টেবিলের (প্যারেন্ট টেবিল) একটি রেকর্ডের সাথে অন্য একটি টেবিলের (চাইল্ড টেবিল) একাধিক রেকর্ডের সম্পর্ক থাকে, কিন্তু বিপরীতভাবে দ্বিতীয় টেবিলের একটি রেকর্ডের সাথে প্রথম টেবিলের মাত্র একটি রেকর্ডের সম্পর্ক থাকে, তখন তাকে ওয়ান-টু-মেনি রিলেশনশিপ বলে।

গুরুত্বপূর্ণ (Important): ফরেন কি বসানোর নিয়ম
One-to-Many রিলেশনে সবসময় 'Many' বা 'অনেক' এর দিকে ফরেন কি বসাতে হয়। যেমন- বাবা ও সন্তানের সম্পর্কে, সন্তানের টেবিলে বাবার আইডি থাকবে। কারণ একজন বাবার অনেক সন্তান হতে পারে, কিন্তু সন্তানের একজনই বাবা।

উদাহরণ (Example): Customer এবং Order টেবিল।

Customer টেবিল (Parent):
| Customer_ID (PK) | Name | Phone |
|---|---|---|
| C-01 | Jamal | 017... |
| C-02 | Kamal | 018... |

Order টেবিল (Child):
| Order_ID (PK) | Date | Amount | Customer_ID (FK) |
|---|---|---|---|
| O-501 | 10-05-2023 | 500 | C-01 |
| O-502 | 12-05-2023 | 700 | C-01 |
| O-503 | 12-05-2023 | 200 | C-02 |

ব্যাখ্যা: এখানে Customer_ID হলো ফরেন কি। লক্ষ্য করো, Order টেবিলে C-01 দুইবার এসেছে। অর্থাৎ জামাল সাহেব দুটি অর্ডার দিয়েছেন। এটিই 1:N রিলেশন।

৩. মেনি-টু-মেনি (Many-to-Many / M:N) রিলেশনশিপ ও জংশন টেবিল

যখন দুটি টেবিলের উভয়ের একটি রেকর্ডের সাথে অপর টেবিলের একাধিক রেকর্ডের সম্পর্ক থাকে, তখন তাকে মেনি-টু-মেনি রিলেশনশিপ বলে।

সমস্যা: রিলেশনাল ডেটাবেজে সরাসরি দুটি টেবিলের মধ্যে মেনি-টু-মেনি রিলেশনশিপ তৈরি করা যায় না। এটি করতে গেলে ডেটা ডুপ্লিকেশন ও অসামঞ্জস্যতা তৈরি হয়।

সমাধান: এই সমস্যা সমাধানের জন্য একটি তৃতীয় বা সহযোগী টেবিল ব্যবহার করা হয়, যাকে জংশন টেবিল (Junction Table) বা লিংকিং টেবিল বলে। এই টেবিলটি মূল দুটি টেবিলের প্রাইমারি কি-কে নিজের মধ্যে ধারণ করে এবং দুটি আলাদা 1:N রিলেশনশিপ তৈরি করে।

মেনি-টু-মেনি রিলেশন ও জংশন টেবিল

জংশন টেবিল (Junction Table): যে তৃতীয় টেবিল ব্যবহার করে দুটি টেবিলের মধ্যে Many-to-Many রিলেশনশিপকে ভেঙে দুটি One-to-Many রিলেশনশিপে রূপান্তর করা হয়, তাকে জংশন টেবিল বলে। এতে সাধারণত কম্পোজিট প্রাইমারি কি (Composite Primary Key) থাকে।

বাস্তবায়ন কৌশল (Student & Course):
ধরি, একজন ছাত্র অনেকগুলো কোর্স নিতে পারে, আবার একটি কোর্সে অনেক ছাত্র ভর্তি হতে পারে।

  1. Student টেবিল: Roll (PK), Name
  2. Course টেবিল: Course_Code (PK), Title
  3. Registration (Junction) টেবিল: Roll (FK), Course_Code (FK), Reg_Date

Registration টেবিলের ডেটা:
| Roll (FK) | Course_Code (FK) | Reg_Date |
|---|---|---|
| 101 | ICT-101 | 01-01-24 |
| 101 | MAT-102 | 02-01-24 |
| 102 | ICT-101 | 01-01-24 |

এখানে Roll এবং Course_Code মিলে একটি কম্পোজিট প্রাইমারি কি তৈরি করেছে। এটি নিশ্চিত করে যে একই ছাত্র একই কোর্সে দুবার রেজিস্ট্রেশন করতে পারবে না।

রিলেশনশিপের ডিগ্রি (Degree of Relationship)

রিলেশনশিপে কতটি এনটিটি বা টেবিল অংশগ্রহণ করছে তার ওপর ভিত্তি করে ডিগ্রিকে ৩ ভাগে ভাগ করা যায়। এটি এমসিকিউ (MCQ) এর জন্য খুবই গুরুত্বপূর্ণ।

  1. ইউনারি (Unary): যখন একটি এনটিটি নিজের সাথেই রিলেশন তৈরি করে। একে 'Recursive Relationship'-ও বলা হয়।
    • উদাহরণ: একজন এমপ্লোয়ি অন্য এমপ্লোয়ির ম্যানেজার। এখানে Employee টেবিলটি নিজের সাথেই সম্পর্কিত।
  2. বাইনারি (Binary): যখন দুটি ভিন্ন এনটিটির মধ্যে রিলেশন হয়। এটি সবচেয়ে সাধারণ।
    • উদাহরণ: ছাত্র ও শিক্ষক, ক্রেতা ও বিক্রেতা।
  3. টারনারি (Ternary): যখন তিনটি ভিন্ন এনটিটি বা টেবিল একসাথে যুক্ত থাকে।
    • উদাহরণ: ডাক্তার, রোগী এবং ঔষধ (Prescription)।

সংক্ষিপ্ত সারাংশ (Summary of Degrees):
- Unary: ১টি এনটিটি (Self-referencing)
- Binary: ২টি এনটিটি (Most Common)
- Ternary: ৩টি এনটিটি (Complex relationships)

ই-আর (ER) মডেল ও ডায়াগ্রামের প্রতীক পরিচিতি

এনটিটি রিলেশনশিপ (ER) ডায়াগ্রাম হলো ডেটাবেজের ব্লু-প্রিন্ট বা নকশা। লেকচারে আমরা বেসিক প্রতীকগুলো দেখেছি। কিন্তু পরীক্ষার খাতায় ভালো নম্বর পাওয়ার জন্য অ্যাট্রিবিউটের বিস্তারিত প্রকারভেদ জানা প্রয়োজন।

ER Diagram Symbols Chart

অ্যাট্রিবিউটের প্রকারভেদ ও প্রতীক
  1. সাধারণ অ্যাট্রিবিউট (Simple Attribute): যা আর ভাঙা যায় না।
    • প্রতীক: সাধারণ উপবৃত্ত (Oval)।
    • উদাহরণ: Roll, Age.
  2. কম্পোজিট অ্যাট্রিবিউট (Composite Attribute): যা কয়েকটি সাব-অ্যাট্রিবিউটে ভাগ করা যায়।
    • প্রতীক: একটি ওভাল থেকে শাখা বের হয়ে অন্য ওভালে যায়।
    • উদাহরণ: Address (একে Street, City, Zip-এ ভাগ করা যায়)।
  3. মাল্টিভ্যালুড অ্যাট্রিবিউট (Multivalued Attribute): যার একাধিক মান থাকতে পারে।
    • প্রতীক: ডাবল উপবৃত্ত (Double Oval)।
    • উদাহরণ: Phone_Number (একজন ব্যক্তির একাধিক মোবাইল নম্বর থাকতে পারে), Degree (একাধিক ডিগ্রি থাকতে পারে)।
  4. ডিরাইভড অ্যাট্রিবিউট (Derived Attribute): যা অন্য কোনো অ্যাট্রিবিউট থেকে গণনা করে বের করা হয়, সরাসরি ডেটাবেজে সেভ করা হয় না।
    • প্রতীক: ড্যাশ বা ডটেড উপবৃত্ত (Dashed Oval)।
    • উদাহরণ: Date_of_Birth থেকে Age বের করা। এখানে Age হলো ডিরাইভড অ্যাট্রিবিউট।

উইক এনটিটি (Weak Entity):
যে এনটিটির নিজস্ব কোনো প্রাইমারি কি থাকে না এবং অস্তিত্বের জন্য অন্য কোনো শক্তিশালী এনটিটির (Strong Entity) ওপর নির্ভর করতে হয়, তাকে উইক এনটিটি বলে।
- প্রতীক: ডাবল আয়তক্ষেত্র (Double Rectangle)।
- উদাহরণ: ব্যাংকের লোনের নমিনি (Nominee)। একাউন্ট হোল্ডার ছাড়া নমিনির কোনো অস্তিত্ব নেই।

সারাংশ ও পরীক্ষার প্রস্তুতি

পুরো অধ্যায়ের মূল বিষয়গুলোর সারসংক্ষেপ নিচে দেওয়া হলো যা পরীক্ষার আগের রাতে রিভিশনের জন্য কার্যকর।

রিভিশন চেকলিস্ট (Quick Revision):
- শর্ত: রিলেশনশিপের জন্য কমন ফিল্ড ও প্রাইমারি কি থাকতেই হবে।
- ফরেন কি: 1:N রিলেশনে ফরেন কি সবসময় 'Many' বা চাইল্ড টেবিলে বসে।
- M:N সমাধান: মেনি-টু-মেনি রিলেশন ভাঙতে 'জংশন টেবিল' লাগে, যাতে কম্পোজিট প্রাইমারি কি থাকে।
- ER ডায়াগ্রাম: মাল্টিভ্যালুড অ্যাট্রিবিউট = ডাবল ওভাল; ডিরাইভড = ড্যাশড ওভাল; উইক এনটিটি = ডাবল রেকটেঙ্গল।

পরিভাষা (Glossary)
পরিভাষা (Term) সংজ্ঞা (Definition)
এনটিটি (Entity) বাস্তব বা কাল্পনিক বস্তু যার সম্পর্কে ডেটাবেজে তথ্য রাখা হয় (যেমন: ছাত্র, গাড়ি)।
অ্যাট্রিবিউট (Attribute) এনটিটির বৈশিষ্ট্য বা গুণাবলি (যেমন: ছাত্রের নাম, রোল)।
ই-আর ডায়াগ্রাম (ER Diagram) এনটিটি-রিলেশনশিপ ডায়াগ্রাম, যা ডেটাবেজের লজিক্যাল স্ট্রাকচার চিত্রাকারে প্রকাশ করে।
ফরেন কি (Foreign Key) একটি টেবিলের ফিল্ড যা অন্য টেবিলের প্রাইমারি কি-কে নির্দেশ করে রিলেশন তৈরি করে।
জংশন টেবিল (Junction Table) Many-to-Many রিলেশনশিপ বাস্তবায়নের জন্য ব্যবহৃত মধ্যবর্তী টেবিল।
কম্পোজিট কি (Composite Key) একাধিক ফিল্ডের সমন্বয়ে গঠিত প্রাইমারি কি।
কার্ডিনালিটি (Cardinality) এনটিটির মধ্যে সম্পর্কের সংখ্যাসূচক প্রকাশ (যেমন: ১:১, ১:N)।

অনুশীলনের প্রশ্ন

সৃজনশীল প্রশ্ন

সৃজনশীল প্রশ্ন ১

দৃশ্যকল্প: 'সিটি কলেজ'-এর আইসিটি শিক্ষক ক্লাসে ডেটাবেজ ম্যানেজমেন্ট সিস্টেম পড়াচ্ছিলেন। তিনি বোর্ডে দুটি টেবিল আঁকলেন। টেবিল-১ এ আছে Teacher (TeacherID, Name, Designation, Mobile) এবং টেবিল-২ এ আছে Department (DeptID, DeptName, Location)। তিনি বললেন, "একজন শিক্ষক শুধুমাত্র একটি বিভাগেরই সদস্য হতে পারেন, কিন্তু একটি বিভাগে একাধিক শিক্ষক থাকতে পারেন।"

ক) ফরেন কী (Foreign Key) কী?
খ) ওয়ান-টু-ওয়ান (1:1) রিলেশন বলতে কী বোঝায়?
গ) উদ্দীপকের আলোকে Department এবং Teacher টেবিলের মধ্যে রিলেশনশিপ তৈরি করার প্রক্রিয়া ব্যাখ্যা কর।
ঘ) "যদি কোনো শিক্ষককে ডিলিট করা হয়, তবে তার বিভাগের তথ্যও ডিলিট হয়ে যাবে"—এই পরিস্থিতি এড়াতে ডেটাবেজে কোন ব্যবস্থা গ্রহণ করা প্রয়োজন? বিশ্লেষণ কর।

উত্তর

(ক) কোনো টেবিলের একটি অ্যাট্রিবিউট বা ফিল্ড যদি অন্য কোনো টেবিলের প্রাইমারি কী হিসেবে ব্যবহৃত হয়, তবে তাকে প্রথম টেবিলের ফরেন কী (Foreign Key) বলা হয়।

(খ) যদি ডেটাবেজের কোনো একটি টেবিলের একটি রেকর্ডের সাথে অন্য একটি টেবিলের কেবল একটি রেকর্ডের সম্পর্ক থাকে এবং একইভাবে দ্বিতীয় টেবিলের একটি রেকর্ডের সাথে প্রথম টেবিলের কেবল একটি রেকর্ডের সম্পর্ক থাকে, তবে তাকে ওয়ান-টু-ওয়ান (1:1) রিলেশনশিপ বলা হয়। যেমন—একজন ব্যক্তির একটিই ন্যাশনাল আইডি নম্বর থাকে এবং একটি ন্যাশনাল আইডি নম্বর কেবল একজন ব্যক্তিরই হয়।

(গ) উদ্দীপকের Department এবং Teacher টেবিলের মধ্যে ওয়ান-টু-মেনি (1:M) রিলেশনশিপ তৈরি করা সম্ভব। উদ্দীপক অনুযায়ী, একটি বিভাগে একাধিক শিক্ষক থাকতে পারেন, কিন্তু একজন শিক্ষক একটি মাত্র বিভাগের অধীনে থাকেন।

এই রিলেশন তৈরির প্রক্রিয়া নিচে দেওয়া হলো:
১. প্রথমে Department টেবিলের প্রাইমারি কী (ধরি DeptID) নির্ধারণ করতে হবে।
২. এরপর Teacher টেবিলে একটি নতুন কলাম বা ফিল্ড হিসেবে DeptID যুক্ত করতে হবে, যা এখানে ফরেন কী (Foreign Key) হিসেবে কাজ করবে।
৩. উভয় টেবিলের DeptID ফিল্ডের ডেটা টাইপ এবং সাইজ একই হতে হবে।
৪. এখন Department টেবিলের DeptID (Primary Key) এর সাথে Teacher টেবিলের DeptID (Foreign Key) এর সংযোগ বা রিলেশন স্থাপন করলে ১:এন (1:M) রিলেশন তৈরি হবে।

(ঘ) উদ্দীপকের পরিস্থিতিটি ডেটাবেজের রেফারেন্সিয়াল ইন্টিগ্রিটি (Referential Integrity) লঙ্ঘনের একটি উদাহরণ। ডেটাবেজে সঠিকতা ও সামঞ্জস্য বজায় রাখার জন্য রেফারেন্সিয়াল ইন্টিগ্রিটি খুবই গুরুত্বপূর্ণ।

প্রশ্নে বলা হয়েছে "শিক্ষককে ডিলিট করলে বিভাগের তথ্যও ডিলিট হয়ে যাবে"—এটি সাধারণত 'ক্যাসকেড ডিলিট' (Cascade Delete) অপশন চালু থাকলে ঘটে, যা প্যারেন্ট টেবিল (Department) ডিলিট করলে চাইল্ড টেবিল (Teacher) থেকে ডেটা মুছে দেয়। কিন্তু এখানে উল্টো পরিস্থিতির কথা বলা হয়েছে বা ভুলবশত চাইল্ড রেকর্ড মুছলে প্যারেন্ট রেকর্ডের ওপর প্রভাব পড়ার আশঙ্কা করা হচ্ছে, যা সাধারণ রিলেশনে ঘটে না। তবে মূল সমস্যাটি হলো ডেটাবেজের অসামঞ্জস্যতা রোধ করা।

এই পরিস্থিতি এড়াতে বা ডেটাবেজকে সুরক্ষিত রাখতে নিম্নলিখিত ব্যবস্থা গ্রহণ করা প্রয়োজন:
১. ফরেন কী কনস্ট্রেইন্ট (Foreign Key Constraint): রিলেশন তৈরির সময় ফরেন কী কনস্ট্রেইন্ট সেট করতে হবে।
২. রেস্ট্রিক্ট (Restrict) রুল: ডিলিট বা আপডেটের সময় 'Restrict' রুল ব্যবহার করা যেতে পারে। এতে প্যারেন্ট টেবিলের কোনো ডেটা (যেমন DeptID) অন্য কোথাও ব্যবহৃত হলে তা ডিলিট করা যাবে না।
৩. অন ডিলিট সেট নাল (On Delete Set Null): যদি শিক্ষক চলে যান বা ডিলিট হন, তবে বিভাগের তথ্য যেন ক্ষতিগ্রস্ত না হয়, সেজন্য রিলেশনশিপে বিশেষ রুল সেট করা যায়। তবে সাধারণত চাইল্ড (Teacher) ডিলিট করলে প্যারেন্ট (Department) এর ক্ষতি হয় না।
সুতরা, সঠিক রেফারেন্সিয়াল ইন্টিগ্রিটি নিয়ম প্রয়োগ করলে ডেটার অখণ্ডতা বজায় থাকবে এবং অনাকাঙ্ক্ষিত ডেটা লস এড়ানো যাবে।


সৃজনশীল প্রশ্ন ২

দৃশ্যকল্প: একটি আইটি ট্রেনিং সেন্টারের ডেটাবেজে Student এবং Course নামে দুটি টেবিল আছে।
টেবিল-১: Student (StudentID, Name, Address)
টেবিল-২: Course (CourseID, Title, Duration)
নিয়ম হলো—একজন ছাত্র একাধিক কোর্সে ভর্তি হতে পারে এবং একটি কোর্সে একাধিক ছাত্র ভর্তি হতে পারে। ডেটাবেজ অ্যাডমিনিস্ট্রেটর এই দুটি টেবিলের মধ্যে সরাসরি রিলেশন তৈরি করতে গিয়ে সমস্যায় পড়লেন।

ক) এনটিটি (Entity) কী?
খ) মেনি-টু-মেনি (Many-to-Many) রিলেশনশিপ উদাহরণসহ বুঝিয়ে লেখ।
গ) উদ্দীপকের টেবিল দুটির মধ্যে সরাসরি রিলেশন তৈরি করা সম্ভব নয় কেন? ব্যাখ্যা কর।
ঘ) উদ্দীপকের রিলেশনটি ডেটাবেজে বাস্তবায়নের জন্য কী ধরনের পরিবর্তন প্রয়োজন? ই-আর ডায়াগ্রামের ধারণা ব্যবহার করে বিশ্লেষণ কর।

উত্তর

(ক) ডেটাবেজে এনটিটি হলো এমন কোনো বাস্তব বা বিমূর্ত বস্তু, ব্যক্তি বা বিষয় যার সম্পর্কে ডেটা সংরক্ষণ করা হয়। যেমন—Student, Teacher, Book ইত্যাদি একেকটি এনটিটি।

(খ) যখন ডেটাবেজের একটি টেবিলের একাধিক রেকর্ডের সাথে অন্য একটি টেবিলের একাধিক রেকর্ডের সম্পর্ক স্থাপন করা হয়, তখন তাকে মেনি-টু-মেনি (Many-to-Many) রিলেশনশিপ বলে।
উদাহরণ: একজন ছাত্র একাধিক বিষয় (Subject) নিতে পারে, আবার একটি বিষয় একাধিক ছাত্র পড়তে পারে। এখানে 'ছাত্র' এবং 'বিষয়'-এর সম্পর্ক হলো মেনি-টু-মেনি।

(গ) উদ্দীপকের Student এবং Course টেবিল দুটির মধ্যে সরাসরি রিলেশন তৈরি করা সম্ভব নয় কারণ এখানে মেনি-টু-মেনি (M:M) সম্পর্ক বিদ্যমান।
রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেমে (RDBMS) দুটি টেবিলের মধ্যে সরাসরি মেনি-টু-মেনি রিলেশনশিপ তৈরি বা ইমপ্লিমেন্ট করা যায় না। যদি সরাসরি রিলেশন করার চেষ্টা করা হয়, তবে ডেটা রিডানডেন্সি (Data Redundancy) বা ডুপ্লিকেট ডেটার সমস্যা দেখা দেবে এবং ডেটাবেজের নরমালাইজেশন রুল লঙ্ঘিত হবে। যেমন, একজন ছাত্র ৩টি কোর্স নিলে স্টুডেন্ট টেবিলে তার নাম ৩ বার লিখতে হবে, যা কাম্য নয়। তাই সরাসরি এই রিলেশন সম্ভব নয়।

(ঘ) উদ্দীপকের Student এবং Course টেবিলের মধ্যে রিলেশনটি (M:M) বাস্তবায়নের জন্য একটি তৃতীয় টেবিল বা জাংশন টেবিল (Junction Table) বা লিংকিং টেবিল প্রয়োজন।

বাস্তবায়ন প্রক্রিয়া ও বিশ্লেষণ:
১. নতুন টেবিল তৈরি: আমাদের একটি নতুন টেবিল তৈরি করতে হবে, ধরি তার নাম Registration
২. কম্পোজিট প্রাইমারি কী: এই নতুন টেবিলে Student টেবিলের প্রাইমারি কী (StudentID) এবং Course টেবিলের প্রাইমারি কী (CourseID) ফরেন কী হিসেবে থাকবে। এই দুটি ফিল্ড মিলে Registration টেবিলের কম্পোজিট প্রাইমারি কী (Composite Primary Key) গঠন করবে।
৩. রিলেশন স্থাপন:
- Student টেবিলের সাথে Registration টেবিলের ১:এন (1:M) সম্পর্ক হবে।
- Course টেবিলের সাথে Registration টেবিলের ১:এন (1:M) সম্পর্ক হবে।

এই প্রক্রিয়ার মাধ্যমে পরোক্ষভাবে স্টুডেন্ট এবং কোর্সের মধ্যে মেনি-টু-মেনি সম্পর্কটি বাস্তবায়িত হবে। ই-আর ডায়াগ্রামের ধারণায়, দুটি এনটিটির মধ্যে 'Diamond' শেপ দিয়ে রিলেশন দেখানো হতো, কিন্তু ফিজিক্যাল ডেটাবেজে তা এই তৃতীয় টেবিলের মাধ্যমেই সমাধান করা হয়। এটি ডেটা ডুপ্লিকেশন রোধ করে এবং ডেটাবেজের কর্মদক্ষতা বাড়ায়।


সৃজনশীল প্রশ্ন ৩

দৃশ্যকল্প: নিচের টেবিল দুটি লক্ষ্য কর:

টেবিল-ক: Products
| ProdID | PName | Price |
| :---: | :---: | :---: |
| 101 | Mouse | 500 |
| 102 | Keyboard | 800 |

টেবিল-খ: Orders
| OrderID | ProdID | Quantity |
| :---: | :---: | :---: |
| 5001 | 101 | 5 |
| 5002 | 105 | 2 |

ক) অ্যাট্রিবিউট কী?
খ) প্রাইমারি কী কেন অদ্বিতীয় (Unique) হতে হয়?
গ) উদ্দীপকের 'টেবিল-খ' তে ডেটা এন্ট্রি করতে গেলে কোনো সমস্যা হবে কি? ব্যাখ্যা কর।
ঘ) টেবিল দুটির মধ্যে সম্পর্ক স্থাপনের গুরুত্ব এবং শর্তাবলি বিশ্লেষণ কর।

উত্তর

(ক) ডেটাবেজ টেবিলের প্রতিটি কলাম বা ফিল্ডকে অ্যাট্রিবিউট বলা হয়, যা এনটিটির কোনো একটি বৈশিষ্ট্য প্রকাশ করে। যেমন—Name, Age, Roll ইত্যাদি।

(খ) প্রাইমারি কী ব্যবহার করা হয় একটি টেবিলের প্রতিটি রেকর্ডকে স্বতন্ত্রভাবে বা ইউনিকলি শনাক্ত করার জন্য। যদি প্রাইমারি কী অদ্বিতীয় বা ইউনিক না হয়, তবে একই আইডিতে একাধিক ব্যক্তির বা বস্তুর তথ্য থাকবে, ফলে নির্দিষ্ট কোনো ডেটা খুঁজে বের করা বা আপডেট করা অসম্ভব হয়ে পড়বে। ডেটাবেজের বিশুদ্ধতা বা ইনটিগ্রিটি রক্ষার জন্যই প্রাইমারি কী-কে অদ্বিতীয় হতে হয়।

(গ) হ্যাঁ, উদ্দীপকের 'টেবিল-খ' (Orders) তে ডেটা এন্ট্রি করতে গেলে সমস্যা হতে পারে, যদি টেবিল দুটির মধ্যে রিলেশনশিপ (Referential Integrity) সক্রিয় থাকে।
লক্ষ্য করলে দেখা যায়, 'টেবিল-খ'-এর দ্বিতীয় রো-তে ProdID হিসেবে 105 ব্যবহার করা হয়েছে। কিন্তু 'টেবিল-ক' (Products)-এ 105 নামে কোনো ProdID নেই (আছে 101 এবং 102)। যদি Products টেবিলটি প্যারেন্ট এবং Orders টেবিলটি চাইল্ড হয় এবং তাদের মধ্যে রিলেশন থাকে, তবে অস্তিত্ব নেই এমন কোনো প্রডাক্টের অর্ডার এন্ট্রি করা যাবে না। এটি 'রেফারেন্সিয়াল ইন্টিগ্রিটি' রুল ভায়োলেশন বা লঙ্ঘন। ফলে ডেটাবেজ এই এন্ট্রি গ্রহণ করবে না এবং এরর (Error) দেখাবে।

(ঘ) ডেটাবেজ ম্যানেজমেন্ট সিস্টেমে টেবিলের মধ্যে সম্পর্ক বা রিলেশন স্থাপন অত্যন্ত গুরুত্বপূর্ণ।

গুরুত্ব:
১. ডেটা রিডানডেন্সি কমানো: একই ডেটা বারবার লেখার প্রয়োজন হয় না।
২. ডেটা ইন্টিগ্রিটি বজায় রাখা: ভুল বা অসামঞ্জস্যপূর্ণ ডেটা এন্ট্রি রোধ করা যায় (যেমনটি 'গ' নং প্রশ্নে দেখা গেছে)।
৩. কুয়েরি ও রিপোর্ট তৈরি: একাধিক টেবিল থেকে প্রয়োজনীয় ডেটা একত্রিত করে অর্থবহ রিপোর্ট তৈরি করা সহজ হয়।

শর্তাবলি:
উদ্দীপকের টেবিল দুটির মধ্যে সম্পর্ক স্থাপনের জন্য নিম্নলিখিত শর্তগুলো মানতে হবে:
১. কমন ফিল্ড: উভয় টেবিলে অন্তত একটি সাধারণ বা কমন ফিল্ড থাকতে হবে (এখানে ProdID)।
২. প্রাইমারি কী: প্যারেন্ট টেবিলে (Products) কমন ফিল্ডটি অবশ্যই প্রাইমারি কী হতে হবে।
৩. ডেটা টাইপ: উভয় টেবিলের কমন ফিল্ডের ডেটা টাইপ এবং ডোমেইন (Domain) বা সাইজ হুবহু এক হতে হবে।
৪. অদ্বিতীয়তা: প্যারেন্ট টেবিলের প্রাইমারি কী-তে ডুপ্লিকেট ভ্যালু থাকা যাবে না।

উপরোক্ত শর্তগুলো পূরণ করলেই কেবল Products এবং Orders টেবিলের মধ্যে রিলেশন তৈরি করা যাবে এবং ডেটাবেজটি সঠিকভাবে কাজ করবে।

এমসিকিউ

১। ডেটাবেজ রিলেশন তৈরির প্রধান শর্ত কোনটি?

ক) একাধিক ডেটাবেজ থাকা
খ) টেবিলে কমন ফিল্ড থাকা
গ) প্রতিটি ফিল্ডের নাম ভিন্ন হওয়া
ঘ) কুয়েরি ল্যাঙ্গুয়েজ জানা

সঠিক উত্তর: খ) টেবিলে কমন ফিল্ড থাকা

ব্যাখ্যা: দুটি টেবিলের মধ্যে রিলেশন তৈরির জন্য অবশ্যই উভয় টেবিলে অন্তত একটি সাধারণ বা কমন ফিল্ড (Common Field) থাকতে হয়, যার ডেটা টাইপ একই হতে হবে।


২। রিলেশনাল ডেটাবেজ মডেলে (RDBMS) কয়টি টেবিলের মধ্যে রিলেশন তৈরি করা যায়?

ক) ১টি
খ) ২টি
গ) একাধিক
ঘ) অসংখ্য

সঠিক উত্তর: গ) একাধিক

ব্যাখ্যা: রিলেশনাল ডেটাবেজ মডেলে প্রয়োজন অনুযায়ী একাধিক টেবিলের মধ্যে রিলেশনশিপ তৈরি করা সম্ভব।


৩। কোনো টেবিলের প্রাইমারি কী (Primary Key) যদি অন্য টেবিলে ব্যবহৃত হয়, তবে তাকে কী বলে?

ক) কম্পোজিট কী
খ) সুপার কী
গ) ফরেন কী
ঘ) অল্টারনেট কী

সঠিক উত্তর: গ) ফরেন কী

ব্যাখ্যা: একটি টেবিলের প্রাইমারি কী যখন অন্য একটি টেবিলে সাধারণ ফিল্ড হিসেবে ব্যবহৃত হয়ে রিলেশন তৈরি করে, তখন দ্বিতীয় টেবিলে তাকে ফরেন কী (Foreign Key) বলা হয়।


৪। ই-আর ডায়াগ্রামে (ER Diagram) এনটিটি (Entity) প্রকাশের জন্য কোন প্রতীক ব্যবহৃত হয়?

ক) বৃত্ত (Circle)
খ) ত্রিভুজ (Triangle)
গ) আয়তক্ষেত্র (Rectangle)
ঘ) ডায়মন্ড (Diamond)

সঠিক উত্তর: গ) আয়তক্ষেত্র (Rectangle)

ব্যাখ্যা: ই-আর ডায়াগ্রামে আয়তক্ষেত্র বা Rectangle দিয়ে এনটিটি সেট প্রকাশ করা হয়।


৫। ই-আর ডায়াগ্রামে রিলেশনশিপ প্রকাশের জন্য কোন প্রতীক ব্যবহৃত হয়?

ক) ওভাল (Oval)
খ) ডায়মন্ড (Diamond)
গ) আয়তক্ষেত্র (Rectangle)
ঘ) সরলরেখা (Line)

সঠিক উত্তর: খ) ডায়মন্ড (Diamond)

ব্যাখ্যা: ডায়মন্ড বা রম্বস আকৃতির প্রতীক দিয়ে দুটি এনটিটির মধ্যে রিলেশনশিপ নির্দেশ করা হয়।


৬। "একজন ছাত্রের একটি মাত্র রোল নম্বর থাকে এবং একটি রোল নম্বর কেবল একজন ছাত্রেরই"—এটি কোন ধরনের রিলেশন?

ক) One-to-One
খ) One-to-Many
গ) Many-to-One
ঘ) Many-to-Many

সঠিক উত্তর: ক) One-to-One

ব্যাখ্যা: যখন একটি এনটিটির একটি মাত্র রেকর্ডের সাথে অন্য এনটিটির একটি মাত্র রেকর্ডের সম্পর্ক থাকে, তখন তা One-to-One রিলেশন।


৭। শিক্ষক ও ছাত্রের মধ্যে সাধারণত কোন ধরনের রিলেশনশিপ বিদ্যমান?

ক) One-to-One
খ) One-to-Many
গ) Many-to-Many
ঘ) None of these

সঠিক উত্তর: গ) Many-to-Many

ব্যাখ্যা: একজন শিক্ষক অনেক ছাত্রকে পড়ান এবং একজন ছাত্র অনেক শিক্ষকের কাছে পড়ে। তাই এটি Many-to-Many রিলেশনশিপ।


৮। ডেটাবেজে Parent টেবিল থেকে ডেটা মুছলে Child টেবিলের ডেটা অটোমেটিক মুছে যাওয়ার বৈশিষ্ট্যকে কী বলে?

ক) Data Security
খ) Cascade Delete
গ) Data Encryption
ঘ) Indexing

সঠিক উত্তর: খ) Cascade Delete

ব্যাখ্যা: Cascade Delete অপশন চালু থাকলে প্যারেন্ট টেবিলের কোনো রেকর্ড ডিলিট করলে তার সাথে সম্পর্কিত চাইল্ড টেবিলের রেকর্ডগুলোও স্বয়ংক্রিয়ভাবে ডিলিট হয়ে যায়।


৯। রিলেশনশিপের ডিগ্রি (Degree of Relationship) কত প্রকার?

ক) ২ প্রকার
খ) ৩ প্রকার
গ) ৪ প্রকার
ঘ) ৫ প্রকার

সঠিক উত্তর: খ) ৩ প্রকার

ব্যাখ্যা: রিলেশনশিপের ডিগ্রি মূলত ৩ প্রকার: ইউনারি (Unary), বাইনারি (Binary), এবং টারনারি (Ternary)।


১০। নিজের টেবিলের সাথেই নিজের রিলেশনকে কী বলা হয়?

ক) Binary Relation
খ) Self Join / Unary Relation
গ) Ternary Relation
ঘ) One-to-One Relation

সঠিক উত্তর: খ) Self Join / Unary Relation

ব্যাখ্যা: যখন কোনো এনটিটি নিজের সাথেই রিলেশন তৈরি করে, তখন তাকে ইউনারি (Unary) রিলেশনশিপ বা রিকার্সিভ রিলেশনশিপ বলা হয়।


১১। নিচের কোনটি কম্পোজিট প্রাইমারি কী (Composite Primary Key)-এর উদাহরণ?

ক) Roll
খ) Roll + RegNo
গ) Name
ঘ) DOB

সঠিক উত্তর: খ) Roll + RegNo

ব্যাখ্যা: যখন একটি ফিল্ড দিয়ে রেকর্ড ইউনিকলি শনাক্ত করা যায় না, তখন একাধিক ফিল্ড (যেমন Roll এবং RegNo) মিলে প্রাইমারি কী গঠন করা হয়, যাকে কম্পোজিট প্রাইমারি কী বলে।


১২। ডেটাবেজ রিলেশন তৈরির সুবিধা হলো—
i. ডেটা ডুপ্লিকেশন কমে
ii. ডেটার নিরাপত্তা বিঘ্নিত হয়
iii. সহজে রিপোর্ট তৈরি করা যায়

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: খ) i ও iii

ব্যাখ্যা: রিলেশনশিপের মাধ্যমে ডেটা রিডানডেন্সি বা ডুপ্লিকেশন কমানো যায় এবং একাধিক টেবিল থেকে তথ্য নিয়ে রিপোর্ট তৈরি সহজ হয়। নিরাপত্তা বিঘ্নিত হয় না, বরং বাড়ে।


১৩। দুটি টেবিলের মধ্যে Many-to-Many রিলেশনশিপ বাস্তবায়নের জন্য কয়টি টেবিল প্রয়োজন?

ক) ২টি
খ) ৩টি
গ) ৪টি
ঘ) ১টি

সঠিক উত্তর: খ) ৩টি

ব্যাখ্যা: দুটি টেবিলের মধ্যে সরাসরি M:M রিলেশন করা যায় না। এর জন্য একটি তৃতীয় টেবিল বা জাংশন টেবিল (Junction Table) প্রয়োজন হয়। তাই মোট ৩টি টেবিল লাগে।


নিচের উদ্দীপকটি পড়ে ১৪ ও ১৫ নং প্রশ্নের উত্তর দাও:
একটি কোম্পানির Department টেবিলে DeptID এবং Employee টেবিলে DeptID ফিল্ড রয়েছে। Department টেবিলের DeptID প্রাইমারি কী।

১৪। Employee টেবিলে DeptID ফিল্ডটিকে কী বলা হবে?

ক) প্রাইমারি কী
খ) অল্টারনেট কী
গ) ফরেন কী
ঘ) ক্যান্ডিডেট কী

সঠিক উত্তর: গ) ফরেন কী

ব্যাখ্যা: Department (প্যারেন্ট) টেবিলের প্রাইমারি কী DeptID যখন Employee (চাইল্ড) টেবিলে ব্যবহৃত হয়, তখন তা ফরেন কী হিসেবে গণ্য হয়।


১৫। টেবিল দুটির মধ্যে কোন ধরনের রিলেশনশিপ তৈরি করা সম্ভব?

ক) One-to-One
খ) One-to-Many
গ) Many-to-Many
ঘ) Many-to-One

সঠিক উত্তর: খ) One-to-Many

ব্যাখ্যা: একটি ডিপার্টমেন্টে অনেক এমপ্লোয়ি থাকতে পারে, কিন্তু একজন এমপ্লোয়ি একটি ডিপার্টমেন্টেই কাজ করে। তাই Department -> Employee রিলেশনটি One-to-Many (1:M)।


১৬। রেফারেন্সিয়াল ইন্টিগ্রিটি (Referential Integrity) নিশ্চিত করে—
i. প্যারেন্ট টেবিলে নেই এমন ডেটা চাইল্ড টেবিলে ইনপুট না দেওয়া
ii. ডেটাবেজের অসামঞ্জস্যতা দূর করা
iii. ডেটাবেজের সাইজ কমানো

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ক) i ও ii

ব্যাখ্যা: রেফারেন্সিয়াল ইন্টিগ্রিটির কাজ হলো ডেটার সঠিকতা ও সামঞ্জস্য বজায় রাখা। এটি ডেটাবেজের সাইজ কমানোর সাথে সরাসরি সম্পর্কিত নয়।


১৭। ই-আর ডায়াগ্রামে উপবৃত্ত বা ওভাল (Oval) দিয়ে কী বোঝানো হয়?

ক) এনটিটি
খ) রিলেশনশিপ
গ) অ্যাট্রিবিউট
ঘ) ডেটা টাইপ

সঠিক উত্তর: গ) অ্যাট্রিবিউট

ব্যাখ্যা: এনটিটির বৈশিষ্ট্য বা অ্যাট্রিবিউট (যেমন Name, Roll) প্রকাশ করতে ওভাল বা উপবৃত্ত ব্যবহার করা হয়।


১৮। নিচের কোনটি সঠিক রিলেশনশিপ?
ক) Mother - Child (1:1)
খ) Mother - Child (1:M)
গ) Teacher - Student (1:1)
ঘ) Person - NID (1:M)

সঠিক উত্তর: খ) Mother - Child (1:M)

ব্যাখ্যা: একজন মায়ের একাধিক সন্তান থাকতে পারে, তাই এটি One-to-Many (1:M) রিলেশনশিপ। বাকিগুলো ভুল (Person-NID হলো 1:1)।


১৯। রিলেশনাল ডেটাবেজে Null ভ্যালু গ্রহণ করে না কোন কী?

ক) Foreign Key
খ) Primary Key
গ) Secondary Key
ঘ) Candidate Key

সঠিক উত্তর: খ) Primary Key

ব্যাখ্যা: প্রাইমারি কী দ্বারা প্রতিটি রেকর্ডকে অদ্বিতীয়ভাবে শনাক্ত করা হয়, তাই এর মান কখনোই Null বা ফাঁকা হতে পারে না।


২০। দুটি টেবিলের মধ্যে রিলেশন তৈরির সময় উভয় টেবিলের কমন ফিল্ডের কী একই হতে হয়?

ক) ফিল্ড নেম (Field Name)
খ) ডেটা টাইপ ও সাইজ (Data Type & Size)
গ) ইনডেক্সিং (Indexing)
ঘ) ভ্যালু (Value)

সঠিক উত্তর: খ) ডেটা টাইপ ও সাইজ (Data Type & Size)

ব্যাখ্যা: রিলেশনশিপের জন্য কমন ফিল্ডের নাম ভিন্ন হতে পারে, কিন্তু ডেটা টাইপ এবং ফিল্ড সাইজ অবশ্যই হুবহু এক হতে হবে।


নিচের চিত্রটি লক্ষ্য কর এবং ২১ ও ২২ নং প্রশ্নের উত্তর দাও:
[Table-A: Student] ----< [Table-B: Result]

২১। চিত্রে কোন ধরনের রিলেশনশিপ দেখানো হয়েছে?

ক) One-to-One
খ) One-to-Many
গ) Many-to-Many
ঘ) Many-to-One

সঠিক উত্তর: খ) One-to-Many

ব্যাখ্যা: চিত্রে Student টেবিল থেকে Result টেবিলের দিকে 'Fork' বা 'Crow's foot' চিহ্ন (----<) নির্দেশ করছে যে একজন ছাত্রের একাধিক রেজাল্ট রেকর্ড থাকতে পারে। এটি One-to-Many রিলেশন।


২২। এই রিলেশনশিপের ফলে—
i. একজন ছাত্রের একাধিক রেজাল্ট থাকতে পারবে
ii. একটি রেজাল্ট একাধিক ছাত্রের হতে পারবে
iii. স্টুডেন্ট টেবিলের ডেটা ডিলিট হলে রেজাল্ট টেবিলের ডেটাও ডিলিট হতে পারে

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: খ) i ও iii

ব্যাখ্যা: ১:এম রিলেশনে প্যারেন্ট (Student) এর একটি রেকর্ডের বিপরীতে চাইল্ড (Result) এ একাধিক রেকর্ড থাকে। Cascade Delete থাকলে স্টুডেন্ট ডিলিট হলে তার রেজাল্টও ডিলিট হয়। কিন্তু একটি রেজাল্ট (নির্দিষ্ট রেকর্ড) একাধিক ছাত্রের হয় না।


২৩। ডেটাবেজ রিলেশনশিপের ক্ষেত্রে 'Degree' বলতে কী বোঝায়?

ক) রিলেশনে অংশগ্রহণকারী এনটিটির সংখ্যা
খ) টেবিলের রো সংখ্যা
গ) টেবিলের কলাম সংখ্যা
ঘ) প্রাইমারি কী-এর সংখ্যা

সঠিক উত্তর: ক) রিলেশনে অংশগ্রহণকারী এনটিটির সংখ্যা

ব্যাখ্যা: একটি রিলেশনশিপে কতটি এনটিটি সেট বা টেবিল অংশগ্রহণ করছে, তার সংখ্যাকে রিলেশনশিপের ডিগ্রি বলা হয় (যেমন—বাইনারি রিলেশনে ডিগ্রি ২)।


২৪। নিচের কোনটি One-to-One রিলেশনশিপের বাস্তব উদাহরণ?

ক) দেশ ও রাজধানী
খ) লেখক ও বই
গ) কাস্টমার ও অর্ডার
ঘ) ছাত্র ও শিক্ষক

সঠিক উত্তর: ক) দেশ ও রাজধানী

ব্যাখ্যা: একটি দেশের একটিই রাজধানী থাকে এবং একটি রাজধানী একটি দেশেরই হয়। তাই এটি One-to-One রিলেশনশিপ।


২৫। SQL-এ দুটি টেবিল থেকে ডেটা একত্রে দেখার জন্য কোন কমান্ড ব্যবহার করা হয়?

ক) ALTER
খ) JOIN
গ) UPDATE
ঘ) DELETE

সঠিক উত্তর: খ) JOIN

ব্যাখ্যা: SQL-এ JOIN কমান্ড ব্যবহার করে রিলেশনযুক্ত একাধিক টেবিল থেকে ডেটা একত্রিত করে প্রদর্শন করা হয়।