מפתח זר

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

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

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

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

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

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

מזהה החברה (מפתח ראשי)שם החברהשנת יסוד
12345פלית1960
54321אטראוס1970
21345לרמית1980
מזהה מוצר (מפתח ראשי)מזהה חברה (מפתח זר)שם המוצר
6789012345נילקי
987654321נקופלת
7689021345אמבה
9876012345ליפלי
8769021345גיסלי

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

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

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

מזהה חברה מייצרתמזהה מוצר
1234567890
123459876
1234576890
543219876
5432176890
5432198760
2134576890
2134598760
2134587690

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

  • חברת פלית מייצרת נילקי, נקופלת ואמבה.
  • חברת אטראוס מייצרת נקופלת, אמבה וליפלי.
  • חברת לרמית מייצרת אמבה, ליפלי וגיסלי.
This article is issued from Hamichlol. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.