সারোগেট কী (Surrogate Key) হলো একটি ডাটাবেসে শুধুমাত্র ইউনিক আইডেন্টিফায়ার হিসেবে ব্যবহৃত কী। এর কোনো বাস্তব অর্থ বা বিজনেস মিনিং নেই। এটি শুধু রেকর্ডের অস্তিত্ব প্রতিনিধিত্ব করে।
বৈশিষ্ট্য
- কোনো বাস্তব অর্থ নেই (Business meaning নেই)।
- শুধু ডেটা অ্যানালিসিস এবং রেকর্ড আইডেন্টিফিকেশনের জন্য।
- সিস্টেম জেনারেটেড (Auto-increment, GUID, UUID)।
- কখনো আপডেট করা হয় না।
উদাহরণ: ProductPrice টেবিল
| Key (Surrogate Key) | ProductID (Natural Key) | Price |
|---|---|---|
| 505_92 | 1987 | 200 |
| 698_56 | 1256 | 170 |
| 304_57 | 1898 | 250 |
| 458_66 | 1666 | 110 |
এখানে Key কলামটি সারোগেট কী। ProductID হলো ন্যাচারেল কী (বাস্তব অর্থ বহন করে)।
সারোগেট কীর উদাহরণ
- Auto-increment Integer: 1, 2, 3, ... (MySQL AUTO_INCREMENT, SQL Server IDENTITY)
- GUID / UUID:
550e8400-e29b-41d4-a716-446655440000 - Sequence/Generator: Oracle Sequence, PostgreSQL Serial
- Timestamp-based: Unix epoch + random suffix
- Counter: সিম্পল কাউন্টার
- System Date/Time Stamp:_high precision timestamp
- Random Alphanumeric String:
XK7Q9Z
সারোগেট কী vs ন্যাচারেল কী
| দিক | সারোগেট কী | ন্যাচারেল কী |
|---|---|---|
| অর্থ | কোনো বাস্তব অর্থ নেই | বিজনেস মিনিং আছে (ইমেইল, আইডি নম্বর) |
| স্থিতিশীলতা | কখনো বদলায় না | বদলাতে পারে (ইমেইল চেঞ্জ, আইডি রি-ইস্যু) |
| পারফরম্যান্স | ইন্টিজার হলে জয়েন ফাস্ট | স্ট্রিং/কম্পোজিট হলে স্লো |
| প্রাইভেসি | সেনসিটিভ ডেটা এক্সপোজ করে না | সেনসিটিভ ডেটা এক্সপোজ করতে পারে |
কখন ব্যবহার করবেন?
- ন্যাচারেল কী কমপ্লেক্স, কম্পোজিট বা পরিবর্তনশীল হলে।
- ডিস্ট্রিবিউটেড সিস্টেমে (UUID)۔
- প্রাইমারি কী হিসেবে ছোট, ফিক্সড-সাইজ, ফাস্ট জয়েনের জন্য।