Primary Key
প্রাইমারি কী
প্রাইমারি কী (Primary Key)
১. ভূমিকা — প্রতিটি মানুষ কি অনন্য?
পৃথিবীতে ৮০০ কোটি মানুষ আছে। দুজনের নাম "আবদুল করিম" হতে পারে, একই গ্রামে থাকতে পারে, এমনকি একই বয়সও হতে পারে। কিন্তু তাদের আঙুলের ছাপ কখনো এক হবে না! NID নম্বরও কখনো এক হবে না।
এই "কখনো এক হবে না" এবং "অবশ্যই থাকতে হবে" — এই দুটো শর্ত মিলেই তৈরি হয় Primary Key (প্রাইমারি কী)!
মজার তথ্য: MySQL ডেটাবেজে
AUTO_INCREMENTব্যবহার করলে প্রতিটি নতুন Record এর জন্য Primary Key স্বয়ংক্রিয়ভাবে তৈরি হয় — ঠিক যেমন হাসপাতালে নতুন রোগী এলে স্বয়ংক্রিয়ভাবে রোগী নম্বর দেওয়া হয়!
২. সমস্যা — অনন্যতা ছাড়া কী হয়?
সমস্যা:
Students Table (Primary Key ছাড়া):
┌──────────────┬──────────┬────────┐
│ নাম │ বিভাগ │ নম্বর │
├──────────────┼──────────┼────────┤
│ রাহেলা │ বিজ্ঞান │ 850 │
│ রাহেলা │ ব্যবসা │ 790 │ ← কোন রাহেলা?
│ করিম │ বিজ্ঞান │ 880 │
└──────────────┴──────────┴────────┘
"রাহেলাকে Delete করো" → কোনটা মুছব?
সমাধান (Primary Key সহ):
┌──────┬──────────────┬──────────┬────────┐
│ রোল │ নাম │ বিভাগ │ নম্বর │
│ (PK) │ │ │ │
├──────┼──────────────┼──────────┼────────┤
│ 101 │ রাহেলা │ বিজ্ঞান │ 850 │
│ 102 │ রাহেলা │ ব্যবসা │ 790 │ ← রোল 102 এর রাহেলা
│ 103 │ করিম │ বিজ্ঞান │ 880 │
└──────┴──────────────┴──────────┴────────┘
"রোল ১০২ কে Delete করো" → নির্দিষ্ট!
৩. চিত্রের মাধ্যমে বোঝো
Primary Key এর বৈশিষ্ট্য:
Unique (অনন্য) NOT NULL (খালি নয়)
↓ ↓
┌──────┬──────────────┬──────────┬────────┐
│ রোল │ নাম │ বিভাগ │ নম্বর │
├──────┼──────────────┼──────────┼────────┤
│ 101 │ রাহেলা │ বিজ্ঞান │ 850 │
│ 102 │ করিম │ ব্যবসা │ 790 │
│ 101 │ সুমাইয়া │ বিজ্ঞান │ 880 │ ← ❌ ERROR! রোল 101 দুইবার
│ NULL │ নতুন ছাত্র │ মানবিক │ 820 │ ← ❌ ERROR! NULL হওয়া যাবে না
└──────┴──────────────┴──────────┴────────┘
✅ সঠিক Primary Key:
│ 101 │ → মাত্র একবার, NULL নয়
│ 102 │ → মাত্র একবার, NULL নয়
│ 103 │ → মাত্র একবার, NULL নয়
৪. বাস্তব জীবনের সাথে মিল
উপমা: Primary Key হলো ঠিক যেমন একটি দেশের নাগরিকের পাসপোর্ট নম্বর। পাসপোর্ট নম্বর সর্বদা অনন্য (দুটো পাসপোর্টের নম্বর এক হয় না) এবং পাসপোর্ট নম্বর ছাড়া পাসপোর্ট অসম্পূর্ণ — ঠিক যেমন Primary Key NULL হতে পারে না।
Module 1: Primary Key কী? (What is a Primary Key?)
📌 সংজ্ঞা
Primary Key হলো একটি ডেটাবেজ টেবিলে এমন একটি Field বা Fields এর সমষ্টি যার মান সর্বদা Unique (অনন্য) এবং কখনো NULL হয় না, যা প্রতিটি Record কে অনন্যভাবে শনাক্ত করে।
Primary Key এর বৈশিষ্ট্য
| বৈশিষ্ট্য | বিবরণ |
|---|---|
| Unique | প্রতিটি Record এ আলাদা মান — দুটো একই হবে না |
| NOT NULL | কখনো খালি থাকবে না |
| Immutable | একবার নির্ধারিত হলে পরিবর্তন করা উচিত নয় |
| One per Table | একটি টেবিলে মাত্র একটি Primary Key |
| Indexed | স্বয়ংক্রিয়ভাবে Index তৈরি হয় — দ্রুত অনুসন্ধান |
Module 2: Simple Primary Key
Simple (Single-Column) Primary Key
একটি মাত্র Field দিয়ে তৈরি Primary Key।
-- উদাহরণ:
CREATE TABLE Students (
roll INTEGER PRIMARY KEY,
name VARCHAR(100) NOT NULL,
division VARCHAR(20),
marks INTEGER
);
-- INSERT:
INSERT INTO Students VALUES (101, 'রাহেলা', 'বিজ্ঞান', 850);
INSERT INTO Students VALUES (102, 'করিম', 'ব্যবসা', 790);
INSERT INTO Students VALUES (101, 'সুমাইয়া', 'বিজ্ঞান', 880);
-- ↑ এটি ERROR দেবে! রোল 101 আগেই আছে
বাস্তব উদাহরণ
| টেবিল | Simple Primary Key |
|---|---|
| Students | রোল নম্বর |
| Products | পণ্য কোড |
| Employees | কর্মচারী ID |
| NID Database | NID নম্বর |
| Bank Accounts | অ্যাকাউন্ট নম্বর |
Module 3: Composite Primary Key
দুটি বা বেশি Field মিলে Primary Key
Exam_Results Table:
┌──────────┬──────────┬────────┐
│ StudentID│ SubjectID│ Marks │
│ (PK1) │ (PK2) │ │
├──────────┼──────────┼────────┤
│ 101 │ M001 │ 90 │ ← (101, M001) অনন্য
│ 101 │ P001 │ 85 │ ← (101, P001) অনন্য
│ 102 │ M001 │ 88 │ ← (102, M001) অনন্য
└──────────┴──────────┴────────┘
Composite PK = (StudentID, SubjectID)
কারণ:
StudentID একা Unique নয় (101 দুইবার)
SubjectID একা Unique নয় (M001 দুইবার)
কিন্তু (StudentID + SubjectID) সর্বদা Unique!
Module 4: Auto Increment Primary Key
স্বয়ংক্রিয় Primary Key
-- MySQL তে Auto Increment:
CREATE TABLE Customers (
customer_id INTEGER AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
phone VARCHAR(15)
);
-- প্রথম INSERT:
INSERT INTO Customers (name, phone) VALUES ('রাহেলা', '01711111111');
-- customer_id = 1 (স্বয়ংক্রিয়)
-- দ্বিতীয় INSERT:
INSERT INTO Customers (name, phone) VALUES ('করিম', '01822222222');
-- customer_id = 2 (স্বয়ংক্রিয়)
-- tৃতীয় INSERT:
INSERT INTO Customers (name, phone) VALUES ('সুমাইয়া', '01933333333');
-- customer_id = 3 (স্বয়ংক্রিয়)
Auto Increment এর সুবিধা
- নিজে থেকে নম্বর তৈরি হয়
- ভুলে Primary Key দেওয়া ভুলে যাওয়ার ঝুঁকি নেই
- সর্বদা অনন্য নম্বর পাওয়া যায়
- বাংলাদেশের অনেক সিস্টেমে ব্যবহৃত (হাসপাতাল নম্বর, টোকেন নম্বর)
Module 5: Primary Key নির্বাচনের নিয়ম
Primary Key কীভাবে বাছাই করবে?
✅ ভালো PK:
→ সংখ্যা (Integer) — দ্রুত তুলনা
→ ছোট — কম জায়গা
→ অর্থবহ — NID নম্বর, রোল নম্বর
→ Auto Increment — স্বয়ংক্রিয়
❌ খারাপ PK:
→ নাম (পরিবর্তনশীল, অনন্য নয়)
→ ইমেইল (দীর্ঘ, পরিবর্তনশীল)
→ ফোন নম্বর (পরিবর্তনশীল)
→ দীর্ঘ TEXT ফিল্ড
Module 6: Primary Key ও Referential Integrity
Primary Key → Foreign Key সংযোগ:
Students Results
┌──────┬──────────┐ ┌──────┬──────────┬────────┐
│ রোল │ নাম │ │ রোল │ বিষয় │ নম্বর │
│ (PK) │ │ │ (FK) │ │ │
├──────┼──────────┤ ├──────┼──────────┼────────┤
│ 101 │ রাহেলা │←───── │ 101 │ গণিত │ 90 │
│ 102 │ করিম │←───── │ 102 │ হিসাব │ 88 │
└──────┴──────────┘ └──────┴──────────┴────────┘
Referential Integrity:
Results এ রোল 999 দেওয়া যাবে না
যদি Students এ রোল 999 না থাকে!
→ FK সর্বদা PK এর দিকে নির্দেশ করে
🧠 মূল শিক্ষা
মনে রাখো: Primary Key এর দুটি অলঙ্ঘনীয় নিয়ম — সর্বদা Unique (অনন্য) এবং কখনো NULL নয়। প্রতি টেবিলে মাত্র একটি Primary Key থাকে। এটি রেকর্ডের পরিচয়পত্র।
🔁 নিজে পরীক্ষা করো
❓ প্রশ্ন ১: Primary Key এর দুটি বাধ্যতামূলক বৈশিষ্ট্য কী? ✅ উত্তর: (১) Unique — প্রতিটি Record এ আলাদা মান, (২) NOT NULL — কখনো খালি নয়।
❓ প্রশ্ন ২: Auto Increment কী কাজ করে? ✅ উত্তর: প্রতিটি নতুন Record যোগ করার সময় স্বয়ংক্রিয়ভাবে পরবর্তী সংখ্যা দেয়। ১, ২, ৩, ৪... এভাবে।
❓ প্রশ্ন ৩: কখন Composite Primary Key ব্যবহার করা হয়? ✅ উত্তর: যখন একটি Column দিয়ে Record কে অনন্যভাবে শনাক্ত করা যায় না, তখন দুই বা বেশি Column মিলিয়ে Composite Primary Key তৈরি করা হয়।
❓ প্রশ্ন ৪: নামকে কেন Primary Key হিসেবে ব্যবহার করা উচিত নয়? ✅ উত্তর: কারণ নাম Unique নয় (দুজনের নাম এক হতে পারে) এবং নাম পরিবর্তনযোগ্য — Primary Key পরিবর্তন করা উচিত নয়।
📝 HSC পরীক্ষার প্রস্তুতি
পরীক্ষায় যা আসতে পারে
🎯 Primary Key এর সংজ্ঞা ও বৈশিষ্ট্য (৩ নম্বর) 🎯 Simple ও Composite Primary Key এর পার্থক্য (৩ নম্বর) 🎯 Primary Key কেন NULL হতে পারে না? ব্যাখ্যা করো (২ নম্বর) 🎯 Auto Increment কী? কেন ব্যবহার হয়? (২ নম্বর)
সাধারণ ভুলসমূহ
⚠️ একটি টেবিলে একাধিক Primary Key থাকতে পারে মনে করা — মাত্র একটি ⚠️ Primary Key NULL হতে পারে মনে করা — কখনো না ⚠️ Composite Key = দুটি Primary Key মনে করা — এটা এক Primary Key যা দুটি Column মিলে তৈরি
মনে রাখার কৌশল
💡 PK = পাসপোর্ট নম্বর — অনন্য, খালি নয়, একটিমাত্র 💡 "UN" মনে রাখো: Unique + Not Null = Primary Key এর ২ শর্ত
✅ সারাংশ
- Primary Key: অনন্য + NOT NULL — রেকর্ড শনাক্তকারী
- Simple PK: একটি Field দিয়ে (রোল নম্বর, NID নম্বর)
- Composite PK: দুই বা বেশি Field মিলে (StudentID + SubjectID)
- Auto Increment: স্বয়ংক্রিয় PK তৈরি — 1, 2, 3...
- প্রতি টেবিলে: মাত্র একটি Primary Key
- Referential Integrity: FK সর্বদা PK এর দিকে নির্দেশ করে
Primary Key সারণি
| বৈশিষ্ট্য | Simple PK | Composite PK |
|---|---|---|
| Field সংখ্যা | ১টি | ২টি বা বেশি |
| উদাহরণ | রোল নম্বর | (StudentID, SubjectID) |
| সুবিধা | সহজ, দ্রুত | জটিল সম্পর্ক হ্যান্ডল করে |
| ব্যবহার | সাধারণ টেবিল | Junction/Bridge টেবিল |
🎯 অনুশীলন প্রশ্ন
১. Primary Key এর বৈশিষ্ট্য বর্ণনা করো এবং উদাহরণ দাও।
২. নিচের টেবিলে কোনটি Primary Key হওয়া উচিত এবং কেন? Employee(Name, EmpID, Email, Phone, Department)
৩. Composite Primary Key কী? একটি Library Database এ কোন টেবিলে Composite Key দরকার হতে পারে?
৪. Auto Increment Primary Key এর সুবিধা কী?
৫. MCQ: নিচের কোনটি Primary Key হওয়ার যোগ্য? (ক) নাম (খ) ঠিকানা (গ) রোল নম্বর (ঘ) বিভাগ উত্তর: (গ) রোল নম্বর — কারণ Unique ও NOT NULL