অনেক ডেভেলপার প্রাইমারি কী (Primary Key) এবং ইউনিক কী (Unique Key) একই জিনিস বলে মনে করেন, কিন্তু এই দুটির গুরুত্বপূর্ণ পার্থক্য রয়েছে।
তুলনামূলক তালিকা
| দিক | Primary Key | Unique Key |
|---|---|---|
| উদ্দেশ্য (Usage) | টেবিলের প্রতিটি রোকে ইউনিকভাবে আইডেন্টিফাই করা | একটি কলামে ডুপ্লিকেট ভ্যালু প্রতিরোধ করা |
| NULL ভ্যালু | অনুমোদিত নয় (NOT NULL বাধ্যতামূলক) | অনুমোদিত (একটি NULL ভ্যালু অনুমোদিত, কিছু DB-এ একাধিক) |
| সংখ্যা (Volume) | টেবিলে শুধু একটি প্রাইমারি কী থাকতে পারে | টেবিলে একাধিক ইউনিক কী থাকতে পারে |
| ডুপ্লিকেশন | ইউনিক + নন-নাল (ডুপ্লিকেট ও নাল উভয়ই নেই) | ডুপ্লিকেট নেই, কিন্তু নাল থাকতে পারে |
| মডিফিকেশন | সাধারণত আপডেট করা যাবে না (Immutable) | আপডেট করা যায় (বিজনেস লজিক অনুযায়ী) |
| ইন্ডেক্স | অটোমেটিকলি ক্লাস্টারড/নন-ক্লাস্টারড ইন্ডেক্স বানায় | অটোমেটিকলি নন-ক্লাস্টারড ইন্ডেক্স বানায় |
| ফরেন কী রেফারেন্স | ফরেন কী রেফারেন্স করতে পারে | ফরেন কী রেফারেন্স করতে পারে (Unique Constraint রেফারেন্সযোগ্য) |
SQL উদাহরণ
CREATE TABLE Employee ( Emp_ID INT PRIMARY KEY, -- Primary Key: NOT NULL, UNIQUE, One per table Email VARCHAR(100) UNIQUE, -- Unique Key: NULL allowed, Multiple allowed Phone VARCHAR(15) UNIQUE, -- Another Unique Key SSN VARCHAR(20) UNIQUE, -- Another Unique Key Name VARCHAR(100) NOT NULL );
কিয়ারেবার সিনট্যাক্স
-- Primary Key PRIMARY KEY (col1, col2) -- Table level col INT PRIMARY KEY -- Column level -- Unique Key UNIQUE (col1, col2) -- Table level (Composite Unique) col VARCHAR(50) UNIQUE -- Column level
কখন কী ব্যবহার করবেন?
- Primary Key: মেইন আইডেন্টিফায়ার (ID, Code), ফরেন কী রেফারেন্স, ক্লাস্টারড ইন্ডেক্স।
- Unique Key: বিজনেস 룰 এনফোর্স (ইমেইল, ফোন, এসএসএন, ইউজারনেম), অল্টারনেটিভ লুকআপ পাথ।
সারসংক্ষেপ
Primary Key = Entity Identity (কোনো রোকে চিহ্নিত করতে) | Unique Key = Data Integrity (ডুপ্লিকেট রোধ করতে)। একটি টেবিলে একটা প্রাইমারি কী, একাধিক ইউনিক কী থাকতে পারে।