מבוא ליחסי מסד נתונים

תוכן עניינים:

מבוא ליחסי מסד נתונים
מבוא ליחסי מסד נתונים
Anonim

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

Image
Image

סוגי קשרי מסד נתונים

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

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

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

שורה התחתונה

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

יצירת קשרים עם מפתחות זרים

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

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

InstructorID Teacher_Name קורס
001 John Doe אנגלית
002 Jane Schmoe מתמטיקה

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

מספר תלמיד Student_Name Teacher_FK
0200 לואל סמית 001
0201 בריאן שורט 001
0202 קורקי מנדז 002
0203 מוניקה ג'ונס 001

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

שתי הטבלאות הללו ממחישות מערכת יחסים של אחד לרבים בין המורים לתלמידים.

יחסים ושלמות התייחסות

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

יישום קשרים

בהתאם למסד הנתונים שלך, תוכל ליישם קשרים בין טבלאות בדרכים שונות. Microsoft Access מספק אשף המאפשר לך לקשר טבלאות וגם לאכוף שלמות הפניות.

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

CREATE TABLE Teachers (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), קורס VARCHAR(100));

כשאתה יוצר את טבלת התלמידים, אתה מצהיר שהעמודה Teacher_FK היא מפתח זר המפנה לעמודת InstructorID בטבלת המורים:

CREATE TABLE Students (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCES Teachers)(InstructorID));

שימוש במערכות יחסים כדי להצטרף לשולחנות

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

לדוגמה, תנאי JOIN זה מחזיר Student_Name, Teacher_Name וקורס, כאשר המפתח הזר בטבלת התלמידים תואם למפתח הראשי בטבלת המורים:

SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course

FROM Students

INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;

הצהרה זו מייצרת טבלה בערך כך:

Student_Name Teacher_Name קורס
לואל סמית John Doe אנגלית
בריאן שורט John Doe אנגלית
קורקי מנדז Jane Schmoe מתמטיקה
מוניקה ג'ונס John Doe אנגלית

מוּמלָץ: