SQL Constraints হল ডেটাবেসে ডেটার নির্দিষ্ট শর্তাবলী বা নিয়মাবলী সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। এগুলি ডেটার অখণ্ডতা এবং সঠিকতা নিশ্চিত করতে সাহায্য করে। SQL এ বিভিন্ন ধরনের constraints রয়েছে, যেগুলি ডেটা সংরক্ষণের সময় সঠিকতা এবং একাগ্রতা বজায় রাখতে সাহায্য করে। এখানে আমরা চারটি প্রধান constraint-এর সম্পর্কে আলোচনা করব: PRIMARY KEY, FOREIGN KEY, UNIQUE, এবং CHECK।
১. PRIMARY KEY
PRIMARY KEY constraint একটি টেবিলের জন্য একাধিক রেকর্ডকে ইউনিক বা অনন্যভাবে চিহ্নিত করতে ব্যবহৃত হয়। একটি টেবিলে PRIMARY KEY constraint শুধুমাত্র একবারই ব্যবহৃত হতে পারে এবং এটি টেবিলের এক বা একাধিক কলামে থাকতে পারে। PRIMARY KEY এমন একটি কলাম বা কলামগুলির সংমিশ্রণ যা ডেটাবেসের প্রতিটি রেকর্ডকে অনন্যভাবে চিহ্নিত করে এবং NULL মান গ্রহণ করতে পারে না।
Syntax:
CREATE TABLE table_name (
column1 datatype PRIMARY KEY,
column2 datatype,
...
);
উদাহরণ:
ধরা যাক, একটি employees টেবিল তৈরি করা হচ্ছে যেখানে employee_id কে PRIMARY KEY হিসাবে নির্ধারণ করা হয়েছে:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
age INT,
salary DECIMAL(10, 2)
);
এখানে employee_id ফিল্ডটি একটি ইউনিক পরিচিতি প্রদান করে, এবং এটি টেবিলের প্রতিটি রেকর্ডের জন্য অনন্য হবে।
২. FOREIGN KEY
FOREIGN KEY constraint একটি টেবিলের একটি কলামকে অন্য টেবিলের PRIMARY KEY বা UNIQUE KEY এর সাথে সম্পর্কিত করে। এটি এক টেবিলের ডেটার উপর নির্ভরশীল অন্য টেবিলের ডেটা সম্পর্ক স্থাপন করতে ব্যবহৃত হয়। FOREIGN KEY ডেটাবেসের মধ্যে রিলেশনশিপ তৈরি করতে সাহায্য করে, যেমন "একাধিক রেকর্ডের মধ্যে সম্পর্ক তৈরি করা" (এটি Referential Integrity বজায় রাখে)।
Syntax:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
FOREIGN KEY (column_name) REFERENCES other_table (other_column)
);
উদাহরণ:
ধরা যাক, orders টেবিল তৈরি করা হচ্ছে যেখানে employee_id একটি FOREIGN KEY হিসাবে employees টেবিলের employee_id এর সাথে সম্পর্কিত:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
order_date DATE,
employee_id INT,
FOREIGN KEY (employee_id) REFERENCES employees (employee_id)
);
এখানে, orders টেবিলের employee_id কলামটি employees টেবিলের employee_id কলামের সাথে সম্পর্কিত। এটি নিশ্চিত করে যে orders টেবিলে কোনো অবৈধ বা অজ্ঞাত employee_id প্রবিষ্ট হবে না, যেটি employees টেবিলের কোন রেকর্ডের সাথে মিলবে না।
৩. UNIQUE
UNIQUE constraint নিশ্চিত করে যে একটি কলামে বা একাধিক কলামে প্রতিটি মান অনন্য হবে। UNIQUE constraint টেবিলের কলামগুলিতে পুনরাবৃত্তি (duplicate) মান রাখতে দেয় না, তবে এটি NULL মান গ্রহণ করতে পারে (কিছু ডেটাবেস সিস্টেমে একাধিক NULL অনুমোদিত থাকে)।
Syntax:
CREATE TABLE table_name (
column1 datatype UNIQUE,
column2 datatype,
...
);
উদাহরণ:
ধরা যাক, customers টেবিল তৈরি করা হচ্ছে যেখানে email কলামটি UNIQUE constraint এর আওতায় আনা হয়েছে:
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE
);
এখানে email কলামটি একটি ইউনিক মান ধরে রাখবে, অর্থাৎ, একই ইমেইল দুটি রেকর্ডে থাকতে পারবে না।
৪. CHECK
CHECK constraint একটি নির্দিষ্ট শর্ত প্রয়োগ করে যে কোনো কলামে বা কলামগুলির মধ্যে যেকোনো মান কেবল সেই শর্ত পূর্ণ করলে প্রবিষ্ট হবে। এটি ডেটার উপর লজিক্যাল কন্ডিশন নির্ধারণ করে, যেমন বয়স ১৮ বছরের বেশি হতে হবে অথবা স্যালারি একটি নির্দিষ্ট সীমার মধ্যে থাকতে হবে।
Syntax:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
CHECK (condition)
);
উদাহরণ:
ধরা যাক, employees টেবিল তৈরি করা হচ্ছে যেখানে age কলামের জন্য CHECK constraint ব্যবহার করা হয়েছে:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
age INT CHECK (age >= 18),
salary DECIMAL(10, 2)
);
এখানে age কলামের জন্য একটি CHECK constraint যোগ করা হয়েছে যা নিশ্চিত করে যে age এর মান 18 এর কম হবে না। যদি কেউ ১৮ বছরের কম বয়স দিয়ে ডেটা প্রবিষ্ট করার চেষ্টা করে, তা তখন ইনসার্ট করা যাবে না।
Constraints এর ব্যবহারকারিতা
- Data Integrity: Constraints ডেটাবেসে সঠিকতা বজায় রাখতে সাহায্য করে, যেমন PRIMARY KEY এবং UNIQUE ডুপ্লিকেট এন্ট্রি থেকে রক্ষা করে।
- Referential Integrity: FOREIGN KEY রিলেশনশিপ স্থাপন করে এবং ডেটা একাগ্রতা নিশ্চিত করে।
- Business Rules: CHECK constraints ডেটাবেসে নির্দিষ্ট শর্ত প্রয়োগ করতে সাহায্য করে, যেমন বয়সের সীমাবদ্ধতা।
এইভাবে PRIMARY KEY, FOREIGN KEY, UNIQUE, এবং CHECK constraints গুলি ডেটাবেস ডিজাইন এবং ডেটার সঠিকতা, একাগ্রতা বজায় রাখার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।