מפתח זר

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש

מפתח זר (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

ניתוח של המידע בטבלת הקשר מעלה את הבאים:

  • חברת פלית מייצרת נילקי, נקופלת ואמבה.
  • חברת אטראוס מייצרת נקופלת, אמבה וליפלי.
  • חברת לרמית מייצרת אמבה, ליפלי וגיסלי.