Foreign Key

   อัปเดตล่าสุด Feb. 1, 2024

Foreign Key หรือ คีย์นอก เป็นคำสั่งที่ใช้ในการเชื่อมโยงตารางสองตารางเข้าด้วยกัน โดยปกติแล้วจะหมายถึงฟิลด์ (คอลัมน์) ในตารางหนึ่งที่อ้างอิงไปยัง Primary Key (คีย์หลัก) ในตารางอีกตารางหนึ่ง โดยตารางที่มี Foreign Key เราเรียกว่า Child Table (ตารางลูก) และตารางที่มี Primary Key เราเรียกว่า Parent Table (ตารางแม่)


Foreign Key ทำให้ข้อมูลระหว่างสองตารางมีความสอดคล้องกัน และมีการเชื่อมโยงเข้าด้วยกันอย่างถูกต้อง ซึ่งตรงนี้ช่วยให้รักษาความสมบูรณ์และความเข้ากันของข้อมูลระหว่างสองตารางได้เป็นอย่างดี

ตัวอย่างการใช้งาน Foreign Key

สมมติเรามีตารางสองตาราง Students   และ  Classes  


1. ตาราง  Students มีคอลัมน์ดังนี้:

  • StudentID (Primary Key)
  • StudentName
  • ClassID (Foreign Key)

2. ตาราง  Classes มีคอลัมน์ดังนี้

  • ClassID (Primary Key)
  • ClassName

คอลัมน์  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 Key
  • จากนั้นสร้างตาราง  Students ที่มี  StudentID เป็น Primary Key
  •  ClassID ในตาราง  Students  ถูกประกาศเป็น Foreign Key ที่อ้างอิงถึง  ClassID ในตาราง  Classes

จากการเชื่อมความสัมพันธ์ของทั้งสองตารางนี้ ต้องทำให้แน่ใจว่าสำหรับแต่ละ  ClassID ในตาราง Students จะต้องมี record (รายการข้อมูล) ที่ตรงกันอยู่ในตาราง  Classes ถ้าพยายามที่จะใส่ข้อมูลในตาราง  Students ด้วย  ClassID ที่ไม่มีอยู่ในตาราง  Classes ฐานข้อมูลจะป้องกันไม่ให้ทำแบบนั้นโดยอัตโนมัติ ก็เพื่อรักษาความสมบูรณ์ของข้อมูลนั่นเอง