הבדל המפתח בין מפתח זר למפתח ראשי הוא שמפתח זר הוא עמודה או קבוצה של עמודות המתייחסות למפתח ראשי או מפתח מועמד של טבלה אחרת בעוד שהמפתח הראשי הוא עמודה או קבוצה של עמודות שיכול לשמש לזיהוי ייחודי של שורה בטבלה.
עמודה או קבוצה של עמודות שניתן להשתמש בהן כדי לזהות או לגשת לשורה או לקבוצה של שורות במסד נתונים נקראים מפתח. מפתח ראשי במסד נתונים יחסי הוא שילוב של עמודות בטבלה המזהים באופן ייחודי שורה בטבלה. מפתח זר במסד נתונים יחסי הוא שדה בטבלה התואם למפתח הראשי של טבלה אחרת.המפתח הזר משמש להצלבת טבלאות הפניות.
מהו מפתח זר?
מפתח זר הוא אילוץ התייחסות בין שתי טבלאות. הוא מזהה עמודה או קבוצה של עמודות בטבלה אחת, הנקראת טבלת הפניות המתייחסת לקבוצת עמודות בטבלה אחרת, הנקראת הטבלה המופנית. המפתח הזר או העמודות בטבלת ההפניה חייבות להיות המפתח הראשי או מפתח מועמד (מפתח שיכול לשמש כמפתח ראשי) בטבלה שאליה יש התייחסות. יתר על כן, מפתחות זרים מאפשרים קישור נתונים על פני מספר טבלאות.לכן, המפתח הזר אינו יכול להכיל ערכים שאינם מופיעים בטבלה שאליה הוא מתייחס. אז ההפניה שמספק מפתח הזר עוזרת לקשר מידע במספר טבלאות וזה יהפוך חיוני עם מסדי נתונים מנורמלים. שורות מרובות בטבלת ההפניות עשויות להתייחס לשורה בודדת בטבלה שאליה יש התייחסות.
איור 01: מיפוי מפתח זר
בתקן ANSI SQL, אילוץ FOREIGN KEY מגדיר מפתחות זרים. יתר על כן, ניתן להגדיר את המפתחות הזרים בעת יצירת הטבלה עצמה. לטבלה יכולה להיות מפתחות זרים מרובים, והם יכולים להפנות לטבלאות שונות.
מהו מפתח ראשי?
מפתח ראשי הוא עמודה או שילוב של עמודות המגדירים באופן ייחודי שורה בטבלה של מסד נתונים יחסי. לטבלה יכולה להיות לכל היותר מפתח ראשי אחד. מפתח ראשי אוכף את האילוץ המרומז NOT NULL. לכן, עמודה עם מפתח ראשי לא יכול לכלול ערכי NULL. מפתח ראשי יכול להיות תכונה רגילה בטבלה שמובטחת שהיא ייחודית כמו מספר תעודת זהות, או שזה יכול להיות ערך ייחודי שנוצר על ידי מערכת ניהול מסד הנתונים כגון מזהה גלובלי ייחודי (GUID) ב-Microsoft SQL Server.
איור 02: מפתח ראשי
יתר על כן, האילוץ PRIMARY KEY ב-ANSI SQL Standard מגדיר מפתחות ראשיים. ניתן גם להגדיר מפתח ראשי בעת יצירת הטבלה. בנוסף לכך, SQL מאפשר למפתח ראשי להיות מורכב מעמודה אחת או יותר, וכל עמודה שנכללת במפתח הראשי מוגדרת באופן מרומז כ- NOT NULL. אבל חלק ממערכות ניהול מסדי הנתונים דורשות להפוך את עמודות המפתח הראשי במפורש לא NULL.
מה ההבדל בין מפתח זר למפתח ראשי?
מפתח זר לעומת מפתח ראשי |
|
מפתח זר הוא עמודה או קבוצת עמודות בטבלת מסד נתונים רלציונית המספקת שיוך בין נתונים בשתי טבלאות. | מפתח ראשי הוא עמודת טבלת מסד נתונים יחסית מיוחדת או שילוב של מספר עמודות המאפשר לזהות באופן ייחודי את כל רשומות הטבלה. |
NULL | |
מפתח זר מקבל ערך NULL. | ערך מפתח ראשי לא יכול להיות NULL. |
מספר המפתחות | |
טבלה יכולה לכלול מפתחות זרים מרובים. | טבלה יכולה לכלול מפתח ראשי אחד בלבד. |
שכפול | |
Tuples יכול לקבל ערך כפול עבור תכונת מפתח זר. | לשתי tuples בקשר לא יכולים להיות ערכים כפולים עבור תכונת מפתח ראשי. |
סיכום – מפתח זר לעומת מפתח ראשי
ההבדל בין מפתח זר למפתח ראשי הוא שמפתח זר הוא עמודה או קבוצה של עמודות המתייחסות למפתח ראשי או מפתח מועמד של טבלה אחרת בעוד שהמפתח הראשי הוא עמודה או קבוצה של עמודות יכול לשמש לזיהוי ייחודי של שורה בטבלה.