מה הם מפתחות זרים במאגרי SQL?

מה הם מפתחות זרים במאגרי SQL?

מפתחות זרים מאפשרים למנהלי מסדי נתונים לזהות בקלות את החיבורים השונים הקיימים בתוך מערכת ניהול מסדי נתונים של SQL.





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





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





במערכת ניהול מסדי נתונים, כל רשומה (או שורה) צריכה להיות ייחודית.

מפתחות ראשוניים

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



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

איך מסכים מראה ל- xbox one

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





שימוש במפתחות ראשיים במסד נתונים

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

  • CarOwnerID (שיאחסן את המפתח הראשי)
  • שם פרטי
  • שם משפחה
  • מספר טלפון

קָשׁוּר: כיצד ליצור טבלה ב- SQL





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

רשומה עם דוגמא למפתח ראשי

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

קוד ה- SQL שלמעלה יוסיף רשומה חדשה לרשומה הקיימת לקוחות שולחן. הטבלה שלהלן מציגה את טבלת הלקוחות החדשה עם שתי הרשומות של ג'ון בראון.

המפתח הזר

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

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

מהו מפתח זר?

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

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

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

קוד ה- SQL שיוצר טבלה עם מפתח זר שונה במקצת מהנורמה.

יצירת טבלה עם דוגמא למפתח זר

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

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

כיצד לשנות את צבע הצ'אט של אינסטגרם

קָשׁוּר: גיליונות הרמאות החיוניים של פקודות SQL למתחילים

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

הוספת רשומה עם דוגמא למפתח זר

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

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

שולחן מכוניות

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

מפתחות זרים מראש

ישנן שתי דרכים נוספות לשימוש במפתח זר במסד נתונים.

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

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

מפתחות מרוכבים

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

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

יצירת שולחן עם מפתחות זרים מורכבים

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

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

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

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

כיצד להסיר אירועים מיומן האייפון

מפתחות ראשוניים זרים

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

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

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

כעת תוכל לזהות מפתחות זרים במסדי נתונים של SQL

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

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל למד כיצד להשתמש בפעולות הפרויקט והבחירה ב- SQL

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

קרא הבא
נושאים קשורים
  • תִכנוּת
  • תִכנוּת
  • SQL
  • מאגר מידע
על הסופר קדישא קין(פורסמו 21 מאמרים)

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

עוד מ- Kadeisha Kean

הירשם לניוזלטר שלנו

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

לחצו כאן להרשמה