מהו Foreign Key בטבלאות SQL

Foreign Key הוא שדה בטבלה המצביע על שדה , אשר הוגדר כ - Primary Key בטבלה אחרת. המטרה שלשמה נגדיר שדה כ - Foreign Key היא להבטיח את אמינות הנתונים בטבלה כך שלא תהיה בה שורה כלשהי אשר אחד מערכיה (בשדה שהוגדר כ - Foreign Key) אינו זהה לערך (בשדה שהוגדר כ - Primary Key) בטבלה אחרת.

כדי להבין זאת טוב יותר נשתמש בדוגמה. נניח שבבסיס הנתונים שלנו שתי טבלאות. טבלת ספקים וטבלת הזמנות. באופן טבעי נרצה להבטיח שלא תהיה בטבלת ההזמנות הזמנה כלשהי מספק שאינו מוגדר קודם לכן בטבלת הספקים. בהנחה שמספר הספק הוגדר כ - Primary Key בטבלת הספקים אזי כל שעלינו לעשות בטבלת ההזמנות הוא להגדיר את השדה מספר ספק כ - Foreign Key. בצורה זו נבטיח שלא תוגדר הזמנה בטבלת ההזמנות מספק שאינו נמצא כבר בטבלת הספקים.

דוגמה להגדרות טבלת הספקים

שם השדהמאפיינים
Sapak_IDPrimary Key
Sapak_Name 
Sapak_Address 

דוגמה להגדרות טבלת ההזמנות

שם השדהמאפיינים
Order_IDPrimary Key
Order_NO 
Sapak_IDForeign Key
Amount 

שימו לב כי השדה Sapak_ID (באדום בדוגמה) מוגדר כ - Primary Key בטבלת הספקים וכי השדה Sapak_ID מוגדר כ - Foreign Key בטבלת ההזמנות.

הגדרת Foreign Key בשלב יצירת הטבלה

Oracle, Access, SQL Server

CREATE TABLE Hazmanot
(
   Order_Id int NOT NULL PRIMARY KEY,
   Order_No int NOT NULL,
   Amount float NOT NULL,
   Sapak_ID int FOREIGN KEY REFERENCES Sapakim(Sapak_ID)
)

 

MySQL

CREATE TABLE Hazmanot
(
Order_ID int NOT NULL,
Order_No int NOT NULL,
Sapak_ID int,
PRIMARY KEY (Order_ID),
FOREIGN KEY (Sapak_ID) REFERENCES Sapakim(Sapak_ID)
)

 

הגדרת Foreign Key בתוך טבלה קיימת

Oracle, Access, SQL Server, MySQL

ALTER TABLE Hazmanot
ADD FOREIGN KEY (Sapak_ID)
REFERENCES Sapakim(Sapak_ID)

 

מדריכים ומאמרים הקשורים לנושאים במדריך זה

מדריך ליצירת טבלה בעזרת הפקודה CREATE TABLE

מדריך לביצוע שינויים במבנה טבלה בעזרת הפקודה ALTER TABLE 

מדריך לטבלאות בבסיסי נתונים רלציוניים

מדריך להגדרת מפתח ייחודי (Primary Key) בטבלאות SQL

 
© 2010-2013  www.Devschool.co.il | מדיניות פרטיות | תנאי שימוש