৬.৩ ডেটাবেজ কী (Keys in Database)

এইচএসসি আইসিটি অধ্যায় ৬ এর অত্যন্ত গুরুত্বপূর্ণ টপিক: ডেটাবেজ কী (Key)। প্রাইমারি কী, ফরেন কী, কম্পোজিট কী এবং এদের পার্থক্য নিয়ে বিস্তারিত আলোচনা ও উদাহরণ।

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

৬.৩ ডেটাবেজ কী (Keys in Database)

  1. ডেটাবেজ কী (Keys in Database)
  2. কেন আমাদের 'কী' (Key) প্রয়োজন?
  3. ডেটাবেজ কী (Key) এর সংজ্ঞা ও প্রকারভেদ
  4. প্রাইমারি কী (Primary Key) ⭐
  5. কম্পোজিট প্রাইমারি কী (Composite Primary Key)
  6. ফরেন কী (Foreign Key) 🔗
  7. পার্থক্য: প্রাইমারি কী vs ফরেন কী
  8. অন্যান্য কী: ক্যান্ডিডেট কী (Candidate Key)
  9. নিজে চেষ্টা করো: কোনটি কোন কী?
  10. সারসংক্ষেপ
  11. ধন্যবাদ!

ডেটাবেজ কী (Keys in Database)

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

১। ডেটাবেজ 'কী' (Key) এর ধারণা ও প্রয়োজনীয়তা ব্যাখ্যা করতে পারব।
২। প্রাইমারি কী (Primary Key) এর বৈশিষ্ট্য বর্ণনা করতে পারব।
৩। কম্পোজিট প্রাইমারি কী এবং ফরেন কী (Foreign Key) এর ব্যবহার ব্যাখ্যা করতে পারব।
৪। বিভিন্ন প্রকার কী-এর মধ্যে পার্থক্য ও সম্পর্ক বিশ্লেষণ করতে পারব।

আসসালামু আলাইকুম প্রিয় শিক্ষার্থীরা, আশা করি তোমরা সবাই ভালো আছো। এইচএসসি আইসিটি কোর্সের চ্যাপ্টার ৬-এর নতুন একটি লেকচারে তোমাদের স্বাগতম। আজকের টপিকটা ডেটাবেজ ম্যানেজমেন্টের জন্য সুপার ইম্পরট্যান্ট। আজ আমরা জানব 'ডেটাবেজ কী' বা Keys in Database সম্পর্কে। ডেটাবেজে সঠিকভাবে ডেটা খুঁজে পেতে এবং টেবিলের মধ্যে সম্পর্ক তৈরি করতে এই 'কী' গুলো চাবিকাঠির মতোই কাজ করে। চলো দেখে নিই, আজকের ক্লাস শেষে আমরা ঠিক কী কী শিখতে পারব।

কেন আমাদের 'কী' (Key) প্রয়োজন?

দৃশ্যকল্প:
- একটি ক্লাসে 'রহিম' নামের ৩ জন ছাত্র আছে।
- শিক্ষক 'রহিম' বলে ডাকলে কে সাড়া দেবে? সবাই বিভ্রান্ত হবে।
- সমাধান: রোল নম্বর (Roll No) দিয়ে ডাকা (যেমন: রোল ১০১)।

বাস্তব উদাহরণ:
- মোবাইল নম্বর (সবার আলাদা)
- জাতীয় পরিচয়পত্র বা NID
- গাড়ির রেজিস্ট্রেশন নম্বর

ডেটাবেজেও লক্ষ লক্ষ রেকর্ডের মধ্যে নির্দিষ্ট কাউকে খুঁজে পেতে এমন একটি অদ্বিতীয় (Unique) পরিচিতি দরকার।

আচ্ছা, মূল পড়ায় যাওয়ার আগে একটা সিনারিও কল্পনা করো। ধরো, তোমাদের ক্লাসে 'রহিম' নামের তিনজন ছাত্র আছে। এখন স্যার যদি ক্লাসে এসে শুধু 'রহিম' বলে ডাক দেন, কী হবে? তিনজনই কনফিউজড হয়ে যাবে, তাই না? কেউ বুঝবে না স্যার আসলে কাকে ডাকছেন। কিন্তু স্যার যদি বলেন 'রোল ১০১', তাহলে কিন্তু আর কোনো কনফিউশন থাকবে না। ঠিক ওই একজন ছাত্রই দাঁড়াবে। এই যে 'রোল নম্বর', এটা দিয়ে আমরা রহিমদের আলাদা করলাম, এটাই হলো 'কী' বা Key-এর মূল কাজ। ডেটাবেজে হাজার হাজার তথ্যের মধ্যে নির্দিষ্ট কাউকে খুঁজে বের করতে আমাদের এমন কিছু ইউনিক বা অদ্বিতীয় আইডেন্টিফায়ার লাগে।

ডেটাবেজ কী (Key) এর সংজ্ঞা ও প্রকারভেদ

সংজ্ঞা:
যে ফিল্ড বা ফিল্ডসমূহের মান দিয়ে কোনো টেবিলের রেকর্ডগুলোকে অদ্বিতীয়ভাবে (Uniquely) শনাক্ত করা যায়, তাকে কী (Key) বলা হয়।

বিভিন্ন প্রকার 'কী':
১. প্রাইমারি কী (Primary Key) - সবচেয়ে গুরুত্বপূর্ণ
২. কম্পোজিট প্রাইমারি কী (Composite Primary Key)
৩. ফরেন কী (Foreign Key) - রিলেশন তৈরির জন্য
৪. ক্যান্ডিডেট কী (Candidate Key)

আজ আমরা এই চার প্রকার কী সম্পর্কে বিস্তারিত জানব।

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

প্রাইমারি কী (Primary Key) ⭐

সংজ্ঞা:
যে ফিল্ডের মান প্রতিটি রেকর্ডের জন্য ভিন্ন এবং কখনো ফাঁকা (Null) হতে পারে না, তাকে প্রাইমারি কী বলে।

মূল বৈশিষ্ট্য:
১. ইউনিক (Unique): কোনো ডুপ্লিকেট মান থাকতে পারবে না।
২. নট নাল (Not Null): এই ফিল্ড কখনো ফাঁকা রাখা যাবে না।
৩. একটিই: একটি টেবিলে কেবল একটি প্রাইমারি কী থাকে।

উদাহরণ: StudentID, Roll No, NID, EmployeeID।

প্রথমে আসি প্রাইমারি কী-তে। এটা হলো একটা টেবিলের হিরো! সহজ কথায়, যেই কলামটা দিয়ে আমরা প্রত্যেকটা রেকর্ডকে আলাদা করতে পারি। এর দুটো প্রধান শর্ত আছে। এক, এটা ইউনিক হতে হবে—মানে একজনের রোল নম্বরের সাথে আরেকজনের রোল নম্বর মিলবে না। দুই, এটা কখনো ফাঁকা বা নাল (Null) রাখা যাবে না। তুমি কি কখনো শুনেছ যে ক্লাসের কোনো স্টুডেন্টের রোল নম্বর নেই? না, সবারই থাকে। তাই রোল নম্বর বা স্টুডেন্ট আইডি হলো প্রাইমারি কী-এর পারফেক্ট উদাহরণ। মনে রাখবে, একটা টেবিলে কিন্তু একটাই প্রাইমারি কী থাকবে।

কম্পোজিট প্রাইমারি কী (Composite Primary Key)

সমস্যা:
কখনো কখনো একটিমাত্র ফিল্ড দিয়ে রেকর্ড ইউনিক করা যায় না।
- যেমন: 'Result' টেবিলে একজন ছাত্রের রোল (101) অনেকবার আসতে পারে (বাংলা, ইংরেজি, আইসিটি বিষয়ের জন্য)।

সমাধান:
একাধিক ফিল্ড মিলে ইউনিক করা।
- Roll (101) + Subject (Bangla) = একটি ইউনিক রেকর্ড।
- Roll (101) + Subject (English) = আরেকটি ইউনিক রেকর্ড।

সংজ্ঞা:
একাধিক ফিল্ডের সমন্বয়ে গঠিত প্রাইমারি কী-কে কম্পোজিট প্রাইমারি কী বলে।

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

ফরেন কী (Foreign Key) 🔗

সংজ্ঞা:
কোনো টেবিলের একটি ফিল্ড যদি অন্য কোনো টেবিলের প্রাইমারি কী হয়, তবে তাকে প্রথম টেবিলের ফরেন কী বলে।

কাজ ও বৈশিষ্ট্য:
- সম্পর্ক (Relationship): দুটি টেবিলের মধ্যে যোগাযোগ তৈরি করে।
- ডুপ্লিকেট: একই মান একাধিকবার থাকতে পারে।
- রেফারেন্স: এটি প্যারেন্ট টেবিলের (যেখানে এটি প্রাইমারি কী) ডেটাকে রেফার করে।

চিত্রে: Student টেবিলের 'Roll' (Primary Key) এবং Result টেবিলের 'Roll' (Foreign Key)।

এবার আসি খুবই ইন্টারেস্টিং একটা বিষয়ে—ফরেন কী। নাম শুনেই বুঝতে পারছো, এটা 'ফরেন' বা বিদেশী। অর্থাৎ, এই কী আসলে অন্য কোনো টেবিলের মালিক, কিন্তু এই টেবিলে বেড়াতে এসেছে। ধরো, আমাদের স্টুডেন্ট টেবিলে রোল নম্বর আছে, যেটা প্রাইমারি কী। এখন রেজাল্ট টেবিলেও আমরা রোল নম্বর ব্যবহার করছি যাতে বোঝা যায় রেজাল্টটা কার। রেজাল্ট টেবিলে এই রোল নম্বরটাই হলো ফরেন কী। এই ফরেন কী-এর মাধ্যমেই আসলে দুটো টেবিলের মধ্যে সম্পর্ক বা রিলেশন তৈরি হয়। ফরেন কী কিন্তু ইউনিক হওয়ার দরকার নেই, একজনের রেজাল্ট যেমন অনেকগুলো হতে পারে, তেমনি ফরেন কী-ও ডুপ্লিকেট হতে পারে।

পার্থক্য: প্রাইমারি কী vs ফরেন কী

প্রাইমারি কী (Primary Key)
১. টেবিলের রেকর্ডকে অদ্বিতীয়ভাবে (Uniquely) শনাক্ত করে।
২. কখনোই নাল (Null) বা ফাঁকা হতে পারে না।
৩. টেবিলে মাত্র একটি প্রাইমারি কী থাকে।
৪. ডুপ্লিকেট ভ্যালু গ্রহণ করে না।
৫. একে প্যারেন্ট কী ও বলা যেতে পারে।

চলো এবার ঝটপট প্রাইমারি কী আর ফরেন কী-এর পার্থক্যটা দেখে নিই। এটা ক্লিয়ার থাকা খুব জরুরি। প্রাইমারি কী হলো টেবিলের রাজা, সে ইউনিক হবেই এবং ফাঁকা থাকবে না। আর ফরেন কী হলো মেহমান, সে ডুপ্লিকেট হতে পারে, এমনকি কখনো কখনো ফাঁকাও থাকতে পারে। একটা টেবিলে রাজা অর্থাৎ প্রাইমারি কী একটাই থাকবে, কিন্তু মেহমান বা ফরেন কী একাধিক থাকতে পারে। প্রাইমারি কী নিজেই নিজের পরিচয়, আর ফরেন কী অন্য টেবিলের প্রাইমারি কী-কে রেফারেন্স হিসেবে ব্যবহার করে।

অন্যান্য কী: ক্যান্ডিডেট কী (Candidate Key)

ক্যান্ডিডেট কী (Candidate Key):
- একটি টেবিলে একাধিক ফিল্ড প্রাইমারি কী হওয়ার যোগ্যতা রাখতে পারে। এদের সবাইকে ক্যান্ডিডেট কী বলে।
- উদাহরণ: স্টুডেন্ট টেবিলে 'Roll', 'Registration_No' এবং 'NID'—সবগুলোই ইউনিক। অর্থাৎ সবাই প্রাইমারি কী হওয়ার যোগ্য।

প্রাইমারি ও অল্টারনেট কী:
- ক্যান্ডিডেট কীগুলোর মধ্য থেকে আমরা ১টিকে প্রাইমারি কী হিসেবে বেছে নিই।
- বাকিগুলোকে বলা হয় অল্টারনেট কী (Alternate Key)।

মাঝেমধ্যে দেখবে একটা টেবিলে একাধিক ফিল্ড আছে যারা সবাই ইউনিক। যেমন ধরো, স্টুডেন্ট টেবিলে রোল নম্বর ইউনিক, রেজিস্ট্রেশন নম্বর ইউনিক, আবার এনআইডি কার্ড নম্বরও ইউনিক। এরা সবাই প্রাইমারি কী হওয়ার যোগ্য। এদের সবাইকে আমরা বলি 'ক্যান্ডিডেট কী'। যেমন নির্বাচনে অনেক ক্যান্ডিডেট থাকে, তাই না? এখান থেকে আমরা সুবিধামতো একজনকে প্রাইমারি কী সিলেক্ট করি। আর বাকি যারা সিলেক্ট হলো না, কিন্তু যোগ্যতা ছিল, তাদের বলা হয় 'অল্টারনেট কী' বা বিকল্প কী। বিষয়টা কিন্তু খুব সহজ!

নিজে চেষ্টা করো: কোনটি কোন কী?

টেবিল: Employee

Emp_ID Name Email Dept_ID
E-01 Rahim a@mail.com D-10
E-02 Karim b@mail.com D-10

প্রশ্ন:
১। এই টেবিলের প্রাইমারি কী কোনটি?
২। ক্যান্ডিডেট কী আর কোনটি হতে পারে?
৩। Dept_ID কেন ফরেন কী হতে পারে?

এবার তোমাদের পালা। ভিডিওটা একটু পজ করো এবং এই টেবিলটার দিকে তাকাও। এটা একটা এমপ্লয়ি টেবিল। বলতো এখানে প্রাইমারি কী কোনটা? ঠিক ধরেছ, Emp_ID হলো প্রাইমারি কী। আচ্ছা, এখানে কি আরও কোনো ক্যান্ডিডেট কী আছে? হ্যাঁ, Email-ও কিন্তু ইউনিক, তাই এটাও ক্যান্ডিডেট কী হতে পারে। আর Dept_ID? দেখো, এটা ডুপ্লিকেট হচ্ছে, মানে অনেক এমপ্লয়ি একই ডিপার্টমেন্টে কাজ করে। এটা আসলে ডিপার্টমেন্ট টেবিল থেকে এসেছে, তাই এটি ফরেন কী। আশা করি এখন তোমরা সহজেই এগুলো চিনতে পারবে।

সারসংক্ষেপ

আজকের লেকচারে আমরা যা শিখলাম:

  • কী (Key): ডেটাবেজের রেকর্ড শনাক্তকরণ ও রিলেশন তৈরির মাধ্যম।
  • প্রাইমারি কী: ইউনিক এবং নাল নয়। টেবিলের মূল পরিচয় বহনকারী।
  • কম্পোজিট কী: যখন একাধিক ফিল্ড মিলে ইউনিক রেকর্ড তৈরি করে।
  • ফরেন কী: দুটি টেবিলের মধ্যে রিলেশনশিপ বা সম্পর্ক তৈরি করে।
  • ক্যান্ডিডেট কী: প্রাইমারি কী হওয়ার যোগ্য সকল ফিল্ড।

টিপস: একটি ভালো ডেটাবেজ ডিজাইনের জন্য সঠিক প্রাইমারি কী এবং ফরেন কী নির্বাচন করা অত্যন্ত জরুরি।

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

ধন্যবাদ!

পরবর্তী ক্লাসে আমরা দেখব:
- ওয়ান-টু-ওয়ান (1:1) রিলেশনশিপ
- ওয়ান-টু-মেনি (1:N) রিলেশনশিপ
- মেনি-টু-মেনি (M:N) রিলেশনশিপ

আজকের ক্লাসের উপর কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাও। সাথে থাকার জন্য ধন্যবাদ।

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

৬.৩ ডেটাবেজ কী (Keys): প্রকারভেদ ও ব্যবহার

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

কলেজে বা স্কুলে তোমাদের প্রত্যেকের একটি নির্দিষ্ট রোল নম্বর (Roll Number) থাকে। ভেবে দেখেছো কেন? একই ক্লাসে একই নামের একাধিক ছাত্রছাত্রী থাকতে পারে, তাদের বাবার নামও এক হতে পারে, এমনকি জন্ম তারিখও মিলে যেতে পারে। কিন্তু রোল নম্বর কখনোই দু'জনের এক হয় না। এই রোল নম্বর দিয়েই তোমাকে অদ্বিতীয়ভাবে বা সম্পূর্ণ আলাদাভাবে চেনা যায়।

ডেটাবেজ ম্যানেজমেন্ট সিস্টেমেও ঠিক এই ধারণাটিই কাজ করে। হাজার হাজার তথ্যের ভিড়ে কোনো নির্দিষ্ট তথ্যকে নির্ভুলভাবে খুঁজে বের করতে এবং এক টেবিলের সাথে অন্য টেবিলের সম্পর্ক তৈরি করতে আমরা বিশেষ কিছু ফিল্ড ব্যবহার করি। এদের বলা হয় 'কী' (Key)। আজকের পাঠে আমরা জানব ডেটাবেজ 'কী' কত প্রকার, প্রাইমারি কী এবং ফরেন কী-এর মধ্যে পার্থক্য কী এবং কীভাবে ডেটাবেজে তথ্যের সত্যতা বা Referential Integrity নিশ্চিত করা হয়।

ডেটাবেজ কী (Key): সংজ্ঞা ও প্রয়োজনীয়তা

ডেটাবেজে তথ্যের বিশৃঙ্খলা এড়াতে এবং প্রতিটি রেকর্ডকে আলাদা করতে 'কী' অপরিহার্য। এটি মূলত এক বা একাধিক ফিল্ডের সমষ্টি।

সংজ্ঞা (Definition): ডেটাবেজ টেবিলের যে ফিল্ড বা ফিল্ডসমষ্টির মান দ্বারা প্রতিটি রেকর্ডকে অদ্বিতীয়ভাবে (Uniquely) শনাক্ত করা যায় এবং যার মাধ্যমে একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করা যায়, তাকে কী (Key) বলা হয়।

একটি ডেটাবেজ সিস্টেমে 'কী' ব্যবহারের প্রধান ৩টি কারণ হলো:
১. রেকর্ড শনাক্তকরণ (Record Identification): লক্ষ লক্ষ ডেটার মধ্য থেকে সুনির্দিষ্ট কোনো ব্যক্তির তথ্য খুঁজে বের করা।
২. রিলেশনশিপ তৈরি (Establish Relationship): দুটি ভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন করা (যেমন: ছাত্রের ব্যক্তিগত তথ্যের সাথে তার রেজাল্টের সংযোগ)।
৩. ডেটা ইন্টিগ্রিটি (Data Integrity): তথ্যের সঠিকতা বজায় রাখা, যাতে ডুপ্লিকেট বা ভুল তথ্য প্রবেশ করতে না পারে।

গুরুত্বপূর্ণ (Important): একটি 'কী' শুধুমাত্র একটি ফিল্ড দিয়েও গঠিত হতে পারে (যেমন: Roll), আবার একাধিক ফিল্ডের সমন্বয়েও গঠিত হতে পারে (যেমন: Roll + Subject_Code)।

প্রাইমারি কী (Primary Key): বৈশিষ্ট্য ও নির্বাচন

ডেটাবেজ টেবিলের সবচেয়ে গুরুত্বপূর্ণ উপাদান হলো প্রাইমারি কী। একে টেবিলের 'পরিচয়পত্র' বলা যেতে পারে।

সংজ্ঞা (Definition): কোনো ফাইলে বা টেবিলে যে ফিল্ডের মান দ্বারা প্রতিটি রেকর্ডকে সম্পূর্ণ আলাদা বা অদ্বিতীয়ভাবে শনাক্ত করা যায় এবং যার মান কখনোই শূন্য বা নাল (Null) থাকে না, তাকে প্রাইমারি কী (Primary Key) বলে।

একটি ফিল্ডকে প্রাইমারি কী হিসেবে নির্বাচন করতে হলে তাকে অবশ্যই দুটি শর্ত পূরণ করতে হবে:
- Uniqueness (অদ্বিতীয়তা): এই ফিল্ডের মান কখনো পুনরাবৃত্তি হতে পারবে না। যেমন: রোল ১০১ ক্লাসে একজনই থাকবে।
- Not Null (মান আবশ্যিক): এই ফিল্ডের মান কখনোই ফাঁকা রাখা যাবে না। অর্থাৎ, প্রতিটি রেকর্ডের অবশ্যই একটি প্রাইমারি কী ভ্যালু থাকতে হবে। একে Entity Integrity Rule বলা হয়।

পরীক্ষার টিপস (Exam Tip): উদ্দীপকে যদি দেখো কোনো ফিল্ডের নামের নিচে আন্ডারলাইন (Underline) করা আছে, তবে বুঝবে সেটিই প্রাইমারি কী। আর যদি আন্ডারলাইন না থাকে, তবে তোমাকে এমন একটি ফিল্ড খুঁজতে হবে যার মান সবার জন্য আলাদা (যেমন: Roll, Registration No, ID)। 'Name' বা 'Address' কখনো প্রাইমারি কী হয় না কারণ একই নামের একাধিক ব্যক্তি থাকতে পারে।

কম্পোজিট প্রাইমারি কী (Composite Primary Key)

কখনো কখনো একটি মাত্র ফিল্ড দিয়ে প্রতিটি রেকর্ডকে আলাদা করা সম্ভব হয় না। তখন একাধিক ফিল্ডের সাহায্য নিতে হয়।

ধরা যাক, একটি 'Result Sheet' টেবিল। এখানে একজন ছাত্র একাধিক বিষয়ে পরীক্ষা দিতে পারে।
- যদি ছাত্রের রোল ১০১ হয়, সে বাংলায় (Code: 101) পরীক্ষা দিয়েছে।
- আবার ওই একই ছাত্র (রোল ১০১) ইংরেজিতেও (Code: 102) পরীক্ষা দিয়েছে।

এখানে শুধু 'Roll' দিয়ে রেকর্ড আলাদা করা যাবে না কারণ রোল ১০১ দুইবার এসেছে। আবার শুধু 'Subject Code' দিয়েও যাবে না। কিন্তু যদি আমরা Roll এবং Subject Code-কে একত্রে বিবেচনা করি, তবে প্রতিটি কম্বিনেশন ইউনিক হবে।

Roll Subject Code Marks
101 101 80
101 102 75
102 101 82

উপরের টেবিলে (101, 101) এবং (101, 102) সম্পূর্ণ আলাদা। তাই এখানে Roll + Subject Code মিলে কম্পোজিট প্রাইমারি কী গঠন করেছে।

সংজ্ঞা (Definition): যখন কোনো টেবিলে একক কোনো ফিল্ড প্রাইমারি কী হওয়ার যোগ্যতা রাখে না, তখন দুই বা ততোধিক ফিল্ডের সমন্বয়ে যে প্রাইমারি কী গঠন করা হয়, তাকে কম্পোজিট প্রাইমারি কী (Composite Primary Key) বলে।

সুপার কী (Super Key): যেখান থেকে সবকিছুর শুরু

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

ডেটাবেজ কী-এর হায়ারার্কি বা ক্রমবিন্যাস

সংজ্ঞা (Definition): কোনো টেবিলে যে একটি ফিল্ড বা একাধিক ফিল্ডের সমষ্টির মাধ্যমে রেকর্ডগুলোকে অদ্বিতীয়ভাবে শনাক্ত করা যায়, তাকে সুপার কী (Super Key) বলে।

সম্পর্কটি বুঝো:
- মনে করো একটি টেবিলে Roll, Registration_No, এবং NID আছে।
- Roll দিয়ে সবাইকে আলাদা করা যায়। তাই Roll একটি সুপার কী।
- (Roll + Name) দিয়েও সবাইকে আলাদা করা যায় (কারণ রোল আলাদা)। তাই (Roll + Name)-ও একটি সুপার কী।
- কিন্তু Name একা সুপার কী নয়, কারণ নাম ডুপ্লিকেট হতে পারে।

মনে রাখবে: সকল প্রাইমারি কী-ই সুপার কী, কিন্তু সকল সুপার কী প্রাইমারি কী নয়। সুপার কী হলো সবচেয়ে বড় সেট (Superset)।

ক্যান্ডিডেট কী এবং অল্টারনেট কী

একটি টেবিলে একাধিক ফিল্ড থাকতে পারে যা প্রাইমারি কী হওয়ার যোগ্য। এদের বলা হয় ক্যান্ডিডেট কী (Candidate Key)

উদাহরণস্বরূপ, একটি 'Student' টেবিলে নিচের তিনটি ফিল্ডই ইউনিক হতে পারে:
১. Roll No
২. Registration No
৩. NID No

এই তিনটিই Candidate Key। এখন ডেটাবেজ অ্যাডমিনিস্ট্রেটর হিসেবে তুমি যদি Roll No-কে Primary Key হিসেবে বেছে নাও, তবে বাকি দুটি (Registration NoNID No) হয়ে যাবে Alternate Key

$$Candidate\ Keys = Primary\ Key + Alternate\ Keys$$

সংজ্ঞা (Definition):
- ক্যান্ডিডেট কী: কোনো টেবিলে প্রাইমারি কী হওয়ার যোগ্যতা রাখে এমন সকল ফিল্ডকে ক্যান্ডিডেট কী বলে।
- অল্টারনেট কী: ক্যান্ডিডেট কীগুলোর মধ্য থেকে যেটিকে প্রাইমারি কী হিসেবে নির্বাচন করা হয়, সেটি ছাড়া বাকি ক্যান্ডিডেট কীগুলোকে অল্টারনেট কী বলে।

ফরেন কী (Foreign Key) ও রেফারেন্সিয়াল ইন্টিগ্রিটি

রিলেশনাল ডেটাবেজের মূল শক্তি হলো টেবিলগুলোর মধ্যে সম্পর্ক তৈরি করা। এই সম্পর্ক তৈরির কাজটি করে ফরেন কী

সংজ্ঞা (Definition): কোনো টেবিলের একটি ফিল্ড বা ফিল্ডসমষ্টি যদি অন্য কোনো টেবিলের প্রাইমারি কী (Primary Key) হয় এবং দুটি টেবিলের মধ্যে সম্পর্ক সৃষ্টি করে, তবে প্রথম টেবিলের ঐ ফিল্ডকে ফরেন কী (Foreign Key) বলে।

ফরেন কী এবং প্যারেন্ট-চাইল্ড টেবিলের সম্পর্ক

উদাহরণ ও ব্যাখ্যা:
ধরি, আমাদের দুটি টেবিল আছে:
১. Student Table (Parent Table): এখানে Roll হলো প্রাইমারি কী।
২. Result Table (Child Table): এখানেও Roll নামের একটি কলাম আছে যা দিয়ে বুঝানো হয় রেজাল্টটি কোন ছাত্রের।

এখানে Result Table-এর Roll হলো ফরেন কী, কারণ এটি Student Table-এর Roll (প্রাইমারি কী)-কে নির্দেশ করছে।

রেফারেন্সিয়াল ইন্টিগ্রিটি (Referential Integrity)

এটি ডেটাবেজের একটি অত্যন্ত গুরুত্বপূর্ণ কনসেপ্ট যা 'খ' ইউনিটের প্রশ্নের জন্য জরুরি।

সংজ্ঞা (Definition): রেফারেন্সিয়াল ইন্টিগ্রিটি হলো এমন একটি নিয়ম বা কনস্ট্রেইন্ট (Constraint) যা নিশ্চিত করে যে, ফরেন কী-এর মান অবশ্যই সংশ্লিষ্ট প্যারেন্ট টেবিলের প্রাইমারি কী-তে বিদ্যমান থাকতে হবে।

সহজ কথায়: তুমি Result Table-এ এমন কোনো ছাত্রের রোল নম্বর এন্ট্রি দিতে পারবে না (যেমন: রোল ৫০০), যে ছাত্রটি আসলে Student Table-এ ভর্তিই নেই। অর্থাৎ, প্যারেন্ট টেবিলে অস্তিত্ব নেই এমন কোনো ডেটা চাইল্ড টেবিলে ইনপুট দেওয়া যাবে না। এটাই রেফারেন্সিয়াল ইন্টিগ্রিটি।

পার্থক্য মনে রাখার কৌশল:
- প্রাইমারি কী = নিজের টেবিলের রাজা (Unique identifier)।
- ফরেন কী = অন্য রাজ্যের দূত (Connector)।
- প্রাইমারি কী ফাঁকা (Null) হতে পারে না, কিন্তু ফরেন কী ফাঁকা হতে পারে (যদি সম্পর্ক ঐচ্ছিক হয়)।

পার্থক্য: প্রাইমারি কী বনাম ফরেন কী

পরীক্ষায় এই পার্থক্যটি প্রায়ই আসে। নিচের ছকটি ভালোভাবে আয়ত্ত করো:

বৈশিষ্ট্য প্রাইমারি কী (Primary Key) ফরেন কী (Foreign Key)
১. সংজ্ঞা যে ফিল্ড রেকর্ডকে অদ্বিতীয়ভাবে শনাক্ত করে। যে ফিল্ড অন্য টেবিলের প্রাইমারি কী-এর সাথে সম্পর্ক তৈরি করে।
২. অদ্বিতীয়তা এর মান অবশ্যই ইউনিক বা অদ্বিতীয় হতে হবে। এর মান ডুপ্লিকেট হতে পারে (একই ছাত্রের একাধিক রেজাল্ট থাকতে পারে)।
৩. নাল ভ্যালু এর মান কখনোই নাল (Null) বা ফাঁকা হতে পারে না। এর মান নাল (Null) হতে পারে।
৪. সংখ্যা একটি টেবিলে মাত্র ১টি প্রাইমারি কী থাকতে পারে। একটি টেবিলে একাধিক ফরেন কী থাকতে পারে।
৫. ভূমিকা এটি টেবিলের ডেটা আইডেন্টিফাই করে। এটি টেবিলগুলোর মধ্যে রিলেশনশিপ তৈরি করে।
৬. অবস্থান এটি সাধারণত প্যারেন্ট টেবিলে থাকে। এটি চাইল্ড টেবিলে থাকে।

সৃজনশীল প্রশ্নের প্রস্তুতি ও টিপস

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

সাধারণ ভুল:
- ছাত্ররা প্রায়ই Name-কে প্রাইমারি কী মনে করে। মনে রাখবে, নাম ডুপ্লিকেট হয়, তাই এটি প্রাইমারি কী নয়।
- কম্পোজিট কী লেখার সময় দুটি ফিল্ডের নাম উল্লেখ করতে ভুলে যায়।

সংক্ষিপ্ত সারাংশ (Quick Revision):
- Primary Key: Unique + Not Null. (উদাহরণ: Roll)।
- Composite Key: একাধিক ফিল্ড মিলে যখন ইউনিক হয়। (উদাহরণ: Roll + Subject Code)।
- Foreign Key: অন্য টেবিলের প্রাইমারি কী, যা রিলেশন তৈরি করে।
- Candidate Key: যারা প্রাইমারি কী হওয়ার যোগ্য।
- Super Key: যেকোনো কম্বিনেশন যা ইউনিক (প্রাইমারি কী-এর সুপারসেট)।

পরিভাষা (Glossary)

পরিভাষা (Term) সংজ্ঞা (Definition)
প্রাইমারি কী (Primary Key) রেকর্ড অদ্বিতীয়ভাবে শনাক্তকারী মূল ফিল্ড।
ফরেন কী (Foreign Key) অন্য টেবিলের প্রাইমারি কী যা বর্তমান টেবিলে সম্পর্ক স্থাপনে ব্যবহৃত হয়।
কম্পোজিট কী (Composite Key) একাধিক ফিল্ডের সমন্বয়ে গঠিত প্রাইমারি কী।
রেফারেন্সিয়াল ইন্টিগ্রিটি রিলেশনাল ডেটাবেজে ডেটার সঠিকতা ও সামঞ্জস্য বজায় রাখার নিয়ম।
ক্যান্ডিডেট কী প্রাইমারি কী হওয়ার যোগ্য ফিল্ডসমূহ।

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

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

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

একটি কলেজের ডেটাবেজ ম্যানেজমেন্ট সিস্টেমে শিক্ষার্থীদের তথ্য ও ফলাফল সংরক্ষণের জন্য দুটি টেবিল তৈরি করা হলো:

Table-1: Students
| Roll | Name | Address |
| :--- | :--- | :--- |
| 101 | Rahim | Dhaka |
| 102 | Karim | Sylhet |

Table-2: Results
| Roll | Subject | GPA |
| :--- | :--- | :--- |
| 101 | Bangla | 5.00 |
| 101 | English | 4.00 |
| 102 | Bangla | 4.50 |

(ক) প্রাইমারি কী (Primary Key) কাকে বলে?
(খ) কম্পোজিট প্রাইমারি কী কেন ব্যবহার করা হয়?
(গ) উদ্দীপকের 'Results' টেবিলে কোন ফিল্ডটি ফরেন কী (Foreign Key) এবং কেন? ব্যাখ্যা কর।
(ঘ) 'Students' টেবিলে 'Roll' ফিল্ডটিকে প্রাইমারি কী হিসেবে নির্বাচন করার যৌক্তিকতা বিশ্লেষণ কর।

উত্তর

(ক) যে ফিল্ড বা ফিল্ডসমষ্টির মান দ্বারা ডেটাবেজ টেবিলের প্রতিটি রেকর্ডকে অদ্বিতীয়ভাবে বা ইউনিকভাবে শনাক্ত করা যায়, তাকে প্রাইমারি কী (Primary Key) বলে।

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

(গ) উদ্দীপকের 'Results' টেবিলে 'Roll' ফিল্ডটি হলো ফরেন কী (Foreign Key)।

কারণ, রিলেশনাল ডেটাবেজে একটি টেবিলের প্রাইমারি কী যখন অন্য কোনো টেবিলে সাধারণ ফিল্ড হিসেবে ব্যবহৃত হয়ে দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করে, তখন দ্বিতীয় টেবিলের ওই ফিল্ডটিকে ফরেন কী বলা হয়। এখানে 'Students' টেবিলের 'Roll' ফিল্ডটি প্রাইমারি কী (কারণ এটি অদ্বিতীয়)। এই একই 'Roll' ফিল্ডটি 'Results' টেবিলে ব্যবহৃত হয়েছে যাতে বোঝা যায় কোন রেজাল্ট কোন স্টুডেন্টের। যেহেতু 'Results' টেবিলে একই রোল একাধিকবার থাকতে পারে (যেমন ১০১ রোলের বাংলা ও ইংরেজি দুই বিষয়ের রেজাল্ট আছে), তাই এখানে 'Roll' প্রাইমারি কী নয়, বরং এটি 'Students' টেবিলকে রেফার করছে। তাই 'Results' টেবিলে 'Roll' হলো ফরেন কী।

(ঘ) 'Students' টেবিলে 'Roll' ফিল্ডটিকে প্রাইমারি কী হিসেবে নির্বাচন করা অত্যন্ত যৌক্তিক। নিচে এর বিশ্লেষণ দেওয়া হলো:

  1. অদ্বিতীয়তা (Uniqueness): প্রাইমারি কী এর প্রধান শর্ত হলো এর মান অদ্বিতীয় হতে হবে। কলেজে একই নামে বা একই ঠিকানায় একাধিক শিক্ষার্থী থাকতে পারে, কিন্তু প্রতিটি শিক্ষার্থীর রোল নম্বর ভিন্ন ভিন্ন হয়। তাই 'Roll' ফিল্ডটি প্রতিটি রেকর্ডকে স্বতন্ত্রভাবে শনাক্ত করতে সক্ষম।

  2. নাল মান গ্রহণ না করা (Not Null): প্রাইমারি কী কখনো ফাঁকা বা নাল (Null) হতে পারে না। একজন ভর্তি হওয়া শিক্ষার্থীর রোল নম্বর থাকবেই, কিন্তু তার ঠিকানা বা ফোন নম্বর নাও থাকতে পারে। তাই 'Roll' ফিল্ডটি এই শর্তও পূরণ করে।

  3. পরিবর্তনশীলতা: সাধারণত প্রাইমারি কী এর মান ঘনঘন পরিবর্তন করা উচিত নয়। নাম বা ঠিকানা পরিবর্তিত হতে পারে, কিন্তু রেজিস্ট্রেশন বা রোল নম্বর সাধারণত ফিক্সড থাকে।

  4. রিলেশন তৈরি: উদ্দীপকে দেখা যাচ্ছে 'Results' টেবিলের সাথে সম্পর্ক তৈরির জন্য 'Roll' ফিল্ডটি ব্যবহৃত হয়েছে। প্রাইমারি কী হিসেবে 'Roll' নির্বাচিত না হলে এই রিলেশন তৈরি করা যেত না এবং ডেটা অখণ্ডতা রক্ষা করা কঠিন হতো।

সুতরাং, নাম বা ঠিকানার তুলনায় 'Roll' ফিল্ডটি প্রাইমারি কী হওয়ার সকল বৈশিষ্ট্য ও শর্ত পূরণ করে বলে এটিকে নির্বাচন করা সম্পূর্ণ যৌক্তিক।


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

একটি লাইব্রেরি ম্যানেজমেন্ট সিস্টেমে বই এবং সদস্যদের তথ্য রাখার জন্য নিম্নোক্ত টেবিলগুলো ব্যবহৃত হচ্ছে:

Table-A: Book_Info (ISBN, Title, Author)
Table-B: Members (MemberID, Name, Contact)
Table-C: Issue_Return (TransactionID, ISBN, MemberID, IssueDate)

(ক) ক্যান্ডিডেট কী (Candidate Key) কী?
(খ) প্রাইমারি কী এবং ফরেন কী-এর মধ্যে দুটি পার্থক্য লিখ।
(গ) উদ্দীপকের টেবিলগুলোর মধ্যে সম্পর্ক স্থাপনে কী (Key)-এর ভূমিকা ব্যাখ্যা কর।
(ঘ) ডেটাবেজের ডেটা অখণ্ডতা (Data Integrity) রক্ষায় ফরেন কী-এর গুরুত্ব উদ্দীপকের আলোকে আলোচনা কর।

উত্তর

(ক) কোনো টেবিলে প্রাইমারি কী হওয়ার যোগ্যতা রাখে এমন এক বা একাধিক ফিল্ড বা ফিল্ডের সমষ্টিকে ক্যান্ডিডেট কী (Candidate Key) বলা হয়।

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

(গ) উদ্দীপকের লাইব্রেরি সিস্টেমে টেবিলগুলোর মধ্যে সম্পর্ক স্থাপনে 'Key' বা চাবিকাঠি অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করেছে।

এখানে 'Book_Info' টেবিলের ISBN এবং 'Members' টেবিলের MemberID হলো নিজ নিজ টেবিলের প্রাইমারি কী। অন্যদিকে, 'Issue_Return' টেবিলে এই দুটি ফিল্ডই উপস্থিত আছে।
যখন একজন মেম্বার কোনো একটি বই ইস্যু করেন, তখন 'Issue_Return' টেবিলে ওই লেনদেনের তথ্য রাখা হয়। কিন্তু সেখানে বইয়ের নাম বা মেম্বারের নাম বারবার লেখার প্রয়োজন নেই; কেবল ISBN এবং MemberID লিখলেই চলে।
এখানে 'Issue_Return' টেবিলের ISBN ফিল্ডটি 'Book_Info' টেবিলের সাথে এবং MemberID ফিল্ডটি 'Members' টেবিলের সাথে রিলেশন বা সম্পর্ক তৈরি করেছে। এই সম্পর্ক স্থাপনের মাধ্যমেই জানা সম্ভব হচ্ছে যে, কোন মেম্বার কোন বইটি নিয়েছেন। যদি এই কী (Key) গুলো না থাকত, তবে দুটি ভিন্ন টেবিলের তথ্যের মধ্যে সংযোগ স্থাপন করা সম্ভব হতো না এবং ডেটা রিডান্ডেন্সি (পুনরাবৃত্তি) বেড়ে যেত।

(ঘ) ডেটাবেজের ডেটা অখণ্ডতা বা ইন্টিগ্রিটি (Referential Integrity) রক্ষায় ফরেন কী-এর গুরুত্ব অপরিসীম। উদ্দীপকের আলোকে এটি নিচে আলোচনা করা হলো:

ফরেন কী মূলত 'রেফারেন্সিয়াল ইন্টিগ্রিটি' নিশ্চিত করে। এর মানে হলো, চাইল্ড টেবিলে (Issue_Return) এমন কোনো ডেটা প্রবেশ করানো যাবে না যা প্যারেন্ট টেবিলে (Book_Info বা Members) নেই।

  1. অবৈধ ডেটা রোধ: উদ্দীপকের 'Issue_Return' টেবিলে যদি এমন কোনো MemberID এন্ট্রি দেওয়া হয় যা 'Members' টেবিলে নেই, তবে ডেটাবেজ তা গ্রহণ করবে না। কারণ 'Issue_Return' এর MemberID একটি ফরেন কী। এটি নিশ্চিত করে যে, কেবল নিবন্ধিত সদস্যরাই বই নিতে পারবে।

  2. অসামঞ্জস্যতা দূরীকরণ: যদি 'Book_Info' টেবিল থেকে কোনো বইয়ের তথ্য মুছে ফেলা হয় (Delete), কিন্তু সেই বইয়ের ISBN যদি 'Issue_Return' টেবিলে থেকে যায়, তবে ডেটা অসামঞ্জস্যপূর্ণ হয়ে পড়ে। ফরেন কী কনস্ট্রেইন্ট থাকলে, কোনো বই ইস্যু করা অবস্থায় তার তথ্য ডিলিট করা যাবে না, অথবা ডিলিট করলে সংশ্লিষ্ট সকল রেকর্ড আপডেট/ডিলিট হয়ে যাবে (Cascading)।

  3. সম্পর্কের বিশ্বস্ততা: ফরেন কী নিশ্চিত করে যে, 'Issue_Return' টেবিলে যে ISBN আছে তা অবশ্যই একটি বাস্তব বইয়ের এবং যে MemberID আছে তা একজন বাস্তব সদস্যের।

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

এমসিকিউ

১। ডেটাবেজ টেবিলে রেকর্ড শনাক্তকরণের জন্য কোনটি ব্যবহৃত হয়?

ক) ফিল্ড
খ) ডেটা টাইপ
গ) কুয়েরি
ঘ) কী (Key)

সঠিক উত্তর: ঘ) কী (Key)

ব্যাখ্যা: ডেটাবেজ টেবিলের প্রতিটি রেকর্ডকে অদ্বিতীয়ভাবে বা স্বতন্ত্রভাবে শনাক্ত করার জন্য এক বা একাধিক ফিল্ডের সমন্বয়ে গঠিত বিশেষ ফিল্ডকে 'কী' (Key) বলা হয়।


২। প্রাইমারি কী (Primary Key) এর প্রধান বৈশিষ্ট্য কোনটি?

ক) ডুপ্লিকেট মান গ্রহণ করে
খ) নাল (Null) মান গ্রহণ করে না
গ) একাধিক ফিল্ড নিয়ে গঠিত হয় না
ঘ) পরিবর্তনযোগ্য

সঠিক উত্তর: খ) নাল (Null) মান গ্রহণ করে না

ব্যাখ্যা: প্রাইমারি কী-এর মান অবশ্যই অদ্বিতীয় হতে হবে এবং কোনো অবস্থাতেই এটি ফাঁকা বা নাল (Null) হতে পারবে না।


৩। দুটি টেবিলের মধ্যে সম্পর্ক স্থাপনের জন্য কোন কী (Key) অপরিহার্য?

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

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

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


৪। কম্পোজিট প্রাইমারি কী (Composite Primary Key) গঠনে কয়টি ফিল্ড প্রয়োজন হয়?

ক) একটি
খ) একাধিক
গ) তিনটি
ঘ) চারটি

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

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


৫। কোনটি অদ্বিতীয়ভাবে রেকর্ড শনাক্ত করতে পারে না?

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

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

ব্যাখ্যা: ফরেন কী মূলত অন্য টেবিলের প্রাইমারি কী-এর রেফারেন্স এবং এটি একই মান বারবার গ্রহণ করতে পারে (ডুপ্লিকেট), তাই এটি নিজে অদ্বিতীয়ভাবে রেকর্ড শনাক্ত করতে পারে না।


৬। ক্যান্ডিডেট কী (Candidate Key) থেকে প্রাইমারি কী নির্বাচনের পর বাকি কী-গুলোকে কী বলা হয়?

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

সঠিক উত্তর: খ) অল্টারনেট কী

ব্যাখ্যা: একটি টেবিলে একাধিক ক্যান্ডিডেট কী থাকতে পারে। এর মধ্য থেকে একটিকে প্রাইমারি কী হিসেবে নির্বাচন করার পর বাকিগুলোকে অল্টারনেট কী (Alternate Key) বলা হয়।


৭। নিচের কোনটি প্রাইমারি কী হওয়ার অনুপযুক্ত?

ক) রোল নম্বর
খ) রেজিস্ট্রেশন নম্বর
গ) মোবাইল নম্বর
ঘ) জিপিএ (GPA)

সঠিক উত্তর: ঘ) জিপিএ (GPA)

ব্যাখ্যা: জিপিএ বা প্রাপ্ত নম্বর একই ক্লাসের একাধিক ছাত্রের একই হতে পারে, অর্থাৎ এটি অদ্বিতীয় নয়। তাই এটি প্রাইমারি কী হতে পারে না।


৮। একটি টেবিলে সর্বোচ্চ কয়টি প্রাইমারি কী থাকতে পারে?

ক) ১টি
খ) ২টি
গ) ৩টি
ঘ) অসংখ্য

সঠিক উত্তর: ক) ১টি

ব্যাখ্যা: রিলেশনাল ডেটাবেজ মডেলে একটি টেবিলে কেবল একটিই প্রাইমারি কী সংজ্ঞায়িত করা যায়, যদিও তা একাধিক ফিল্ডের সমন্বয়ে গঠিত হতে পারে।


৯। রেফারেন্সিয়াল ইন্টিগ্রিটি (Referential Integrity) রক্ষায় কোনটির ভূমিকা প্রধান?

ক) ডেটা টাইপ
খ) ফিল্ড প্রপার্টিজ
গ) ফরেন কী
ঘ) কুয়েরি ল্যাঙ্গুয়েজ

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

ব্যাখ্যা: ফরেন কী কনস্ট্রেইন্টের মাধ্যমে প্যারেন্ট ও চাইল্ড টেবিলের ডেটার সামঞ্জস্য বা রেফারেন্সিয়াল ইন্টিগ্রিটি বজায় রাখা হয়।


১০। সুপার কী (Super Key) এর সেট থেকে ন্যূনতম ফিল্ড নিয়ে কোনটি গঠিত হয়?

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

সঠিক উত্তর: খ) ক্যান্ডিডেট কী

ব্যাখ্যা: সুপার কী হলো এক বা একাধিক ফিল্ডের সেট যা রেকর্ড শনাক্ত করে। এর মধ্যে যেগুলোর কোনো সাবসেট রেকর্ড শনাক্ত করতে পারে না (মিনিমাল সুপার কী), সেগুলোকে ক্যান্ডিডেট কী বলা হয়।


১১। নিচের কোন ডেটা টাইপটি প্রাইমারি কী হওয়ার জন্য সবচেয়ে উপযুক্ত?

ক) Text
খ) Memo
গ) AutoNumber
ঘ) Currency

সঠিক উত্তর: গ) AutoNumber

ব্যাখ্যা: AutoNumber ডেটা টাইপটি স্বয়ংক্রিয়ভাবে অদ্বিতীয় মান তৈরি করে, তাই এটি প্রাইমারি কী হিসেবে ব্যবহারের জন্য আদর্শ।


১২। রিলেশনশিপ তৈরির শর্ত কোনটি?

ক) দুটি টেবিলেই প্রাইমারি কী থাকতে হবে
খ) কমন ফিল্ড থাকতে হবে
গ) ডেটা টাইপ ভিন্ন হতে হবে
ঘ) ফিল্ড নেম একই হতে হবে

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

ব্যাখ্যা: দুটি টেবিলের মধ্যে সম্পর্ক স্থাপনের জন্য অন্তত একটি সাধারণ বা কমন ফিল্ড থাকতে হয়, যার ডেটা টাইপ এবং সাইজ একই হওয়া বাঞ্ছনীয়।


১৩। কোনটি ফরেন কী-এর মান হিসেবে গ্রহণ করা যায়?

ক) নাল (Null)
খ) ডুপ্লিকেট ভ্যালু
গ) প্যারেন্ট টেবিলের প্রাইমারি কী-তে নেই এমন মান
ঘ) ক ও খ উভয়ই

সঠিক উত্তর: ঘ) ক ও খ উভয়ই

ব্যাখ্যা: ফরেন কী নাল মান গ্রহণ করতে পারে (যদি নাল নট এলাউড কনস্ট্রেইন্ট না থাকে) এবং ডুপ্লিকেট মানও গ্রহণ করতে পারে।


১৪। 'Student' টেবিলে (Roll, Name, Phone) ফিল্ড আছে। এখানে 'Phone' ফিল্ডটি কী হতে পারে?

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

সঠিক উত্তর: খ) ক্যান্ডিডেট কী

ব্যাখ্যা: যেহেতু ফোন নম্বর সাধারণত অদ্বিতীয় হয়, তাই এটি রেকর্ড শনাক্ত করতে সক্ষম। অর্থাৎ এটি একটি ক্যান্ডিডেট কী। তবে সাধারণত রোল নম্বরকেই প্রাইমারি কী করা হয়।


১৫। কৃত্রিম বা সারোগেট কী (Surrogate Key) সাধারণত কেন ব্যবহার করা হয়?

ক) প্রাকৃতিক কী না থাকলে
খ) ডেটা এনক্রিপ্ট করতে
গ) রিলেশন বন্ধ করতে
ঘ) মেমোরি বাঁচাতে

সঠিক উত্তর: ক) প্রাকৃতিক কী না থাকলে

ব্যাখ্যা: যখন টেবিলে কোনো স্বাভাবিক বা ন্যাচারাল প্রাইমারি কী (যেমন রোল, এনআইডি) পাওয়া যায় না, তখন কৃত্রিমভাবে একটি অদ্বিতীয় আইডি (যেমন সিরিয়াল নং) তৈরি করা হয়, যাকে সারোগেট কী বলে।


১৬। ডেটাবেজ টেবিলে কী (Key) ব্যবহারের সুবিধা হলো—
i. দ্রুত ডেটা খুঁজে পাওয়া যায়
ii. ডেটা ডুপ্লিকেশন রোধ করা যায়
iii. ডেটাবেজের আকার ছোট করা যায়

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

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

ব্যাখ্যা: ইনডেক্সিং বা কী ব্যবহারের ফলে সার্চিং দ্রুত হয় এবং প্রাইমারি কী ডুপ্লিকেশন রোধ করে। তবে এটি সাধারণত আলাদা স্পেস নেয়, তাই আকার ছোট করে না।


১৭। প্রাইমারি কী ও ফরেন কী-এর মধ্যে সাদৃশ্য হলো—
i. উভয়ই রিলেশন তৈরিতে ব্যবহৃত হয়
ii. উভয়ই অদ্বিতীয় মান গ্রহণ করে
iii. উভয়ই একই ডেটা টাইপ হতে হয় (রিলেশনের ক্ষেত্রে)

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

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

ব্যাখ্যা: রিলেশন তৈরির সময় প্যারেন্ট টেবিলের প্রাইমারি কী এবং চাইল্ড টেবিলের ফরেন কী-এর ডেটা টাইপ অবশ্যই একই হতে হয়। তবে ফরেন কী অদ্বিতীয় মান গ্রহণ করে না।


১৮। একটি কম্পোজিট কী—
i. একাধিক ফিল্ডের সমন্বয়ে গঠিত
ii. সর্বদা নাল ভ্যালু গ্রহণ করে
iii. এককভাবে রেকর্ড শনাক্ত করতে পারে

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

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

ব্যাখ্যা: কম্পোজিট কী একাধিক ফিল্ড নিয়ে গঠিত হয়ে রেকর্ড শনাক্ত করে। এটি প্রাইমারি কী হলে নাল ভ্যালু গ্রহণ করতে পারে না।


১৯। কোন ক্ষেত্রে কম্পোজিট প্রাইমারি কী ব্যবহার করা অপরিহার্য?
i. যখন কোনো সিঙ্গেল ফিল্ড ইউনিক নয়
ii. মেনি-টু-মেনি রিলেশনশিপের জংশন টেবিলে
iii. যখন টেবিলের ফিল্ড সংখ্যা খুব কম

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

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

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


২০। ক্যান্ডিডেট কী-এর বৈশিষ্ট্য হলো—
i. এটি ইউনিক
ii. এটি নাল হতে পারে (যদি প্রাইমারি কী না হয়)
iii. এটি প্রাইমারি কী হওয়ার যোগ্য

নিচের কোনটি সঠিক?

ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

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

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


নিচের উদ্দীপকটি পড়ো এবং ২১ ও ২২ নং প্রশ্নের উত্তর দাও:

একটি দোকানের 'Sales' টেবিলে (InvoiceNo, ProductID, Quantity) ফিল্ডগুলো আছে। এখানে একই ইনভয়েসে একাধিক পণ্য থাকতে পারে এবং একই পণ্য একাধিক ইনভয়েসে বিক্রি হতে পারে।

২১। উদ্দীপকের টেবিলে প্রাইমারি কী কোনটি হবে?

ক) InvoiceNo
খ) ProductID
গ) InvoiceNo + ProductID
ঘ) Quantity

সঠিক উত্তর: গ) InvoiceNo + ProductID

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

২২। উদ্দীপকের 'ProductID' ফিল্ডটি অন্য একটি 'Products' টেবিলের সাথে সম্পর্কিত। এই ক্ষেত্রে 'Sales' টেবিলে 'ProductID' কী হিসেবে কাজ করবে?

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

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

ব্যাখ্যা: 'Sales' টেবিলের ProductID ফিল্ডটি মূলত 'Products' টেবিলের প্রাইমারি কী-কে রেফার করছে, তাই এটি এখানে ফরেন কী।


নিচের উদ্দীপকটি পড়ো এবং ২৩, ২৪ ও ২৫ নং প্রশ্নের উত্তর দাও:

কলেজ লাইব্রেরির ডেটাবেজে দুটি টেবিল আছে:
১. Book (BookID, Title, Writer)
২. Borrower (CardNo, BookID, IssueDate)

২৩। 'Borrower' টেবিলের প্রাইমারি কী কোনটি হওয়া উচিত?

ক) CardNo
খ) BookID
গ) IssueDate
ঘ) CardNo + BookID + IssueDate

সঠিক উত্তর: ঘ) CardNo + BookID + IssueDate

ব্যাখ্যা: একজন ছাত্র (CardNo) একই বই (BookID) ভিন্ন ভিন্ন তারিখে (IssueDate) নিতে পারে। তাই প্রতিটি লেনদেন আলাদা করতে তিনটি ফিল্ডের সমন্বয় প্রয়োজন। অথবা একটি ট্রানজেকশন আইডি যোগ করা যেত। প্রদত্ত অপশনগুলোর মধ্যে ঘ সবচেয়ে যৌক্তিক যদি ট্রানজেকশন আইডি না থাকে।

২৪। 'Borrower' টেবিলে 'BookID' ফিল্ডটি কোন ধরনের কী?

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

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

ব্যাখ্যা: 'BookID' ফিল্ডটি 'Book' টেবিলের প্রাইমারি কী, যা 'Borrower' টেবিলে এসে সম্পর্ক তৈরি করেছে। তাই এটি ফরেন কী।

২৫। যদি 'Book' টেবিল থেকে একটি বইয়ের তথ্য মুছে ফেলা হয়, তবে 'Borrower' টেবিলে কী সমস্যা হতে পারে?

ক) ডেটা রিডান্ডেন্সি
খ) রেফারেন্সিয়াল ইন্টিগ্রিটি ভায়োলেশন
গ) ডেটা সিকিউরিটি লস
ঘ) ডেটা এনক্রিপশন এরর

সঠিক উত্তর: খ) রেফারেন্সিয়াল ইন্টিগ্রিটি ভায়োলেশন

ব্যাখ্যা: প্যারেন্ট টেবিল (Book) থেকে ডেটা মুছলে চাইল্ড টেবিল (Borrower) এতিম হয়ে যাবে, যা রেফারেন্সিয়াল ইন্টিগ্রিটি নিয়ম লঙ্ঘন করে।