SQL (এসকিউএল) FOREIGN KEY কনস্ট্রেইন্টস্
Article By: Protap Chandra
FOREIGN KEY কনস্ট্রেইন্ট ব্যবহার করা যায় টেবিলগুলোর মধ্যে আন্ত:সংযোগ যাতে নষ্ট না হয় তা নিশ্চিত করার জন্য। এছাড়া FOREIGN KEY কনস্ট্রেইন্ট foreign key যুক্ত কলামে অগ্রহণযোগ্য ডাটা ইনপুটে দেয়ার হাত থেকেও ব্যবহারকারীদের বিরত রাখে। কারণ FOREIGN KEY সঙ্গায়িত কলামে কেবল সেই ডাটা ইনপুট দেয়া যাবে যে ডাটা PRIMARY KEY তে আছে।
একটি টেবিলের FOREIGN KEY অন্য টেবিলে PRIMARY KEY এর সংগে সংযুক্ত।
নিচের দু'টি টেবিলের সাহায্যে আমরা FOREIGN KEY সম্পর্কে ধারণা নিব।
প্রথমটি হচ্ছে "Persons" টেবিল:
P_Id |
LastName |
FirstName |
Address |
City |
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
দ্বিতীয়টি হচ্ছে "Orders" টেবিল:
O_Id |
OrderNo |
P_Id |
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
লক্ষ্য করুন, "Orders" টেবিলের "P_Id" কলাম "Persons" টেবিলের "P_Id" কলাম থেকে এসেছে। একারণে "Persons" টেবিলের "P_Id" কলাম "Persons" টেবিলের PRIMARY KEY.
অন্যদিকে, "Orders" টেবিলের "P_Id" কলাম "Orders" টেবিলের FOREIGN KEY.
নিচের SQL স্টেটমেন্টটি "Orders" টেবিল তৈরী করার সময় "P_Id" কলামটিকে FOREIGN KEY হিসেবে তৈরী করবে।
MySQL এর ক্ষেত্রে:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access এর ক্ষেত্রে:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
একাধিক কলামে FOREIGN KEY কনস্ট্রেইন্ট তৈরী করতে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:
MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
যদি আগে থেকে তৈরী করা একটি টেবিলের কোনো কলামে FOREIGN KEY কনস্ট্রেইন্ট যোগ করার প্রয়োজন হয় তবে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:
MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
যদি আগে থেকে তৈরী করা একটি টেবিলের FOREIGN KEY তে কোনো নাম যুক্ত করার প্রয়োজন হয়, তবে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:
MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
FOREIGN KEY কনস্ট্রেইন্ট মুছে ফেলতে চাইলে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:
MySQL এর ক্ষেত্রে:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access ক্ষেত্রে:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders