নাল ভ্যালু (NULL Value) ও প্রাইমারি কী (Primary Key) সহজ ভাষায় ব্যাখ্যা

বর্তমান ডিজিটাল বিশ্বে প্রায় প্রতিটি সফটওয়্যার, ওয়েবসাইট এবং মোবাইল অ্যাপের পেছনে একটি ডেটাবেস (Database) কাজ করে। এই ডেটাবেসে তথ্য সঠিকভাবে সংরক্ষণ, খুঁজে বের করা এবং পরিচালনার জন্য কিছু মৌলিক ধারণা জানা অত্যন্ত জরুরি।

এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ দুটি ধারণা হলোঃ

  • NULL Value (নাল ভ্যালু)
  • Primary Key (প্রাইমারি কী)

আপনি যদি SQL, MySQL, PostgreSQL, Oracle, SQL Server কিংবা যেকোনো Relational Database Management System (RDBMS) শিখতে চান, তাহলে এই দুটি বিষয় ভালোভাবে বোঝা বাধ্যতামূলক।

ডেটাবেস কী?

ডেটাবেস হলো এমন একটি সংগঠিত তথ্যভান্ডার যেখানে তথ্য নির্দিষ্ট নিয়ম অনুযায়ী সংরক্ষণ করা হয়।

উদাহরণঃ

একটি স্কুলের ডেটাবেসে থাকতে পারে। যেমনঃ

  • শিক্ষার্থীর আইডি
  • নাম
  • ঠিকানা
  • মোবাইল নম্বর
  • জন্মতারিখ
  • শ্রেণি

এই তথ্যগুলো সাধারণত টেবিল (Table) আকারে রাখা হয়।

টেবিল কী?

ডেটাবেসে তথ্য সাধারণত টেবিলে সংরক্ষণ করা হয়।

উদাহরণঃ

Student_IDNamePhone
101Rahim017XXXXXXXX
102Karim018XXXXXXXX

এখানেঃ

  • প্রতিটি Row = একটি Record
  • প্রতিটি Column = একটি Field

NULL Value কী?

NULL এমন একটি বিশেষ মান, যা বোঝায় কোনো তথ্য বর্তমানে অজানা (Unknown), দেওয়া হয়নি (Missing), অথবা প্রযোজ্য নয় (Not Applicable)।

অর্থাৎ, NULL মানে শূন্য (0) নয় এবং ফাঁকা স্ট্রিং ("")-ও নয়। এটি সম্পূর্ণ ভিন্ন একটি ধারণা।

NULL-এর বাস্তব উদাহরণ

ধরুন একটি কর্মচারীর তথ্য সংরক্ষণ করা হচ্ছে।

IDNameEmail
1Rahimrahim@email.com
2KarimNULL

এখানে 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_IDName
101Rahim
102Karim
103Hasan

এখানে

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_IDCustomer
10001Rahim
10002Karim
10003Hasan

এখানে 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_IDEmailName
101rahim@gmail.comRahim
102karim@gmail.comKarim

এখানেঃ

  • Student_ID
  • Email

দুটিই 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_IDCourse_ID
101CSE101
101CSE102

এখানে শুধুমাত্র Student_ID বা Course_ID আলাদাভাবে Unique নয়।

কিন্তু:

(Student_ID + Course_ID)

একসঙ্গে Unique।

এটিই Composite Key।

Foreign Key কী?

Foreign Key এমন একটি কলাম, যা অন্য একটি টেবিলের Primary Key-কে নির্দেশ করে। এর মাধ্যমে দুটি টেবিলের মধ্যে সম্পর্ক (Relationship) তৈরি হয়।

উদাহরণ

Students Table

Student_IDName
101Rahim
102Karim

Results Table

Result_IDStudent_IDGPA
11013.80
21023.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_IDBlood_Group
1001A+
1002NULL

এর অর্থঃ

রোগীর Blood Group এখনো জানা যায়নি।

এটি "A+" নয়, "O+" নয়, এমনকি "খালি"ও নয়।

এটি Unknown।

ডেটাবেস ডিজাইনে NULL কম রাখা কেন ভালো?

অতিরিক্ত NULL থাকলেঃ

  • Query জটিল হয়।
  • রিপোর্ট তৈরি কঠিন হয়।
  • ডেটা বিশ্লেষণ কঠিন হতে পারে।
  • Data Quality কমে যায়।

তাই Database Design-এর সময় শুধুমাত্র প্রয়োজন হলে NULL ব্যবহার করা উচিত।

Primary Key বনাম Unique Key

অনেকেই Primary Key এবং Unique Key-কে একই মনে করেন। যদিও দুটিই ডেটাকে অনন্য (Unique) রাখতে সাহায্য করে, তবুও গুরুত্বপূর্ণ কিছু পার্থক্য রয়েছে।

বৈশিষ্ট্যPrimary KeyUnique Key
প্রতিটি টেবিলে সংখ্যামাত্র ১টিএকাধিক হতে পারে
NULL গ্রহণ করেনাঅধিকাংশ DBMS-এ একটি বা একাধিক NULL গ্রহণ করতে পারে (সিস্টেমভেদে ভিন্ন হতে পারে)
মূল উদ্দেশ্যপ্রতিটি রেকর্ড শনাক্ত করাডুপ্লিকেট প্রতিরোধ করা

উদাহরণ

একটি Students টেবিলেঃ

  • Student_ID = Primary Key
  • Email = Unique Key

এখানে Email পুনরাবৃত্তি হবে না, কিন্তু Student_ID প্রতিটি রেকর্ডের প্রধান পরিচয় হিসেবে ব্যবহৃত হবে।

Primary Key বনাম Foreign Key

Primary KeyForeign Key
নিজ টেবিলের রেকর্ডকে শনাক্ত করেঅন্য টেবিলের Primary Key-কে রেফার করে
UniqueUnique হওয়া বাধ্যতামূলক নয়
NULL গ্রহণ করে নাঅনেক ক্ষেত্রে NULL গ্রহণ করতে পারে (ডিজাইনের ওপর নির্ভর করে)
একটি টেবিলে সাধারণত একটিএকাধিক থাকতে পারে

উদাহরণ

Customers Table

Customer_IDName
1001Rahim
1002Karim

Orders Table

Order_IDCustomer_ID
50011001
50021002

এখানেঃ

  • 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 শেখা শুরু করেন, তাহলে নিচের ক্রম অনুসরণ করুনঃ

  1. Database কী
  2. Table
  3. Row ও Column
  4. Data Type
  5. NULL Value
  6. Primary Key
  7. Foreign Key
  8. Constraints
  9. SQL Query
  10. JOIN
  11. Normalization
  12. 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 করা হয়।

একটি মন্তব্য পোস্ট করুন

নবীনতর পূর্বতন