Primary Key এবং Foreign Key হলো ডাটাবেসের মূল constraints যা ডাটাবেসের টেবিলের মধ্যে সম্পর্ক স্থাপন এবং ডেটা ইন্টিগ্রিটি বজায় রাখতে সহায়তা করে। SQLite-এ এই দুটি কনস্ট্রেইন্ট খুবই গুরুত্বপূর্ণ এবং টেবিলের ডাটা সঠিকতা ও সম্পর্ক রক্ষা করতে ব্যবহৃত হয়।
Primary Key Constraint
Primary Key কনস্ট্রেইন্ট একটি টেবিলের জন্য এক বা একাধিক কলাম নির্বাচন করে, যা ইউনিক (unique) এবং নাল (null) নয়। এটি নিশ্চিত করে যে টেবিলের প্রতিটি রেকর্ডের জন্য একটি নির্দিষ্ট শনাক্তকারী (identifier) থাকবে।
- প্রাথমিক কী (Primary Key):
- ইউনিক: প্রতিটি প্রাথমিক কী মান অনন্য হবে, অর্থাৎ কোনো দুটি রেকর্ড একই প্রাথমিক কী মান ধারণ করতে পারে না।
- নাল নয়: একটি প্রাথমিক কী মান কখনোই নাল (null) হতে পারে না।
- এটি ডাটাবেসের মধ্যে রেকর্ডের এক্সিকিউশন এবং শনাক্তকরণের জন্য ব্যবহৃত হয়।
উদাহরণ: Primary Key ব্যবহার
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
);
- এখানে,
idকলামটি Primary Key হিসেবে নির্ধারণ করা হয়েছে। এর মান অবশ্যই ইউনিক হবে এবং নাল (null) হতে পারবে না। - SQLite-এ
INTEGER PRIMARY KEYএকটি বিশেষ কেস, যেখানেidকলামটি আসলে একটি auto-increment ক্ষেত্র হিসেবে কাজ করবে। এতে, প্রতিবার নতুন রেকর্ড ইনসার্ট করলে স্বয়ংক্রিয়ভাবেidমান বাড়বে।
Foreign Key Constraint
Foreign Key কনস্ট্রেইন্ট একটি টেবিলের একটি কলামকে অন্য টেবিলের প্রাথমিক কী (Primary Key) বা ইউনিক কী (Unique Key)-এর সাথে সম্পর্কিত করে। এটি ডেটাবেসের মধ্যে সম্পর্ক প্রতিষ্ঠা করতে ব্যবহৃত হয় এবং ডেটার ইন্টিগ্রিটি রক্ষা করতে সহায়তা করে।
- ফরেন কী (Foreign Key):
- একটি টেবিলের কলামকে অন্য টেবিলের প্রাথমিক কী বা ইউনিক কী এর সাথে সম্পর্কিত করে।
- এটি নিশ্চিত করে যে রেফারেন্স করা রেকর্ড অবশ্যই বিদ্যমান থাকবে, অর্থাৎ আপনি কোনো অবৈধ সম্পর্ক তৈরি করতে পারবেন না।
উদাহরণ: Foreign Key ব্যবহার
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY,
user_id INTEGER,
product TEXT,
FOREIGN KEY (user_id) REFERENCES users (id)
);
- এখানে,
ordersটেবিলেরuser_idকলামটিusersটেবিলেরidকলামের উপর ভিত্তি করে Foreign Key হিসেবে সম্পর্কিত হয়েছে। - এর মানে হল,
ordersটেবিলেরuser_idকলামে কেবলমাত্র এমন ব্যবহারকারীরidথাকবে যা users টেবিলেরidকলামে বিদ্যমান।
Primary এবং Foreign Key Constraints এর মধ্যে সম্পর্ক
- Primary Key কনস্ট্রেইন্ট একটি টেবিলের একটি কলামে অন্যতম ইউনিক এবং নাল নয় এমন মান তৈরি করে, যা ডেটাবেসে প্রতিটি রেকর্ডকে এক্সিকিউট করতে সহায়তা করে।
- Foreign Key কনস্ট্রেইন্ট টেবিলগুলির মধ্যে সম্পর্ক স্থাপন করে, যা এক টেবিলের রেকর্ডকে অন্য টেবিলের রেকর্ডের সাথে সংযুক্ত করে এবং ডেটার ইন্টিগ্রিটি রক্ষা করে।
SQLite ডাটাবেসে Foreign Key কনস্ট্রেইন্ট সাধারণত ডিফল্টভাবে নিষ্ক্রিয় থাকে। এটি সক্রিয় করতে আপনাকে PRAGMA foreign_keys = ON; কমান্ডটি ব্যবহার করতে হবে।
Foreign Key সক্রিয় করা
PRAGMA foreign_keys = ON;
Primary এবং Foreign Key Constraints এর সুবিধা
- ডেটার এক্সিকিউশন সহজ করা: প্রাথমিক কী ডেটাবেসে প্রতিটি রেকর্ডকে শনাক্ত করার জন্য একটি নির্দিষ্ট মান প্রদান করে।
- ডেটার ইন্টিগ্রিটি নিশ্চিত করা: ফরেন কী সম্পর্কের মাধ্যমে ডেটাবেসের মধ্যে সম্পর্ক বজায় রাখা যায় এবং ভুল বা অবৈধ রেকর্ড তৈরি হতে রোধ করা হয়।
- সম্পর্ক স্থাপন: ফরেন কী কনস্ট্রেইন্ট দুইটি টেবিলের মধ্যে সম্পর্ক তৈরি করে, যেমন: একজন ব্যবহারকারী অনেক অর্ডার করতে পারেন, যা ডেটার পারস্পরিক সম্পর্ক প্রদর্শন করে।
সারাংশ
SQLite-এ Primary Key এবং Foreign Key কনস্ট্রেইন্ট ডেটাবেসের ডেটার সঠিকতা এবং সম্পর্ক রক্ষা করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। প্রাথমিক কী প্রতিটি রেকর্ডের জন্য একটি ইউনিক এবং নাল-হীন মান নিশ্চিত করে, যেখানে ফরেন কী দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করে এবং ডেটার ইন্টিগ্রিটি বজায় রাখে।
Read more