מפתחות זרים מאפשרים למנהלי מסדי נתונים לזהות בקלות את החיבורים השונים הקיימים במערכת ניהול מסדי נתונים של SQL.
SQL מבצעת פעולות מתמטיות על נתונים בתוך מערכת ניהול מסדי נתונים. מאגרי מידע אלה מכילים טבלאות שונות שכל אחת מהן מאחסנת נתונים על ישות ספציפית. אם יש לך מסד נתונים להשכרת רכב, ישות (או טבלה) במאגר זה תהיה לקוחות (אשר יאחסנו את כל הנתונים האישיים על כל לקוח).
טבלאות בסיס נתונים אלה מכילות שורות ועמודות, כאשר כל שורה מארחת רשומה וכל עמודה מחזיקה נתונים ספציפיים לתכונות.
במערכת ניהול מסדי נתונים, כל רשומה (או שורה) צריכה להיות ייחודית.
מפתחות ראשיים
אף שהתנאי הוא שכל רשומה בטבלה צריכה להיות מובחנת, זה לא תמיד המקרה. בהמשך לדוגמא של מסד הנתונים להשכרת רכב, אם בסיס הנתונים מכיל שני לקוחות שכל אחד מהם יש את השם "ג'ון בראון", ג'ון בראון יכול היה להחזיר מרצדס בנץ שהוא לא עשה השכרה.
יצירת מפתח ראשי תמתן סיכון זה. במערכת ניהול מסדי נתונים של SQL, מפתח ראשי הוא מזהה ייחודי המבדיל רשומה אחת לאחרת.
לכן, לכל רשומה במערכת ניהול מסדי נתונים של SQL צריך להיות מפתח ראשי.
שימוש במפתחות ראשיים בבסיס נתונים
כדי לכלול מפתחות ראשיים במערכת ניהול מסדי נתונים באמצעות SQL, אתה יכול פשוט להוסיף אותו כתכונה רגילה בעת יצירת טבלה חדשה. אז טבלת הלקוחות תכלול ארבע תכונות (או עמודות):
- CarOwnerID (שיאחסן את המפתח הראשי)
- שם פרטי
- שם משפחה
- מספר טלפון
קָשׁוּר: כיצד ליצור טבלה ב- SQL
כעת לכל רשומת לקוח שייכנס למסד הנתונים יהיה מספר זיהוי ייחודי, כמו גם שם פרטי, שם משפחה ומספר טלפון. מספר הטלפון אינו מספיק ייחודי כדי להיות מפתח ראשי, כי למרות שהוא ייחודי לאדם אחד בכל פעם, אדם יכול לשנות את המספר שלו בקלות, כלומר עכשיו הוא היה שייך למישהו אחר.
תקליט עם דוגמה למפתח ראשי
/ * יוצר רשומה חדשה בטבלת הלקוחות * /
הכנס ללקוחות ערכים
('0004',
'ג'ון',
'חום',
'111-999-5555');
קוד ה- SQL לעיל יוסיף רשומה חדשה לקיים מראש לקוחות שולחן. הטבלה שלהלן מציגה את טבלת הלקוחות החדשה עם שני הרשומות של ג'ון בראון.
המפתח הזר
כעת יש לך מפתחות עיקריים המייחדים ייחודי בין שוכר רכב למשנהו. הבעיה היחידה היא שבמאגר הנתונים אין קשר אמיתי בין כל ג'ון בראון למכונית שהוא שוכר.
לכן האפשרות לטעות עדיין קיימת. כאן נכנסים לשחק מפתחות זרים. שימוש במפתח עיקרי לפתרון בעיית העמימות בבעלות ניתן להשיג רק אם המפתח הראשי משמש כמפתח זר.
מהו מפתח זר?
במערכת ניהול מסדי נתונים של SQL, מפתח זר הוא מזהה ייחודי או שילוב של מזהים ייחודיים המחברים שתי טבלאות או יותר במסד נתונים.
מתוך ארבע מערכות ניהול מסדי הנתונים של SQL הקיימות, מערכת ניהול מסדי הנתונים היחסית היא הפופולרית ביותר. כאשר מחליטים איזו טבלה במסד נתונים יחסי צריכה להיות מפתח זר, ראשית עליכם לזהות איזו טבלה היא הנושא ואיזה אובייקט בקשר שלהם.
אם נחזור למאגר השכרת הרכב, כדי לחבר כל לקוח למכונית הנכונה תצטרך להבין שלקוח (הנושא) שוכר רכב (החפץ). לכן, המפתח הזר צריך להיות בטבלת המכוניות.
קוד ה- SQL שיוצר טבלה עם מפתח זר שונה מעט מהמקובל.
יצירת טבלה עם דוגמה למפתח זר
/ * יוצר טבלת מכוניות חדשות במאגר השכרת הרכב * /
צור שולחן מכוניות
(
LicenseNumber varchar (30) לא מפתח ראשוני NULL,
CarType varchar (30) לא אפס,
לקוח מזהה לקוח (30) הפניות מפתח זרות חוץ לקוחות (לקוח מזהה)
);
כפי שניתן לראות בקוד לעיל, יש לזהות במפורש מפתח זר ככזה, יחד עם התייחסות למפתח הראשי שמחובר לטבלה החדשה.
קָשׁוּר: גיליון הצ'יטים החיוני של SQL Commands למתחילים
כדי להוסיף רשומה לטבלה החדשה, תצטרך לוודא שהערך בשדה המפתח הזר תואם לערך בשדה המפתח הראשי של הטבלה המקורית.
הוספת תקליט עם דוגמה למפתח זר
/ * יוצר שיא חדש בטבלת המכוניות * /
הכנס לרכבים ערכים
('100012',
'מרצדס בנץ',
'0004');
הקוד שלמעלה יוצר רשומה חדשה בחדש מכוניות הטבלה, המייצרת את התוצאה הבאה.
שולחן מכוניות
מהטבלה שלמעלה תוכלו לזהות את ג'ון בראון הנכון המשכיר מרצדס בנץ לפי המפתח הזר ברשומה.
מקשים זרים מתקדמים
ישנן שתי דרכים אחרות להשתמש במפתח זר במסד נתונים.
אם תסתכל אחורה על ההגדרה של מפתח זר לעיל, תגלה שהוא אומר שמפתח זר יכול להיות מזהה ייחודי או שילוב של מזהים ייחודיים.
אם נחזור לדוגמא של בסיס הנתונים להשכרת רכב, תראה שיצירת שיא חדש (של אותה מכונית) בכל פעם שלקוח שוכר את המכונית הזו, מביס את מטרת המכונית מכוניות שולחן. אם המכוניות נמכרות ונמכרות ללקוח יחיד פעם אחת, בסיס הנתונים הקיים מושלם; אך בהתחשב בכך שהמכוניות מושכרות יש דרך טובה יותר לייצג את הנתונים האלה.
מקשים מורכבים
מפתח מורכב כולל שני מזהים ייחודיים או יותר. במסד נתונים יחסי, יהיו מקרים שבהם השימוש במפתח זר יחיד לא ייצג מספיק את הקשרים הקיימים בתוך מסד נתונים זה.
בדוגמה להשכרת רכב, הגישה המעשית ביותר היא ליצור טבלה חדשה המאחסנת את פרטי השכירות. כדי שהמידע בטבלת השכרת הרכב יהיה שימושי, עליו להתחבר גם לשולחן הרכב וגם לשולחנות הלקוחות.
יצירת טבלה עם מפתחות זרים מורכבים
/ * יוצר טבלת CarRental במסד הנתונים של השכרת רכב * /
צור שולחן CarRental
(
תאריך שכר תאריך לא אפס
LicenseNumber varchar (30) לא הפניות מפתח אפסיות למכוניות (LicenseNumber),
לקוח מזהה לקוח (30) לא הפניות מרכזיות אפסיות לקוחות (לקוח מזהה),
מפתח ראשוני (תאריך השכרה, LicenseNumber, לקוח מזהה)
);
הקוד שלמעלה מתאר נקודה חשובה; אף על פי שטבלה במסד נתונים של SQL יכולה להכיל יותר ממפתח זר אחד, אך יכול להיות לה רק מפתח ראשי אחד. הסיבה לכך היא שצריכה להיות רק דרך ייחודית אחת לזהות רשומה.
יש צורך לשלב את כל שלוש התכונות בטבלה כדי שיהיה לך מפתח ייחודי. לקוח יכול לשכור יותר ממכונית אחת באותו יום (כך מספר לקוח ו תאריך השכרה אינו שילוב טוב) יותר מלקוח אחד יכול גם לשכור את אותה מכונית באותו יום (כך מספר רשיון ו תאריך השכרה אינו שילוב טוב).
עם זאת, יצירת מפתח מורכב המספר איזה לקוח, איזו מכונית ובאיזה יום הופך מפתח ייחודי מצוין. מפתח ייחודי זה מייצג גם מפתח זר מורכב וגם מפתח ראשי מורכב.
מפתחות ראשיים זרים
אה כן, מפתחות ראשיים זרים אכן יוצאים. אף על פי שאין שם רשמי לכך, מפתח זר יכול להיות גם מפתח ראשי באותה טבלה. זה קורה כאשר אתה יוצר טבלה חדשה המכילה נתונים מיוחדים על ישות קיימת (או רשומה בטבלה אחרת).
נגיד שפרד (שעובד בחברת השכרת הרכב) נמצא במאגר המידע של החברה מתחת לטבלת העובדים. לאחר מספר שנים הוא הופך למפקח ומתווסף לטבלת המפקחים.
פרד הוא עדיין עובד ועדיין יהיה לו מספר זהה זהה. אז מזהה העובד של פרד נמצא כעת בטבלת המפקחים כמפתח זר אשר יהפוך גם לעיקרי מקישים בטבלה זו (מכיוון שאין טעם ליצור מספר זהות חדש עבור פרד כעת, כיוון שהוא מפקח).
עכשיו אתה יכול לזהות מפתחות זרים בבסיסי SQL
מפתחות זרים מחברים טבלאות שונות בתוך מסד נתונים של SQL. ממאמר זה תוכלו לראות מהו מפתח זר, כיצד הוא פועל ומדוע חשוב להחזיקו במסד נתונים. אתה מבין גם את הצורות הבסיסיות, ואף המורכבות יותר, של מפתחות זרים.
אם אתה חושב שמפתחות זרים מעניינים, יהיה לך יום שדה שבו תתחיל להשתמש בפעולות הפרויקט ובחירת השאילתות על מאגרי ה- SQL שלך.
התמצא בבסיסי נתונים יחסיים של SQL על ידי הבנת פעולות הפרויקט והבחירה בעזרת דוגמאות אלה.
קרא הבא
- תִכנוּת
- תִכנוּת
- SQL
- מאגר מידע
Kadeisha Kean היא תוכנת Full-Stack תוכנה וסופרת טכנית / טכנולוגית. יש לה יכולת מובהקת לפשט כמה מהמושגים הטכנולוגיים המורכבים ביותר; הפקת חומר שניתן להבין בקלות על ידי כל טירון טכנולוגי. היא נלהבת לכתוב, לפתח תוכנות מעניינות ולנסוע בעולם (באמצעות סרטי תעודה).
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
צעד אחד נוסף !!!
אנא אשר את כתובת הדוא"ל שלך בדוא"ל ששלחנו לך זה עתה.