📋 বিষয়সূচী (Table of Contents)

01

কেন Alternate Key দরকার?

⏱ শেখার অংশ
গল্প দিয়ে শুরু ধরো, তোমার একটা বিশ্ববিদ্যালয় আছে। সেই বিশ্ববিদ্যালয় প্রতিটা স্টুডেন্টের জন্য চারটা জিনিস রেখে দেয়:
  • Student ID — ভর্তির সময় দেওয়া নাম্বার
  • Registration Number — সরকার থেকে দেওয়া রেজিস্ট্রেশন নাম্বার
  • University Email — বিশ্ববিদ্যালয়ের দেওয়া ইমেইল
  • National ID — জাতীয় পরিচয়পত্র নাম্বার
এই চারটার প্রতিটাই ইউনিক — মানে দুইজন স্টুডেন্টের একই Student ID, একই Email, বা একই National ID কখনোই থাকতে পারবে না।
🤔 নিজেকে জিজ্ঞেস করো
  • একজন মানুষের কি দুইটা National ID থাকতে পারে?
  • দুইজন স্টুডেন্টের কি একই University Email থাকতে পারে?
  • যদি চারটা কলামই ইউনিক হয়, তাহলে আমরা কেন মাত্র একটাকে "প্রধান পরিচয়" (Primary Key) বানাই?

উত্তর সোজা — একজন মানুষের একটাই National ID থাকে, দুইজন স্টুডেন্টের কখনো একই Email হয় না। তাহলে চারটাই তো "পরিচয়" হিসেবে কাজ করতে পারে! কিন্তু ডাটাবেসে আমরা একটা টেবিলের জন্য একটামাত্র প্রধান কলাম বাছি, যেটাকে আমরা বলি Primary Key। বাকিগুলো একেবারে ফেলে দিই না — তারা থেকে যায় "ব্যাকআপ পরিচয়" হিসেবে। এই ব্যাকআপ পরিচয়গুলোকেই বলে Alternate Key

🪪 বাস্তব-জীবনের এনালজি তোমার নিজের কথাই ভাবো — তোমার আছে জাতীয় পরিচয়পত্র নাম্বার, পাসপোর্ট নাম্বার, আর ড্রাইভিং লাইসেন্স নাম্বার। তিনটাই তোমাকে একা শনাক্ত করতে পারে। কিন্তু সরকারি ডাটাবেস যখন তোমার তথ্য রাখে, তখন সাধারণত National ID-কেই মূল পরিচয় হিসেবে বাছে। পাসপোর্ট আর লাইসেন্স নাম্বার তখনও ইউনিক থেকে যায়, কিন্তু তারা হয়ে যায় "বিকল্প" শনাক্তকারী।
একজন মানুষ = একাধিক ইউনিক পরিচয় আপনি National ID ⭐ Primary Passport Number Driving License Number Voter ID Bank Account No.

সবগুলোই ইউনিক — কিন্তু মাত্র একটা বাছা হয়েছে প্রধান পরিচয় (⭐) হিসেবে। বাকিগুলো Alternate Key।

02

Alternate Key আসলে কী?

⏱ শেখার অংশ

এখন শূন্য থেকে টেকনিক্যালি বুঝি। ডাটাবেসের একটা টেবিলে তিন ধরনের "Key" নিয়ে আমরা কাজ করি:

Candidate Key প্রার্থী

যেসব কলাম টেবিলের প্রতিটা সারিকে (row) একা-একাই ইউনিকভাবে শনাক্ত করতে পারে। এরা সবাই "প্রাইমারি কি হওয়ার প্রার্থী"।

Primary Key নির্বাচিত

Candidate Key-দের মধ্য থেকে যেটাকে আমরা "প্রধান পরিচয়" হিসেবে বাছি। প্রতি টেবিলে একটাই থাকে।

Alternate Key অবশিষ্ট

যেসব Candidate Key প্রাইমারি হিসেবে বাছা হয়নি, তারাই Alternate Key। এরাও এখনো ইউনিক, শুধু "মেইন" নয়।

সব Candidate Key একটা বাছা হয় Primary Key Alternate Key(s) প্রতি টেবিলে ১টা প্রতি টেবিলে ০ বা একাধিক

Candidate Key → একটা Primary Key + বাকিগুলো Alternate Key

🎓 বিশ্ববিদ্যালয়ের উদাহরণে ফিরে আসি Student_ID, Registration_Number, University_Email — তিনটাই Candidate Key (কারণ তিনটাই ইউনিক)। বিশ্ববিদ্যালয় যদি Student_ID-কে Primary Key বানায়, তাহলে Registration_Number আর University_Email হয়ে যায় Alternate Key।
03

Candidate Key vs Primary Key vs Alternate Key

⏱ শেখার অংশ
বৈশিষ্ট্যCandidate KeyPrimary KeyAlternate Key
উদ্দেশ্যইউনিক শনাক্তকরণের প্রার্থীটেবিলের মূল/অফিসিয়াল শনাক্তকারীব্যাকআপ ইউনিক শনাক্তকারী
সংখ্যা (প্রতি টেবিলে)এক বা একাধিকঠিক ১টা০ বা একাধিক
Uniquenessহ্যাঁ (বাধ্যতামূলক)হ্যাঁ (বাধ্যতামূলক)হ্যাঁ (বাধ্যতামূলক)
NULL অনুমোদন?হতে পারে (কিন্তু সাধারণত না)না — কখনোই NULL নয়সাধারণত না (UNIQUE constraint-এ MySQL একাধিক NULL অনুমোদন করে)
বাছাই প্রক্রিয়াস্বয়ংক্রিয়ভাবে চিহ্নিত হয় ডিজাইনের সময়Candidate Key থেকে ডিজাইনার বেছে নেনবাছাই না হওয়া Candidate Key গুলো
বাস্তব ব্যবহারStudent_ID, Email, Reg_No সবইStudent_IDEmail, Reg_No

Alternate Key vs Unique Key

বিষয়Alternate KeyUnique Key (SQL-এ)
স্তরডাটাবেস ডিজাইন থিওরির কনসেপ্টSQL-এর একটা প্র্যাকটিক্যাল constraint
সম্পর্কএটাকে বাস্তবায়ন করা হয়UNIQUE constraint দিয়ে Alternate Key বাস্তবায়িত হয়

Candidate Key vs Composite Key

বিষয়Candidate KeyComposite Key
সংজ্ঞাএকা একটা কলাম (বা কলাম সেট) যা রো-কে ইউনিক করেএকাধিক কলাম মিলে একসাথে ইউনিক হয়
উদাহরণStudent_ID একাই যথেষ্ট(Student_ID + Course_ID) মিলে একটা "Enrollment" ইউনিক করে
বিগিনার ভুল: অনেকে ভাবে Composite Key মানেই Alternate Key — না, এরা আলাদা কনসেপ্ট। Composite Key একাধিক কলাম নিয়ে গঠিত, আর Alternate Key হলো বাছাই না হওয়া Candidate Key।
04

বাস্তব-জগতের উদাহরণ

⏱ শেখার অংশ

🎓 University Database

Student_ID PK
Registration_Number AK
University_Email AK

🏢 Employee Database

Employee_ID PK
National_ID AK
Office_Email AK

🛒 Customer Database

Customer_ID PK
Email AK
Phone Number (যদি ইউনিক হয়) AK

🚗 Vehicle Registration

Vehicle_ID PK
Registration_Number AK
Chassis_Number AK

🤔 ক্লাস আলোচনা
  • Vehicle_ID কেন Primary Key, Chassis_Number কেন না? — কারণ Vehicle_ID ছোট, নিয়ন্ত্রিত, আর ডাটাবেস নিজেই তৈরি করে। Chassis_Number দৈর্ঘ্যে বড় ও প্রস্তুতকারক-নির্ভর।
  • Phone Number কেন সবসময় ভালো Primary বা এমনকি Alternate Key না? — কারণ মানুষ নাম্বার বদলায়, এবং কখনো কখনো শেয়ার করে (পারিবারিক নাম্বার)।

মূলনীতি: Primary Key হওয়ার জন্য একটা কলাম হতে হবে — স্থির (stable), ছোট, কখনো না বদলানো, আর সহজে ইনডেক্স করা যায় এমন। যেগুলো এই শর্ত পূরণ করে না কিন্তু তবুও ইউনিক, তারা Alternate Key থেকে যায়।

05

SQL-এ Alternate Key ইমপ্লিমেন্ট করা

⏱ শেখার অংশ

আমরা একটা Employees টেবিল বানাবো। ধরে নিচ্ছি তোমরা এর আগে কখনো SQL লেখোনি — তাই প্রতিটা লাইন ব্যাখ্যা করা হবে।

ধাপ ১ — ডাটাবেস তৈরি

schema.sqlMySQL
-- একটা নতুন ডাটাবেস তৈরি হচ্ছে
CREATE DATABASE company_db;
USE company_db;
✔ OUTPUT
Query OK, 1 row affected
Database changed

লাইন-বাই-লাইন: CREATE DATABASE একটা নতুন খালি ডাটাবেস বানায়। USE বলে দেয় এখন থেকে সব কমান্ড এই ডাটাবেসের ভেতরে চলবে।

ধাপ ২ — Primary Key ও Alternate Key সহ টেবিল

create_table.sqlMySQL
CREATE TABLE Employees (
    Employee_ID INT AUTO_INCREMENT PRIMARY KEY,
    National_ID VARCHAR(20) NOT NULL UNIQUE,
    Office_Email VARCHAR(100) NOT NULL UNIQUE,
    Phone_Number VARCHAR(20),
    Full_Name VARCHAR(100) NOT NULL
);
✔ OUTPUT
Query OK, 0 rows affected
Table 'Employees' created

লাইন-বাই-লাইন ব্যাখ্যা:

  • Employee_ID ... PRIMARY KEY — এটাই আমাদের প্রধান পরিচয়, স্বয়ংক্রিয়ভাবে বাড়ে (AUTO_INCREMENT)।
  • National_ID ... UNIQUE — এটা Alternate Key; ডুপ্লিকেট হতে দেবে না।
  • Office_Email ... UNIQUE — এটাও Alternate Key।
  • Phone_Number — এখানে UNIQUE নেই, কারণ ফোন নাম্বার শেয়ার হতে পারে (তাই এটা Candidate Key নয়)।
বিগিনার ভুল: UNIQUE লিখতে ভুলে যাওয়া — তখন MySQL ডুপ্লিকেট National_ID বা Email ঢুকতে দেবে, যা ডেটাকে অসামঞ্জস্যপূর্ণ করে তুলবে।
বেস্ট প্র্যাকটিস: Alternate Key-এর কলামে সবসময় NOT NULL UNIQUE একসাথে ব্যবহার করো, যাতে খালি মান আর ডুপ্লিকেট — দুটোই আটকানো যায়।

ধাপ ৩ — বৈধ রেকর্ড ইনসার্ট করা

insert_valid.sqlMySQL
INSERT INTO Employees (National_ID, Office_Email, Phone_Number, Full_Name)
VALUES
('19850012345', 'rahim@company.com', '01711000111', 'Rahim Uddin'),
('19900098765', 'karim@company.com', '01911000222', 'Karim Hossain');
✔ OUTPUT
Query OK, 2 rows affected

SELECT * FROM Employees;
+-------------+--------------+--------------------+--------------+---------------+
| Employee_ID | National_ID  | Office_Email       | Phone_Number | Full_Name     |
+-------------+--------------+--------------------+--------------+---------------+
| 1           | 19850012345  | rahim@company.com  | 01711000111  | Rahim Uddin   |
| 2           | 19900098765  | karim@company.com  | 01911000222  | Karim Hossain |
+-------------+--------------+--------------------+--------------+---------------+

ধাপ ৪ — ডুপ্লিকেট ঢোকানোর চেষ্টা (Alternate Key কাজ করছে!)

insert_duplicate.sqlMySQL
INSERT INTO Employees (National_ID, Office_Email, Phone_Number, Full_Name)
VALUES ('19850012345', 'new_rahim@company.com', '01700000000', 'Fake Rahim');
✖ ERROR
ERROR 1062 (23000): Duplicate entry '19850012345' for key 'National_ID'

এখানে দেখো — Employee_ID ভিন্ন হলেও, National_ID (Alternate Key) আগে থেকেই আছে, তাই MySQL এই রেকর্ড প্রত্যাখ্যান করেছে। এটাই Alternate Key-এর আসল কাজ — একই বাস্তব মানুষকে দুইবার ভিন্ন Employee_ID দিয়ে ঢুকতে না দেওয়া

বেস্ট প্র্যাকটিস: Primary Key শুধু "রো ইউনিক" রাখে, কিন্তু বাস্তব-জগতের ডুপ্লিকেট (একই মানুষ দুইবার) ঠেকাতে Alternate Key অপরিহার্য।
06

বিজনেস কেস স্টাডি — Employee Management System

⏱ শেখার অংশ
কেস স্টাডি একটা কোম্পানি তাদের Employee Management System বানাচ্ছে। টেবিলে কলাম: Employee_ID, National_ID, Office_Email, Phone_Number। প্রশ্ন: কোনটা Primary Key হবে, আর কোনগুলো Alternate Key?
কলামইউনিক?স্থির (Stable)?সিদ্ধান্ত
Employee_IDহ্যাঁহ্যাঁ (সিস্টেম-জেনারেটেড)Primary Key
National_IDহ্যাঁহ্যাঁAlternate Key
Office_Emailহ্যাঁমোটামুটি (পদ বদলালে বদলাতে পারে)Alternate Key
Phone_Numberনা (শেয়ার হতে পারে)না (প্রায়ই বদলায়)Candidate Key নয়

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

Employees (ER) 🔑 Employee_ID (PK) 🔷 National_ID (AK, UNIQUE) 🔷 Office_Email (AK, UNIQUE) Phone_Number Full_Name

ER ডায়াগ্রাম: একটাই 🔑 Primary Key, একাধিক 🔷 Alternate Key

07

প্র্যাকটিক্যাল সেশন — MySQL Workbench / Google Colab

⏱ শেখার অংশ

এখন সবাই নিজের হাতে করবে। ধাপে ধাপে অনুসরণ করো — কেউ SQL আগে লেখোনি ধরেই এগোচ্ছি।

ধাপ ১: ডাটাবেস বানাও

step1.sql
CREATE DATABASE practice_db;
USE practice_db;
✔ OUTPUT
Database created and selected

ধাপ ২: টেবিল বানাও + Primary/Alternate Key দাও

step2.sql
CREATE TABLE Students (
    Student_ID INT AUTO_INCREMENT PRIMARY KEY,
    Registration_Number VARCHAR(20) NOT NULL UNIQUE,
    University_Email VARCHAR(100) NOT NULL UNIQUE,
    Student_Name VARCHAR(100) NOT NULL
);
✔ OUTPUT
Table 'Students' created

ধাপ ৩: বৈধ ডেটা ইনসার্ট করো

step3.sql
INSERT INTO Students (Registration_Number, University_Email, Student_Name)
VALUES ('REG-2024-001', 'nabila@uni.edu.bd', 'Nabila Islam');
✔ OUTPUT
1 row inserted (Student_ID = 1, auto-generated)

ধাপ ৪: ডুপ্লিকেট ঢোকানোর চেষ্টা করো

step4.sql
INSERT INTO Students (Registration_Number, University_Email, Student_Name)
VALUES ('REG-2024-001', 'another@uni.edu.bd', 'Someone Else');
✖ ERROR
ERROR 1062: Duplicate entry 'REG-2024-001' for key 'Registration_Number'

ধাপ ৫: কেন এই এরর হলো তা ব্যাখ্যা করো

কারণ Registration_Number-কে আমরা UNIQUE constraint দিয়ে Alternate Key বানিয়েছি। MySQL নিজে থেকেই ডুপ্লিকেট আটকে দিয়েছে — আমাদের কোনো অতিরিক্ত কোড লিখতে হয়নি।

সাধারণ ভুল: AUTO_INCREMENT থাকলেই ভাবা যে "সব ঠিক আছে" — কিন্তু Student_ID পরের সংখ্যা নেবে, তাতে Registration_Number-এর ডুপ্লিকেট আটকাবে না। UNIQUE আলাদাভাবে লাগবেই।
বেস্ট প্র্যাকটিস: প্রতিটা "বাস্তব-জগতের ইউনিক আইডি" (ইমেইল, রেজিস্ট্রেশন নাম্বার, ন্যাশনাল আইডি) কে UNIQUE constraint দাও, শুধু Primary Key-এর উপর ভরসা কোরো না।
08

সাধারণ বিগিনার ভুল

⏱ শেখার অংশ
ভুল ১: Alternate Key-কে Primary Key ভেবে ফেলা। মনে রাখো — টেবিলে Primary Key মাত্র একটাই থাকে।
ভুল ২: ভাবা যে প্রতিটা UNIQUE কলামই স্বয়ংক্রিয়ভাবে Primary Key হয়ে যায়। না — UNIQUE কলাম Candidate/Alternate Key হতে পারে, কিন্তু Primary হতে হলে ডিজাইনারকে সেটা বেছে নিতে হয়।
ভুল ৩: Alternate Key কলামে UNIQUE constraint দিতে ভুলে যাওয়া — ফলে ডুপ্লিকেট রেকর্ড ঢুকে যায় নীরবে।
ভুল ৪: ফোন নাম্বারের মতো অস্থির (unstable) মান-কে গুরুত্বপূর্ণ শনাক্তকারী হিসেবে বেছে নেওয়া — এগুলো বদলায়, শেয়ার হয়, তাই ঝুঁকিপূর্ণ।
ভুল ৫: Candidate Key আর Alternate Key গুলিয়ে ফেলা — Candidate Key মানে "প্রার্থী" (সবাই), Alternate Key মানে "যাদের বাছা হয়নি" (Primary বাদে বাকিরা)।

ব্যবহারিক সমাধান: টেবিল ডিজাইন করার আগে কাগজে লিখে ফেলো — কোন কলামগুলো ইউনিক হতে পারে (Candidate Key তালিকা), তারপর সবচেয়ে স্থির ও ছোট কলামটাকে Primary বানাও, বাকিদের UNIQUE constraint দাও।

09

ইন্ডাস্ট্রি বেস্ট প্র্যাকটিস

⏱ শেখার অংশ

স্থির Primary Key বাছা

সিস্টেম-জেনারেটেড, ছোট, কখনো না বদলানো ID (যেমন AUTO_INCREMENT INT বা UUID) ব্যবহার করো — বাস্তব-জগতের ডেটার উপর নির্ভর কোরো না।

Alternate Key সত্যিকারের ইউনিক রাখা

UNIQUE constraint দাও এবং নিয়মিত ডেটা কোয়ালিটি চেক করো, যাতে অ্যাপ্লিকেশন লেভেলের বাগ দিয়ে ডুপ্লিকেট ঢুকে না যায়।

ঘন ঘন বদলানো মান এড়ানো

ফোন নাম্বার, ঠিকানা, পদবি — এগুলো Key হিসেবে ব্যবহার না করাই ভালো, কারণ এরা সময়ের সাথে বদলায়।

নামকরণ ও ডকুমেন্টেশন

প্রতিটা Alternate Key স্পষ্টভাবে ডকুমেন্ট করো (কেন এটা UNIQUE, কেন এটা Primary নয়) — যাতে ভবিষ্যতের ডেভেলপার বুঝতে পারে।

10

ক্লাসরুম ইন্টারঅ্যাকটিভ অ্যাক্টিভিটি

⏱ শেখার অংশ

অ্যাক্টিভিটি ১ — Candidate Key খুঁজে বের করো

একটা "Hospital Patient" টেবিলে কলাম আছে: Patient_ID, National_ID, Health_Card_Number, Phone_Number, Name। কোনগুলো Candidate Key?

অ্যাক্টিভিটি ২ — সেরা Primary Key বাছো

উপরের Candidate Key গুলোর মধ্যে কোনটা Primary Key হওয়া উচিত এবং কেন — গ্রুপে আলোচনা করো।

অ্যাক্টিভিটি ৩ — ডিজাইনের ভুল খুঁজে বের করো

একটা টেবিলে দুইটা Primary Key ঘোষণা করা হয়েছে — এটা কেন ভুল, ব্যাখ্যা করো।

অ্যাক্টিভিটি ৪ — নিজের ডিজাইন বানাও

একটা "Library Management" সিস্টেমের জন্য Candidate, Primary, এবং Alternate Key সহ একটা টেবিল ডিজাইন করো।

11

রিভিশন ও কুইজ

⏱ শেখার অংশ

দ্রুত রিভিশন নোট

  • Candidate Key = ইউনিক শনাক্তকরণের যোগ্য সব কলাম
  • Primary Key = Candidate Key থেকে বাছাই করা একমাত্র প্রধান কলাম
  • Alternate Key = বাছাই না হওয়া বাকি Candidate Key গুলো
  • Alternate Key বাস্তবায়িত হয় UNIQUE constraint দিয়ে
  • Primary Key কখনো NULL হতে পারে না; Alternate Key-ও সাধারণত NOT NULL রাখা হয়

ইন্টারঅ্যাকটিভ কুইজ

প্রশ্ন ১: একটা টেবিলে সর্বোচ্চ কয়টা Primary Key থাকতে পারে?
(ক) ৩টা (খ) ১টা (গ) যত ইচ্ছা (ঘ) ০টা
উত্তর: (খ) ১টা
প্রশ্ন ২: SQL-এ Alternate Key বাস্তবায়ন করা হয় কোন constraint দিয়ে?
(ক) FOREIGN KEY (খ) CHECK (গ) UNIQUE (ঘ) DEFAULT
উত্তর: (গ) UNIQUE
প্রশ্ন ৩: Student_ID, Reg_No, Email — তিনটাই ইউনিক। Student_ID-কে Primary বানানো হলে বাকি দুইটাকে কী বলা হবে?
(ক) Alternate Key (খ) Foreign Key (গ) Composite Key (ঘ) Super Key শুধু
উত্তর: (ক) Alternate Key
প্রশ্ন ৪: Phone_Number সাধারণত Candidate Key নয় কেন?
(ক) এটা সংখ্যা (খ) এটা বদলাতে/শেয়ার হতে পারে (গ) এটা টেক্সট আকারে থাকে (ঘ) এটা খুব লম্বা
উত্তর: (খ) এটা বদলাতে/শেয়ার হতে পারে
12

বোনাস ১ Database Key-এর সংক্ষিপ্ত ইতিহাস

⏱ শেখার অংশ
১৯৭০ — E.F. Codd রিলেশনাল মডেল প্রস্তাব করেন, যেখানে প্রথমবার "Key" ধারণা আসে ডেটাকে টেবিলে সংগঠিত করার জন্য।
১৯৭০-এর দশক — Candidate Key ও Primary Key-এর ফরমাল সংজ্ঞা রিলেশনাল ডাটাবেস থিওরিতে প্রতিষ্ঠিত হয়।
১৯৮০-এর দশক — বাণিজ্যিক RDBMS (Oracle, DB2) UNIQUE constraint চালু করে, যা দিয়ে Alternate Key বাস্তবে প্রয়োগ করা সহজ হয়।
১৯৯০-এর দশক — SQL স্ট্যান্ডার্ড (SQL-92) PRIMARY KEY ও UNIQUE constraint আনুষ্ঠানিকভাবে সংজ্ঞায়িত করে।
বর্তমান — MySQL, PostgreSQL সহ সব আধুনিক ডাটাবেসে Alternate Key ব্যবহারিকভাবে UNIQUE constraint হিসেবেই প্রয়োগ হয়।
13

বোনাস ২ মিনি প্রজেক্ট — University Management System

⏱ শেখার অংশ

নিচের টেবিলটা একসাথে বানাই, যেখানে Candidate Key, Primary Key নির্বাচন, এবং Alternate Key সবকিছু একসাথে দেখানো হয়েছে।

mini_project.sql
CREATE TABLE Students (
    Student_ID       INT AUTO_INCREMENT PRIMARY KEY,
    Registration_No  VARCHAR(20)  NOT NULL UNIQUE,
    University_Email VARCHAR(100) NOT NULL UNIQUE,
    National_ID      VARCHAR(20)  NOT NULL UNIQUE,
    Full_Name        VARCHAR(100) NOT NULL,
    Department       VARCHAR(50)
);

INSERT INTO Students
(Registration_No, University_Email, National_ID, Full_Name, Department)
VALUES
('REG-001', 'anika@uni.edu.bd', '19980011122', 'Anika Rahman', 'CSE'),
('REG-002', 'tanvir@uni.edu.bd', '19970022233', 'Tanvir Ahmed', 'EEE');
✔ OUTPUT
+------------+----------------+---------------------+--------------+---------------+------------+
| Student_ID | Registration_No| University_Email    | National_ID  | Full_Name     | Department |
+------------+----------------+---------------------+--------------+---------------+------------+
| 1          | REG-001        | anika@uni.edu.bd    | 19980011122  | Anika Rahman  | CSE        |
| 2          | REG-002        | tanvir@uni.edu.bd   | 19970022233  | Tanvir Ahmed  | EEE        |
+------------+----------------+---------------------+--------------+---------------+------------+

ফলাফল: Student_ID হলো Primary Key; Registration_No, University_Email, National_ID — তিনটাই Alternate Key, প্রতিটাই আলাদা UNIQUE constraint দিয়ে সুরক্ষিত।

14

বোনাস ৩ প্রফেশনাল ওয়ার্কফ্লো

⏱ শেখার অংশ

Database Architect

বিজনেস রিকোয়ারমেন্ট থেকে সব সম্ভাব্য Candidate Key চিহ্নিত করেন এবং কোনটা স্থিতিশীল তা যাচাই করেন।

DBA (Database Administrator)

Primary ও Alternate Key-এর উপর ইনডেক্স ও constraint বাস্তবায়ন এবং পারফরম্যান্স মনিটর করেন।

Data Engineer

ডেটা পাইপলাইনে Alternate Key ব্যবহার করে ডুপ্লিকেট রেকর্ড মার্জ বা সনাক্ত করেন (deduplication)।

Data Analyst

রিপোর্টিং-এর সময় Alternate Key (যেমন Email) দিয়ে বিভিন্ন সিস্টেমের ডেটা জোড়া লাগান (join/match)।

15

বোনাস ৪ শীর্ষ ৩০টি বিগিনার ইন্টারভিউ প্রশ্ন

⏱ শেখার অংশ
16

শেষ ক্লাস এক্সারসাইজ ও হোমওয়ার্ক

⏱ হোমওয়ার্ক

ক্লাসরুম এক্সারসাইজ

একটা "Hospital" ডাটাবেসে Doctor টেবিল বানাও যেখানে Doctor_ID (Primary), BMDC_Registration_No এবং Office_Email (Alternate Key) থাকবে। UNIQUE constraint সহ সম্পূর্ণ CREATE TABLE কোয়েরি লেখো।

হোমওয়ার্ক অ্যাসাইনমেন্ট

১. একটা "Online Bookstore" সিস্টেমের জন্য Book টেবিল ডিজাইন করো — কমপক্ষে ৩টা Candidate Key খুঁজে বের করে একটাকে Primary ও বাকিদের Alternate Key বানাও।

২. উপরের টেবিলে বৈধ ডেটা ইনসার্ট করো, তারপর ইচ্ছাকৃতভাবে একটা ডুপ্লিকেট Alternate Key ইনসার্ট করার চেষ্টা করো এবং এররটা স্ক্রিনশট নিয়ে জমা দাও।

৩. লিখে ব্যাখ্যা করো — কেন তুমি নির্দিষ্ট কলামটাকে Primary Key হিসেবে বাছলে, বাকিদের কেন না।