Foreign Key หรือ คีย์นอก เป็นคำสั่งที่ใช้ในการเชื่อมโยงตารางสองตารางเข้าด้วยกัน โดยปกติแล้วจะหมายถึงฟิลด์ (คอลัมน์) ในตารางหนึ่งที่อ้างอิงไปยัง Primary Key (คีย์หลัก) ในตารางอีกตารางหนึ่ง โดยตารางที่มี Foreign Key เราเรียกว่า Child Table (ตารางลูก) และตารางที่มี Primary Key เราเรียกว่า Parent Table (ตารางแม่)
Foreign Key ทำให้ข้อมูลระหว่างสองตารางมีความสอดคล้องกัน และมีการเชื่อมโยงเข้าด้วยกันอย่างถูกต้อง ซึ่งตรงนี้ช่วยให้รักษาความสมบูรณ์และความเข้ากันของข้อมูลระหว่างสองตารางได้เป็นอย่างดี
สมมติเรามีตารางสองตาราง Students และ Classes
1. ตาราง Students มีคอลัมน์ดังนี้:
2. ตาราง Classes มีคอลัมน์ดังนี้
คอลัมน์ ClassID ในตาราง Students เป็น Foreign Key ที่ชี้ไปยัง ClassID ในตาราง Classes การตั้งค่านี้ทำให้แน่ใจว่านักเรียนแต่ละคนถูกเชื่อมโยงกับคลาสที่ถูกต้อง
ตัวอย่างโค้ด SQL
CREATE TABLE Classes (ClassID int PRIMARY KEY,ClassName varchar(255) NOT NULL);CREATE TABLE Students (StudentID int PRIMARY KEY,StudentName varchar(255) NOT NULL,ClassID int,FOREIGN KEY (ClassID) REFERENCES Classes(ClassID));
อธิบายโค้ด
Classes โดยมี ClassID เป็น Primary KeyStudents ที่มี StudentID เป็น Primary KeyClassID ในตาราง Students ถูกประกาศเป็น Foreign Key ที่อ้างอิงถึง ClassID ในตาราง Classesจากการเชื่อมความสัมพันธ์ของทั้งสองตารางนี้ ต้องทำให้แน่ใจว่าสำหรับแต่ละ ClassID ในตาราง Students จะต้องมี record (รายการข้อมูล) ที่ตรงกันอยู่ในตาราง Classes ถ้าพยายามที่จะใส่ข้อมูลในตาราง Students ด้วย ClassID ที่ไม่มีอยู่ในตาราง Classes ฐานข้อมูลจะป้องกันไม่ให้ทำแบบนั้นโดยอัตโนมัติ ก็เพื่อรักษาความสมบูรณ์ของข้อมูลนั่นเอง