Skip to main content

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

יצירת יחסי גומלין יחיד לרבים במסד נתונים Microsoft Access (אַפּרִיל 2025)

יצירת יחסי גומלין יחיד לרבים במסד נתונים Microsoft Access (אַפּרִיל 2025)
Anonim

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

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

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

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

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

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

מורים וקורסים
Teacher_IDשם המורהכמובן
המורהכרמןביולוגיה
המורהורוניקהמתמטיקה
המורהחורחהאנגלית

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

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

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

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

אלטרנטיבה עיצוב אחרת יכולה להיות פשוט להוסיף שיא השני של כרמן:

מורים וקורסים
מורה_IDמורהשםכמובן
המורהכרמןביולוגיה
המורהכרמןמתמטיקה
המורהורוניקהמתמטיקה
המורהחורחהאנגלית

זה שומרת על 1NF אבל עדיין עיצוב מסד נתונים לקוי כי זה מציג יתירות יכול לנפח מסד נתונים גדול מאוד שלא לצורך. וחשוב יותר, הנתונים עלולים להיות בלתי עקביים. לדוגמה, מה אם השם של כרמן השתנה? מישהו שעובד עם הנתונים עשוי לעדכן את שמה ברשומה אחת ולא לעדכן אותו ברשומה השנייה. עיצוב זה מפר את טופס Normal Second (2NF), הדבק ב- 1NF וחייב להימנע גם מהיתירות הכפולות של מספר רשומות על-ידי הפרדת קבוצות נתונים למספר טבלאות ויצירת קשר ביניהן.

כיצד לעצב מסד נתונים עם אחד ליחסים רבים

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

כאן הסרנו את העמודה 'קורס' בטבלת המורים:

מורים
מורה_IDמורהשם
המורהכרמן
המורהורוניקה
המורהחורחה

והנה טבלת הקורסים. שים לב שמפתח החוץ שלה, Teacher_ID, מקשר קורס למורה בטבלת המורים:

קורסים
מזהה קורסשם קורסTeacher_ID
Course_001ביולוגיההמורה
הקורסמתמטיקההמורה
הקורסאנגליתהמורה

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

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

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

מאגרי מידע יכולים גם ליישם מערכת יחסים של אחד על אחד ויחסים רבים-רבים.