logo

מפתח זר ב-DBMS

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

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

מהו מפתח זר

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

שימוש במפתח זר

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

דוגמה למפתח זר

בואו נדון בדוגמה כדי להבין את פעולתו של מפתח זר.

regex ב-java

שקול שני טבלאות סטוּדֶנט ו מַחלָקָה בעלי התכונות המתאימות שלהם כפי שמוצג במבנה הטבלה שלהלן:

מפתח זר ב-DBMS
מפתח זר ב-DBMS

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

באיור המוצג למטה, אתה יכול לראות את המבנה הבא של הקשר בין שתי הטבלאות.

מפתח זר ב-DBMS

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

יצירת אילוץ מפתח זר

ב-CREATE TABLE

להלן התחביר שיגרום לנו ללמוד יצירת מפתח זר בטבלה:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) ); 

אז, בדרך זו, נוכל להגדיר מפתח זר לטבלה במסד הנתונים של MYSQL.

המרת מחרוזת לאובייקט json

במקרה של יצירת מפתח זר לטבלה בשרת SQL או Oracle, התחביר הבא יעבוד:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) ); 

ב-ALTER TABLE

להלן התחביר ליצירת אילוץ מפתח זר ב-ALTER TABLE:

 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

השלכת מפתח זר

על מנת למחוק מפתח זר, קיים תחביר המתואר להלן שניתן להשתמש בו:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

אז, בדרך זו, נוכל להוריד מפתח זר באמצעות ALTER TABLE במסד הנתונים של MYSQL.

q3 חודשים

נקודה לזכור

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

פעולות התייחסות

ישנן כמה פעולות המקושרות לפעולות שבוצעו על ידי מחזיק טבלת המפתחות הזרים:

1) אשד

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

2) הגדר NULL

מדריך .net

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

3) הגדר ברירת מחדל

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

4) הגבל

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

5) אין פעולה

מרבבי 8 עד 1

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

6) טריגרים

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