מהו מערכת יחסים במסד נתונים?

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

מהו מערכת יחסים במסד נתונים?
מהו מערכת יחסים במסד נתונים?
Anonim

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

איך מפתח זר עובד כדי ליצור מערכת יחסים

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

לדוגמה, שקול את שתי הטבלאות האלה שמזהות איזה מורה מלמד איזה קורס. כאן, המפתח הראשי של טבלת הקורסים הוא Course_ID. המפתח הזר שלו הוא Teacher_ID:

Course_ID Course_Name Teacher_ID
Course_001 ביולוגיה Teacher_001
Course_002 מתמטיקה Teacher_002
Course_003 אנגלית Teacher_003

אתה יכול לראות שהמפתח הזר בקורסים תואם למפתח ראשי במורים:

Teacher_ID Teacher_Name
Teacher_001 Carmen
Teacher_002 ורוניקה
Teacher_003 Jorge

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

Image
Image

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

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

אחד לאחד

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

אחד לרבים

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

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

רבים-לרבים

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

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

למה חשובים קשרי מסד נתונים?

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

Teacher_ID Teacher_Name קורס
Teacher_001 Carmen ביולוגיה, מתמטיקה
Teacher_002 ורוניקה מתמטיקה
Teacher_003 Jorge אנגלית

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

או אולי החלטנו להוסיף שיא שני לכרמן, כדי לאכוף את 1NF:

Teacher_ID Teacher_Name קורס
Teacher_001 Carmen ביולוגיה
Teacher_001 Carmen מתמטיקה
Teacher_002 ורוניקה מתמטיקה
Teacher_003 Jorge אנגלית

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

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

מוּמלָץ: