מפתח זר

מפתח זר (באנגלית: Foreign Key) במסדי נתונים הוא מונח מעולם מסדי הנתונים היחסיים, המתאר שדה (עמודה) בטבלה אשר ערכיו האפשריים (Domain) נשאבים משדה מקביל בטבלה אחרת אשר בה משמש השדה כמפתח ראשי.

ערכי המפתח הזר אינם בלעדיים (Unique) בטבלת הבן (הטבלה שמכילה מפתח זר) ויכולים לחזור על עצמם. המפתח הזר הוא לעולם לא ריק, מאחר שהוא מצביע למפתח ראשי שתמיד חייב להכיל ערך ייחודי (למשל ת.ז של האב). מפתח זר כמו מפתח ראשי יכול להיות מפתח מורכב, כלומר מפתח שמכיל בתוכו מספר ערכים.

ניתן להגדיר קשר זה כאילוץ מפורש (Constraint) בהגדרת הטבלה, כך שמערכת ניהול מסד הנתונים (DBMS) תמנע מופעים של המפתח הזר שאינם עונים לאילוץ, כלומר אינם נמצאים בטבלת האב. כתוצאה מהגדרת אילוץ כזה, לא נוכל גם למחוק רשומה מטבלת האב כל עוד ישנן רשומות בטבלת הבן המכילות את מפתח הרשומה כמפתח זר.

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

דוגמאות למפתחות זרים

קטגוריה:מסדי נתונים
נתונות שתי הטבלאות הבאות: טבלה של חברות שמייצרות ממתקים וטבלה של ממתקים.
לכל חברה יש מספר ייחודי משלה (מזהה חברה) שאינו יכול להתקיים עבור שתי חברות, כלומר הוא מפתח ראשי של הטבלה.
בטבלת הממתקים, ישנה עמודה של מזהה חברה - כלומר הפנייה לטבלת החברות.
מספר ממתקים יכולים להצהיר שהחברה שמייצרת אותם היא אותה חברה, כלומר העמודה מזהה חברה הוא מפתח זר בטבלת הממתקים.
זהו קשר של רבים ליחיד: לכל ממתק יש רק חברה אחת שמייצרת אותו, ומצד שני כל חברה מייצרת הרבה ממתקים.

 מזהה החברה (מפתח ראשי)  שם החברה  שנת יסוד 12345  פלית  1960 54321  אטראוס  1970 21345  לרמית  1980

 מזהה מוצר (מפתח ראשי)  מזהה חברה (מפתח זר)  שם המוצר 67890  12345  נילקי 9876  54321  נקופלת 76890  21345  אמבה 98760  12345  ליפלי 87690  21345  גיסלי

מניתוח של הנתונים אפשר להסיק את הבאות:
 חברת אטראוס מייצרת רק את הממתק נקופלת.
 חברת פלית מייצרת את הממתקים נילקי וליפלי.
 חברת לרמית מייצרת את הממתקים אמבה וגיסלי.

אם מספר חברות יכולות לייצר את אותן הממתקים (שלא כמו בדוגמה הקודמת שכל ממתק מיוצר רק על ידי חברה אחת) אז יש להיעזר בקשר הנקרא קשר של רבים לרבים. קשר זה מושג על ידי טבלת קשר שמצליבה בין מזהה ייחודי של ממתק (מפתח ראשי) לבין מזהה ייחודי של חברה (מפתח ראשי). בטבלה זו דוגמה למפתח ראשי מורכב: הוא מכיל שני שדות שכל אחד מהם הוא מפתח זר לטבלאות האחרות, להלן דוגמה:

 מזהה חברה מייצרת  מזהה מוצר 12345  67890 12345  9876 12345  76890 54321  9876 54321 76890 54321 98760 21345  76890 21345  98760 21345  87690

ניתוח של המידע בטבלת הקשר מעלה את הבאים:
 חברת פלית מייצרת נילקי, נקופלת ואמבה.
 חברת אטראוס מייצרת נקופלת, אמבה וליפלי.
 חברת לרמית מייצרת אמבה, ליפלי וגיסלי.

de:Schlüssel (Datenbank)#Fremdschlüssel
no:Nøkkel (database)#Fremmednøkkel