מפתח זר

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

מפתח זראנגלית: 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

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

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