বর্তমান ডিজিটাল বিশ্বে প্রায় প্রতিটি সফটওয়্যার, ওয়েবসাইট এবং মোবাইল অ্যাপের পেছনে একটি ডেটাবেস (Database) কাজ করে। এই ডেটাবেসে তথ্য সঠিকভাবে সংরক্ষণ, খুঁজে বের করা এবং পরিচালনার জন্য কিছু মৌলিক ধারণা জানা অত্যন্ত জরুরি।
এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ দুটি ধারণা হলোঃ
- NULL Value (নাল ভ্যালু)
- Primary Key (প্রাইমারি কী)
আপনি যদি SQL, MySQL, PostgreSQL, Oracle, SQL Server কিংবা যেকোনো Relational Database Management System (RDBMS) শিখতে চান, তাহলে এই দুটি বিষয় ভালোভাবে বোঝা বাধ্যতামূলক।
পোস্ট সূচিপত্র
ডেটাবেস কী?
টেবিল কী?
NULL Value কী?
NULL-এর বাস্তব উদাহরণ
NULL কী বোঝায়?
NULL এবং Zero কি একই?
NULL এবং Empty String কি একই?
Primary Key কী?
কেন Primary Key দরকার?
Primary Key-এর বৈশিষ্ট্য
কোন কোন তথ্য Primary Key হতে পারে?
Primary Key-এর উদাহরণ
Primary Key-এ NULL কেন রাখা যায় না?
ডেটাবেসে "Key" কী?
Candidate Key কী?
Alternate Key কী?
Super Key কী?
Composite Key কী?
Foreign Key কী?
Primary Key তৈরির নিয়ম
SQL-এ Primary Key তৈরি
SQL-এ NULL
NOT NULL কী?
NULL পরীক্ষা করার নিয়ম
NULL নিয়ে সাধারণ ভুল
বাস্তব জীবনের উদাহরণ
ডেটাবেস ডিজাইনে NULL কম রাখা কেন ভালো?
Primary Key বনাম Unique Key
Primary Key বনাম Foreign Key
NULL বনাম Default Value
Primary Key এবং Index-এর সম্পর্ক
বাস্তব জীবনের সফটওয়্যারে Primary Key-এর ব্যবহার
Database Design Best Practices
ইন্টারভিউতে সাধারণ প্রশ্ন
মূল বিষয়গুলো এক নজরে
বাস্তব জীবনে NULL Value ও Primary Key-এর গুরুত্ব
নতুন শিক্ষার্থীদের জন্য শেখার ধাপ
FAQ
ডেটাবেস কী?
ডেটাবেস হলো এমন একটি সংগঠিত তথ্যভান্ডার যেখানে তথ্য নির্দিষ্ট নিয়ম অনুযায়ী সংরক্ষণ করা হয়।
উদাহরণঃ
একটি স্কুলের ডেটাবেসে থাকতে পারে। যেমনঃ
- শিক্ষার্থীর আইডি
- নাম
- ঠিকানা
- মোবাইল নম্বর
- জন্মতারিখ
- শ্রেণি
এই তথ্যগুলো সাধারণত টেবিল (Table) আকারে রাখা হয়।
টেবিল কী?
ডেটাবেসে তথ্য সাধারণত টেবিলে সংরক্ষণ করা হয়।
উদাহরণঃ
| Student_ID | Name | Phone |
|---|---|---|
| 101 | Rahim | 017XXXXXXXX |
| 102 | Karim | 018XXXXXXXX |
এখানেঃ
- প্রতিটি Row = একটি Record
- প্রতিটি Column = একটি Field
NULL Value কী?
NULL এমন একটি বিশেষ মান, যা বোঝায় কোনো তথ্য বর্তমানে অজানা (Unknown), দেওয়া হয়নি (Missing), অথবা প্রযোজ্য নয় (Not Applicable)।
অর্থাৎ, NULL মানে শূন্য (0) নয় এবং ফাঁকা স্ট্রিং ("")-ও নয়। এটি সম্পূর্ণ ভিন্ন একটি ধারণা।
NULL-এর বাস্তব উদাহরণ
ধরুন একটি কর্মচারীর তথ্য সংরক্ষণ করা হচ্ছে।
| ID | Name | |
| 1 | Rahim | rahim@email.com |
| 2 | Karim | NULL |
এখানে Karim-এর Email এখনো যোগ করা হয়নি। তাই Email ঘরে NULL রয়েছে।
NULL কী বোঝায়?
NULL বিভিন্ন অর্থ প্রকাশ করতে পারে।
যেমনঃ
- তথ্য এখনো পাওয়া যায়নি।
- তথ্য জানা নেই।
- তথ্য প্রযোজ্য নয়।
- ব্যবহারকারী তথ্য দেননি।
NULL এবং Zero কি একই?
না।
উদাহরণঃ
Salary = 0
মানেঃ
বেতন শূন্য।
কিন্তু
Salary = NULL
মানেঃ
বেতন জানা নেই। দুটির অর্থ সম্পূর্ণ আলাদা।
NULL এবং Empty String কি একই?
এটিও নয়।
উদাহরণঃ
Name = ""
মানেঃ
ব্যবহারকারী খালি স্ট্রিং জমা দিয়েছেন।
কিন্তু
Name = NULL
মানেঃ
কোনো মানই সংরক্ষিত নেই।
Primary Key কী?
Primary Key হলো এমন একটি Column (বা একাধিক Column-এর সমন্বয়), যার মাধ্যমে টেবিলের প্রতিটি Record-কে স্বতন্ত্রভাবে (Uniquely) শনাক্ত করা যায়। সহজভাবে বললে,
প্রাইমারি কী হলো টেবিলের প্রতিটি সারির অনন্য পরিচয়পত্র (Unique Identifier)।
উদাহরণ
| Student_ID | Name |
| 101 | Rahim |
| 102 | Karim |
| 103 | Hasan |
এখানে
Student_ID
হলো Primary Key।
কারণঃ
- প্রতিটি মান আলাদা।
- কোনো পুনরাবৃত্তি নেই।
- কোনো NULL নেই।
কেন Primary Key দরকার?
যদি Primary Key না থাকে তাহলেঃ
- একই ব্যক্তি একাধিকবার থাকতে পারে।
- তথ্য শনাক্ত করা কঠিন হবে।
- আপডেট ও ডিলিটে সমস্যা হবে।
Primary Key-এর বৈশিষ্ট্য
একটি ভালো Primary Key অবশ্যইঃ
✔ Unique হবে।
✔ NULL হবে না।
✔ প্রতিটি Record আলাদা করবে।
✔ যতটা সম্ভব স্থায়ী হবে।
কোন কোন তথ্য Primary Key হতে পারে?
যেমনঃ
- Student ID
- Employee ID
- National ID (সব ক্ষেত্রে নয়)
- Roll Number
- Product ID
- Order ID
- Invoice Number
Primary Key-এর উদাহরণ
একটি ই-কমার্স সাইটঃ
| Order_ID | Customer |
| 10001 | Rahim |
| 10002 | Karim |
| 10003 | Hasan |
এখানে Order_ID হলো Primary Key।
Primary Key-এ NULL কেন রাখা যায় না?
- কারণ Primary Key প্রতিটি রেকর্ডকে সনাক্ত করে।
- যদি NULL থাকে,
- তাহলে সেই Record-এর কোনো নির্দিষ্ট পরিচয় থাকবে না।
- এটি ডেটাবেসের মৌলিক নিয়ম ভঙ্গ করে।
ডেটাবেসে "Key" কী?
ডেটাবেসে Key হলো এমন একটি বা একাধিক কলাম, যা কোনো রেকর্ডকে শনাক্ত করতে, সম্পর্ক (Relationship) তৈরি করতে এবং ডেটার অখণ্ডতা (Data Integrity) বজায় রাখতে ব্যবহৃত হয়। Relational Database-এ বিভিন্ন ধরনের Key রয়েছে।
সবচেয়ে গুরুত্বপূর্ণ হলোঃ
- Primary Key
- Foreign Key
- Candidate Key
- Alternate Key
- Composite Key
- Super Key
Candidate Key কী?
Candidate Key হলো এমন একটি কলাম (বা কলামের সমন্বয়), যা প্রতিটি রেকর্ডকে স্বতন্ত্রভাবে (Uniquely) শনাক্ত করতে পারে। অর্থাৎ, Candidate Key-এর প্রতিটি মান Unique এবং NULL হতে পারে না।
উদাহরণ
| Student_ID | Name | |
|---|---|---|
| 101 | rahim@gmail.com | Rahim |
| 102 | karim@gmail.com | Karim |
এখানেঃ
- Student_ID
দুটিই Candidate Key হতে পারে, কারণ উভয়ই প্রতিটি রেকর্ডকে আলাদা করে শনাক্ত করতে সক্ষম।
Alternate Key কী?
যে Candidate Key-টি Primary Key হিসেবে নির্বাচিত হয় না, সেটিই Alternate Key।
উপরের উদাহরণেঃ
Primary Key = Student_ID
Alternate Key = Email
Super Key কী?
Super Key হলো এমন একটি কলাম বা কলামের সমন্বয় যা একটি রেকর্ডকে অনন্যভাবে শনাক্ত করতে পারে।
উদাহরণঃ
- Student_ID
- Student_ID + Name
- Student_ID + Phone
সবগুলোই Super Key হতে পারে। তবে এদের মধ্যে সবচেয়ে ছোট এবং কার্যকর Candidate Key-কে সাধারণত Primary Key হিসেবে নির্বাচন করা হয়।
Composite Key কী?
যখন একাধিক কলাম একত্রে একটি রেকর্ডকে অনন্যভাবে শনাক্ত করে, তখন তাকে Composite Key বলা হয়।
উদাহরণ
| Student_ID | Course_ID |
| 101 | CSE101 |
| 101 | CSE102 |
এখানে শুধুমাত্র Student_ID বা Course_ID আলাদাভাবে Unique নয়।
কিন্তু:
(Student_ID + Course_ID)
একসঙ্গে Unique।
এটিই Composite Key।
Foreign Key কী?
Foreign Key এমন একটি কলাম, যা অন্য একটি টেবিলের Primary Key-কে নির্দেশ করে। এর মাধ্যমে দুটি টেবিলের মধ্যে সম্পর্ক (Relationship) তৈরি হয়।
উদাহরণ
Students Table
| Student_ID | Name |
| 101 | Rahim |
| 102 | Karim |
Results Table
| Result_ID | Student_ID | GPA |
| 1 | 101 | 3.80 |
| 2 | 102 | 3.60 |
এখানে Results টেবিলের Student_ID হলো Foreign Key।
Primary Key তৈরির নিয়ম
একটি ভালো Primary Key নির্বাচন করার সময় নিচের বিষয়গুলো মাথায় রাখতে হবে।
১. Unique হতে হবে
দুটি রেকর্ডে একই Primary Key থাকতে পারবে না।
২. NULL হবে না
Primary Key কখনো NULL হতে পারে না।
৩. স্থায়ী (Stable) হওয়া উচিত
যে মান ঘন ঘন পরিবর্তিত হয়, সেটিকে Primary Key হিসেবে ব্যবহার করা উচিত নয়।
৪. ছোট (Short) হওয়া ভালো
অপ্রয়োজনীয় দীর্ঘ Key ব্যবহার করলে কর্মক্ষমতা কমতে পারে।
SQL-এ Primary Key তৈরি
CREATE TABLE Students (Student_ID INT PRIMARY KEY,Name VARCHAR(100),Email VARCHAR(100));
এখানে:
Student_ID হলো Primary Key।
SQL-এ NULL
INSERT INTO Students(Name, Email)VALUES('Rahim', NULL);
এখানে Email-এর কোনো তথ্য দেওয়া হয়নি।
NOT NULL কী?
যদি কোনো কলামে NULL গ্রহণযোগ্য না হয়, তাহলে NOT NULL Constraint ব্যবহার করা হয়।
CREATE TABLE Employee (Employee_ID INT PRIMARY KEY,Name VARCHAR(100) NOT NULL);
এখানে Name অবশ্যই দিতে হবে।
NULL পরীক্ষা করার নিয়ম
অনেক নতুন শিক্ষার্থী নিচের ভুলটি করেন।
WHERE Email = NULLএটি ভুল।
সঠিক হবেঃ
WHERE Email IS NULLআর NULL নয় এমন মান খুঁজতেঃ
WHERE Email IS NOT NULL;NULL নিয়ে সাধারণ ভুল
ভুল ১
NULL = 0
❌ ভুল
ভুল ২
NULL = ""
❌ ভুল
ভুল ৩
NULL = NULL
SQL-এ এটিও সত্য (TRUE) হিসেবে গণ্য হয় না।
NULL তুলনা করার জন্য সবসময়ঃ
- IS NULL
- IS NOT NULL
ব্যবহার করতে হয়।
বাস্তব জীবনের উদাহরণ
একটি হাসপাতালের ডেটাবেস।
| Patient_ID | Blood_Group |
| 1001 | A+ |
| 1002 | NULL |
এর অর্থঃ
রোগীর Blood Group এখনো জানা যায়নি।
এটি "A+" নয়, "O+" নয়, এমনকি "খালি"ও নয়।
এটি Unknown।
ডেটাবেস ডিজাইনে NULL কম রাখা কেন ভালো?
অতিরিক্ত NULL থাকলেঃ
- Query জটিল হয়।
- রিপোর্ট তৈরি কঠিন হয়।
- ডেটা বিশ্লেষণ কঠিন হতে পারে।
- Data Quality কমে যায়।
তাই Database Design-এর সময় শুধুমাত্র প্রয়োজন হলে NULL ব্যবহার করা উচিত।
Primary Key বনাম Unique Key
অনেকেই Primary Key এবং Unique Key-কে একই মনে করেন। যদিও দুটিই ডেটাকে অনন্য (Unique) রাখতে সাহায্য করে, তবুও গুরুত্বপূর্ণ কিছু পার্থক্য রয়েছে।
| বৈশিষ্ট্য | Primary Key | Unique Key |
|---|---|---|
| প্রতিটি টেবিলে সংখ্যা | মাত্র ১টি | একাধিক হতে পারে |
| NULL গ্রহণ করে | না | অধিকাংশ DBMS-এ একটি বা একাধিক NULL গ্রহণ করতে পারে (সিস্টেমভেদে ভিন্ন হতে পারে) |
| মূল উদ্দেশ্য | প্রতিটি রেকর্ড শনাক্ত করা | ডুপ্লিকেট প্রতিরোধ করা |
উদাহরণ
একটি Students টেবিলেঃ
- Student_ID = Primary Key
- Email = Unique Key
এখানে Email পুনরাবৃত্তি হবে না, কিন্তু Student_ID প্রতিটি রেকর্ডের প্রধান পরিচয় হিসেবে ব্যবহৃত হবে।
Primary Key বনাম Foreign Key
| Primary Key | Foreign Key |
| নিজ টেবিলের রেকর্ডকে শনাক্ত করে | অন্য টেবিলের Primary Key-কে রেফার করে |
| Unique | Unique হওয়া বাধ্যতামূলক নয় |
| NULL গ্রহণ করে না | অনেক ক্ষেত্রে NULL গ্রহণ করতে পারে (ডিজাইনের ওপর নির্ভর করে) |
| একটি টেবিলে সাধারণত একটি | একাধিক থাকতে পারে |
উদাহরণ
Customers Table
| Customer_ID | Name |
| 1001 | Rahim |
| 1002 | Karim |
Orders Table
| Order_ID | Customer_ID |
| 5001 | 1001 |
| 5002 | 1002 |
এখানেঃ
- Customers.Customer_ID = Primary Key
- Orders.Customer_ID = Foreign Key
NULL বনাম Default Value
এ দুটি বিষয়ও প্রায়ই গুলিয়ে ফেলা হয়।
NULL
অর্থঃ
কোনো মান নেই বা তথ্য অজানা।
DEFAULT
অর্থঃ
ব্যবহারকারী মান না দিলে ডেটাবেস একটি পূর্বনির্ধারিত মান সংরক্ষণ করবে।
উদাহরণ
Status VARCHAR(20) DEFAULT 'Active'যদি Status না দেওয়া হয়, তাহলে স্বয়ংক্রিয়ভাবে "Active" সংরক্ষিত হবে।
এটি NULL নয়।
Primary Key এবং Index-এর সম্পর্ক
বেশিরভাগ Relational Database Management System (যেমন MySQL, PostgreSQL, SQL Server, Oracle) Primary Key-এর জন্য স্বয়ংক্রিয়ভাবে একটি Index তৈরি করে।
এর সুবিধাঃ
- দ্রুত অনুসন্ধান (Fast Search)
- দ্রুত Update
- দ্রুত Delete
- Join Query আরও কার্যকরভাবে সম্পন্ন হয়
এ কারণে Primary Key শুধু ডেটা শনাক্তই করে না, Query Performance উন্নত করতেও গুরুত্বপূর্ণ ভূমিকা রাখে।
বাস্তব জীবনের সফটওয়্যারে Primary Key-এর ব্যবহার
প্রায় সব আধুনিক সফটওয়্যারে Primary Key ব্যবহৃত হয়।
ই-কমার্স
- Product_ID
- Order_ID
- Customer_ID
ব্যাংকিং
- Account_Number
- Transaction_ID
হাসপাতাল
- Patient_ID
- Doctor_ID
- Prescription_ID
বিশ্ববিদ্যালয়
- Student_ID
- Teacher_ID
- Course_ID
সামাজিক যোগাযোগমাধ্যম
- User_ID
- Post_ID
- Comment_ID
Database Design Best Practices
একটি ভালো ডেটাবেস ডিজাইনের জন্য নিচের বিষয়গুলো অনুসরণ করা উচিত।
১. অর্থবহ Primary Key ব্যবহার করুন
যেখানে সম্ভব Auto Increment ID অথবা UUID ব্যবহার করা যায়।
২. পরিবর্তনশীল তথ্য Primary Key করবেন না
যেমনঃ
- মোবাইল নম্বর
- ইমেইল
- ঠিকানা
এসব পরিবর্তন হতে পারে।
৩. অপ্রয়োজনীয় NULL এড়িয়ে চলুন
যেসব তথ্য অবশ্যই থাকা উচিত, সেখানে NOT NULL Constraint ব্যবহার করুন।
৪. ডেটার পুনরাবৃত্তি কমান
Normalization অনুসরণ করলে একই তথ্য বারবার সংরক্ষণ করতে হয় না।
৫. Foreign Key ব্যবহার করুন
এটি Referential Integrity বজায় রাখতে সাহায্য করে এবং ভুল সম্পর্ক তৈরি হওয়া থেকে রক্ষা করে।
ইন্টারভিউতে সাধারণ প্রশ্ন
প্রশ্ন ১
Primary Key কী?
উত্তর: এমন একটি Key যা প্রতিটি Record-কে অনন্যভাবে শনাক্ত করে এবং NULL বা Duplicate গ্রহণ করে না।
প্রশ্ন ২
NULL কী?
উত্তর: NULL বোঝায় তথ্য অনুপস্থিত, অজানা বা প্রযোজ্য নয়। এটি 0 বা Empty String নয়।
প্রশ্ন ৩
একটি টেবিলে কয়টি Primary Key থাকতে পারে?
উত্তর: মাত্র একটি। তবে সেটি একাধিক কলাম নিয়ে Composite Primary Key হতে পারে।
প্রশ্ন ৪
Primary Key কি পরিবর্তন করা যায়?
উত্তর: প্রযুক্তিগতভাবে সম্ভব হলেও সাধারণত এটি এড়িয়ে চলা উচিত, কারণ এটি অন্যান্য টেবিলের সম্পর্ককে প্রভাবিত করতে পারে।
প্রশ্ন ৫
Foreign Key কি NULL হতে পারে?
উত্তর: অনেক ক্ষেত্রে পারে, যদি সেই সম্পর্ক ঐচ্ছিক (Optional Relationship) হয় এবং টেবিলের ডিজাইন তা অনুমোদন করে।
মূল বিষয়গুলো এক নজরে
✔ NULL মানে শূন্য (0) নয়।
✔ NULL মানে Empty String ("") নয়।
✔ Primary Key সবসময় Unique।
✔ Primary Key কখনো NULL গ্রহণ করে না।
✔ প্রতিটি টেবিলে সাধারণত একটি Primary Key থাকে।
✔ Foreign Key দুটি টেবিলের মধ্যে সম্পর্ক তৈরি করে।
✔ Candidate Key থেকে একটি Primary Key নির্বাচন করা হয়।
✔ NOT NULL Constraint গুরুত্বপূর্ণ ডেটা সুরক্ষিত রাখে।
✔ সঠিক Key নির্বাচন করলে ডেটাবেস দ্রুত ও নির্ভরযোগ্য হয়।
বাস্তব জীবনে NULL Value ও Primary Key-এর গুরুত্ব
প্রায় সব ধরনের সফটওয়্যারেই এই দুটি ধারণা ব্যবহৃত হয়।
ব্যাংকিং সিস্টেম
- Account_ID → Primary Key
- Nominee Phone → NULL হতে পারে
হাসপাতাল
- Patient_ID → Primary Key
- Allergy Information → NULL হতে পারে
ই-কমার্স
- Product_ID → Primary Key
- Discount Expiry Date → NULL হতে পারে
বিশ্ববিদ্যালয়
- Student_ID → Primary Key
- Graduation Date → বর্তমান শিক্ষার্থীদের জন্য NULL হতে পারে
নতুন শিক্ষার্থীদের জন্য শেখার ধাপ
যদি আপনি Database বা SQL শেখা শুরু করেন, তাহলে নিচের ক্রম অনুসরণ করুনঃ
- Database কী
- Table
- Row ও Column
- Data Type
- NULL Value
- Primary Key
- Foreign Key
- Constraints
- SQL Query
- JOIN
- Normalization
- Index
এই ভিত্তি শক্ত হলে পরবর্তী বিষয়গুলো শেখা অনেক সহজ হবে।
FAQ
১. NULL কি 0-এর সমান?
না। 0 একটি সংখ্যামান, কিন্তু NULL বোঝায় কোনো মান নেই বা অজানা।
২. Primary Key-এ কি Duplicate রাখা যায়?
না। Primary Key-এর প্রতিটি মান অবশ্যই Unique হতে হবে।
৩. Primary Key-এ কি NULL রাখা যায়?
না। Primary Key কখনো NULL গ্রহণ করে না।
৪. একটি টেবিলে কি একাধিক Primary Key থাকতে পারে?
না। একটি টেবিলে মাত্র একটি Primary Key থাকে। তবে সেটি একাধিক কলাম নিয়ে Composite Primary Key হতে পারে।
৫. Foreign Key কেন দরকার?
Foreign Key দুটি টেবিলের মধ্যে সম্পর্ক তৈরি করে এবং Referential Integrity বজায় রাখে।
৬. Candidate Key ও Primary Key-এর পার্থক্য কী?
Candidate Key হলো সম্ভাব্য Unique Key। সেখান থেকে একটি নির্বাচন করে Primary Key করা হয়।