ফরেন কী (Foreign Key) হলো একটি কলাম বা কলামের সেট যা অন্য একটি টেবিলের প্রাইমারি কীকে রেফারেন্স করে, ফলে দুটি টেবিলের মধ্যে রিলেশনশিপ (সัม্পর্ক) thiết lập হয়।
উদাহরণ: Employee এবং Department
Employee টেবিল (Child / Referencing Table)
| EmpID (PK) | EmpName | EmpAge | DeptID (FK) |
|---|---|---|---|
| 101 | John | 30 | D01 |
| 102 | Jane | 28 | D02 |
Department টেবিল (Parent / Referenced Table)
| DeptID (PK) | DeptName | DeptZone |
|---|---|---|
| D01 | IT | Zone A |
| D02 | HR | Zone B |
এখানে Employee-র DeptID হলো Foreign Key যা Department-র DeptID (Primary Key) কে রেফার করে।
ডায়াগ্রাম

বৈশিষ্ট্য
- ফরেন কী কলামের ডেটা টাইপ, সাইজ, কোলেশন প্রাইমারি কীর সাথে একই হতে হবে।
- ফরেন কীতে NULL ভ্যালু থাকতে পারে (যদি অপশনাল রিলেশনশিপ হয়)।
- ফরেন কীতে ডুপ্লিকেট ভ্যালু থাকতে পারে (One-to-Many রিলেশনশিপে)۔
- এক টেবিলে একাধিক ফরেন কী থাকতে পারে (বিভিন্ন টেবিল রেফারেন্স করতে পারে)।
SQL সিনট্যাক্স
-- Column Level CREATE TABLE Employee ( EmpID INT PRIMARY KEY, EmpName VARCHAR(100), DeptID VARCHAR(10), FOREIGN KEY (DeptID) REFERENCES Department(DeptID) ); -- Table Level (Composite FK) CREATE TABLE OrderItem ( OrderID INT, ProductID INT, Qty INT, PRIMARY KEY (OrderID, ProductID), FOREIGN KEY (OrderID) REFERENCES Orders(OrderID), FOREIGN KEY (ProductID) REFERENCES Products(ProductID) );
রেফারেনশিয়াল অ্যাকশন (Referential Actions)
| অ্যাকশন | ON DELETE | ON UPDATE |
|---|---|---|
| CASCADE | চাইল্ড রো ডিলিট হয় | চাইল্ড FK আপডেট হয় |
| SET NULL | চাইল্ড FK = NULL | চাইল্ড FK = NULL |
| RESTRICT / NO ACTION | প্যারেন্ট ডিলিট ব্লক (ডিফল্ট) | প্যারেন্ট আপডেট ব্লক (ডিফল্ট) |
| SET DEFAULT | চাইল্ড FK = ডিফল্ট ভ্যালু | চাইল্ড FK = ডিফল্ট ভ্যালু |
মহত্ব
- রেফারেনশিয়াল ইন্টিগ্রিটি রক্ষা করে (Orphan record রোধ)।
- জয়েন কোয়েরি সক্ষম করে (
JOIN)। - নরমালাইজেশন (3NF) অর্জনে সহায়তা করে।