אחת מהמטרות של עיצוב טוב של מסדי נתונים היא להסיר יתירות נתונים (נתונים כפולים). כדי להשיג מטרה זו, עליך לחלק את הנתונים שלך לטבלאות מבוססות-נושא רבות, כך שכל עובדה תיוצג פעם אחת בלבד. לאחר מכן, תוכל לספק ל- Access דרך לאיחוד מחדש של הנתונים המחולקים - ניתן לעשות זאת על-ידי הצבת שדות משותפים בטבלאות הקשורות. עם זאת, כדי לבצע שלב זה בצורה נכונה, עליך להבין תחילה את קשרי הגומלין בין הטבלאות שלך ולאחר מכן לציין קשרי גומלין אלה במסד הנתונים.
במאמר זה
מבוא
לאחר שיצרת טבלה עבור כל נושא מסד הנתונים שלך, עליך להעניק ל- Access דרך לאיחוד מידע זה מחדש בעת הצורך. לשם כך עליך למקם שדות משותפים בטבלאות קשורות ולהגדיר קשרי גומלין בין הטבלאות. לאחר מכן תוכל ליצור שאילתות, טפסים ודוחות המציגים מידע ממספר טבלאות בו-זמנית. לדוגמה, הטופס המוצג כאן כולל מידע שנלקח ממספר טבלאות:
1. המידע בטופס זה מגיע מהטבלה Customers...
2. ...הטבלה Orders...
3. ...הטבלה Products...
4. ...והטבלה Order Details.
שם הלקוח בתיבה Bill To מאוחזר מהטבלה Customers, הערכים Order ID ו- Order Date מגיעים מהטבלה Orders, שם המוצר מגיע מהטבלה Products, והערכים Unit Price ו- Quantity מגיעים מהטבלה Order Details. טבלאות אלה מקושרות זו לזו במגוון דרכים להבאת מידע מכל אחת מהן אל הטופס.
בדוגמה הקודמת, יש לתאם בין השדות שבטבלאות כך שהם יציגו מידע אודות אותה ההזמנה. תיאום זה מושג באמצעות קשרי גומלין בין טבלאות. קשר גומלין בין טבלאות פועל על-ידי התאמת נתונים בשדות מפתח — לרוב שדה בעל שם זהה בשתי הטבלאות. ברוב המקרים שדות תואמים אלה מהווים מפתח ראשי מטבלה אחת, המספקת מזהה ייחודי לכל רשומה, ומפתח זר בטבלה השניה. לדוגמה, ניתן לשייך עובדים להזמנות שעליהן הם אחראים על-ידי יצירת קשר גומלין בין השדות EmployeeID בטבלאות Employees ו- Orders.
1. EmployeeID מופיע בשתי הטבלאות — כמפתח ראשי ...
2. ... וכמפתח זר.
סוגים של קשרי גומלין בין טבלאות
קיימים שלושה סוגים של קשרי גומלין בין טבלאות ב- Access.
-
קשר גומלין של יחיד לרבים
בוא נשתמש במסד נתונים של מעקב אחר הזמנות הכולל טבלת Customers וטבלת Orders כדוגמה. באפשרות הלקוח לבצע כל מספר של הזמנות. מכאן שעבור כל לקוח המיוצג בטבלה Customers, יכולות להיות הזמנות רבות המיוצגות בטבלה Orders. לכן קשר הגומלין בין הטבלה Customers לבין הטבלה Orders הוא קשר גומלין של יחיד לרבים.
כדי לייצג קשר גומלין של יחיד לרבים בעיצוב מסד הנתונים שלך, קח את המפתח הראשי בצד ה"יחיד" של קשר הגומלין והוסף אותו כשדה נוסף או כשדות נוספים לטבלה בצד ה"רבים" של קשר הגומלין. במקרה זה, לדוגמה, הוסף שדה חדש — השדה 'מזהה' מהטבלה 'לקוחות' — לטבלה 'הזמנות' והענק לו את השם 'מזהה לקוח'. Access יוכל להשתמש לאחר מכן במספר Customer ID שבטבלה Orders כדי לאתר את הלקוח המתאים עבור כל הזמנה.
-
קשר גומלין של רבים לרבים
כעת בוא נסתכל על קשר הגומלין בין הטבלה Products והטבלה Orders. הזמנה אחת יכולה לכלול יותר ממוצר אחד. מצד שני, מוצר אחד יכול להופיע בהזמנות רבות. לפיכך, עבור כל רשומה בטבלה Orders, יכולות להיות רשומות רבות בטבלה Products. בנוסף, עבור כל רשומה בטבלה Products, יכולות להיות רשומות רבות בטבלה Orders. קשר גומלין זה נקרא קשר גומלין מסוג רבים לרבים. שים לב כי כדי לזהות קשרי גומלין קיימים של רבים לרבים בין הטבלאות שלך, חשוב לקחת בחשבון את שני הצדדים של קשר הגומלין.
כדי לייצג קשר גומלין של רבים לרבים, עליך ליצור טבלה שלישית, הנקראת לעתים קרובות טבלת הסתעפויות, המפרקת את קשר הגומלין של רבים לרבים לשני קשרי גומלין של יחיד לרבים. עליך להכניס את המפתח הראשי מכל אחת משתי הטבלאות לטבלה השלישית. כתוצאה מכך, הטבלה השלישית תתעד כל התרחשות או מופע של קשר הגומלין. לדוגמה, לטבלה Orders ולטבלה Products יש קשר גומלין של רבים לרבים, המוגדר על-ידי יצירה של שני קשרי גומלין של יחיד לרבים לטבלה Order Details. הזמנה אחת יכולה להכיל מוצרים רבים, וכל מוצר יכול להופיע בהזמנות רבות.
-
קשר גומלין של יחיד ליחיד
בקשר גומלין של יחיד ליחיד, כל רשומה בטבלה הראשונה תוכל להכיל רשומה תואמת אחת בלבד בטבלה השניה, וכל רשומה בטבלה השניה תוכל להכיל רשומה תואמת אחת בלבד בטבלה הראשונה. סוג זה של קשר גומלין אינו נפוץ, מכיוון שבדרך כלל המידע הקשור באופן זה מאוחסן באותה טבלה. ייתכן שתשתמש בקשר גומלין של יחיד ליחיד כדי לחלק טבלה אחת המכילה שדות רבים, כדי לבודד חלק מטבלה מסיבות אבטחה או כדי לאחסן מידע החל רק על קבוצת משנה של הטבלה הראשית. לאחר שתזהה קשר גומלין מסוג זה, לשתי הטבלאות חייב להיות שדה משותף.
מדוע ליצור קשרי גומלין בין טבלאות?
באפשרותך ליצור קשרי גומלין בין טבלאות באופן מפורש באמצעות החלון 'קשרי גומלין' או על-ידי גרירת שדה מהחלונית רשימת שדות. Access משתמש בקשרי גומלין בין טבלאות כדי להחליט כיצד לצרף טבלאות כאשר אתה זקוק להן באובייקט של מסד נתונים. קיימות מספר סיבות ליצירת קשרי גומלין בין טבלאות לפני יצירת אובייקטים אחרים של מסד נתונים, כגון טפסים, שאילתות ודוחות.
-
קשרי גומלין בין טבלאות משפרים את עיצובי השאילתות שלך
כדי לעבוד עם רשומות מיותר מטבלה אחת, לעתים קרובות עליך ליצור שאילתה המצרפת את הטבלאות זו לזו. השאילתה פועלת על-ידי התאמת הערכים בשדה המפתח הראשי של הטבלה הראשונה עם שדה המפתח הזר שבטבלה השניה. לדוגמה, כדי להחזיר שורות שבהן מפורטות כל ההזמנות עבור כל לקוח, עליך לבנות שאילתה המצרפת את הטבלה Customers לטבלה Orders בהתבסס על השדה Customer ID. בחלון 'קשרי גומלין', באפשרותך לציין באופן ידני את השדות שיצורפו. עם זאת, אם יש כבר ברשותך קשר גומלין שהוגדר בין הטבלאות, Access יספק את צירוף ברירת המחדל, בהתבסס על קשר הגומלין הקיים בין הטבלאות. בנוסף, אם תשתמש באחד מאשפי השאילתות, Access ישתמש במידע שהוא יאסוף מקשרי הגומלין שכבר הגדרת בין הטבלאות כדי להציג בחירות מושכלות וכדי לאכלס מראש הגדרות מאפיינים עם ערכי ברירת מחדל מתאימים.
-
קשרי גומלין בין טבלאות משפרים את עיצובי הטפסים והדוחות שלך
בעת עיצוב טופס או דוח, Access ישתמש במידע שנאסף מקשרי הגומלין שבין טבלאות שכבר הגדרת כדי להציג בחירות מושכלות וכדי לאכלס מראש הגדרות מאפיינים עם ערכי ברירת מחדל מתאימים.
-
קשרי גומלין בין טבלאות הם היסוד שעליו באפשרותך לאכוף שלמות הקשרים בין טבלאות כדי לסייע למנוע רשומות מיותמות במסד הנתונים שלך. רשומה מיותמת היא רשומה עם הפניה לרשומה אחרת שאינה קיימת — לדוגמה, רשומת הזמנה עם הפניה לרשומת לקוח שאינה קיימת.
בעת עיצוב מסד נתונים, עליך לחלק את המידע שלך לטבלאות, שלכל אחת מהן יש מפתח ראשי. לאחר מכן עליך להוסיף מפתחות זרים לטבלאות הקשורות המכילות הפניה למפתחות ראשיים אלה. זיווגים אלה של מפתח זר-מפתח ראשי יוצרים את הבסיס לקשרי גומלין בין טבלאות ולשאילתות מרובות טבלאות. חשוב לשמור על הסינכרון של הפניות מפתח זר-מפתח ראשי אלה. שלמות הקשרים, שהיא תלויית קשרי גומלין בין טבלאות, מסייעת להבטיח שההפניות יישארו מסונכרנות.
הכרת שלמות ההקשרים
בעת עיצוב מסד נתונים, עליך לחלק את מידע מסד הנתונים לטבלאות מבוססות-נושא רבות כדי לצמצם את יתירות הנתונים. לאחר מכן עליך להעניק ל- Access דרך לאיחוד הנתונים בחזרה על-ידי הצבת שדות משותפים בטבלאות קשורות. לדוגמה, כדי לייצג קשר גומלין של יחיד לרבים עליך לקחת את המפתח הראשי מטבלת ה"יחיד" ולהוסיף אותו כשדה נוסף לטבלת ה"רבים". כדי לאחד מחדש את הנתונים, Access לוקח את הערך שבטבלת ה"רבים" ובודק את הערך התואם בטבלת ה"יחיד". באופן זה הערכים בטבלת ה"רבים" יכילו הפניה לערכים התואמים בטבלת ה"יחיד".
נניח שיש לך קשר גומלין של יחיד לרבים בין הטבלה Shippers לטבלה Orders, וברצונך למחוק רשומה של מוביל מהטבלה Shippers. אם למוביל שברצונך למחוק יש הזמנות בטבלה Orders, הן "יתייתמו" כאשר תמחק את רשומת המוביל בטבלה Shippers. ההזמנות יכילו עדיין מזהה מוביל, אך המזהה לא יהיה עוד חוקי, מכיוון שהרשומה שאליה הוא מפנה אינה קיימת עוד.
המטרה של שלמות הקשרים היא למנוע רשומות יתומות ולשמור על סינכרון ההפניות כך שמצב היפותטי זה לעולם לא יתרחש.
שלמות הקשרים נאכפת על ידי הפיכתה לזמינה עבור קשר גומלין בין טבלאות. כאשר שלמות הקשרים נאכפת, Access דוחה כל פעולה שמפרה את שלמות הקשרים עבור אותו קשר גומלין בין טבלאות. משמעות הדבר היא ש- Access ידחה את שני העדכונים המשנים את היעד של הפניה ואת המחיקות המסירות את היעד של הפניה. עם זאת, ייתכן שיהיה לך צורך לגיטימי לשנות את המפתח הראשי עבור מוביל בעל הזמנות בטבלה Orders. במקרים אלה, יש צורך ש- Access יעדכן באופן אוטומטי את כל השורות המושפעות כחלק מפעולה אחת. באופן זה, Access מבטיח שהעדכון יושלם במלואו כך שמסד הנתונים שלך לא יישאר במצב לא עקבי, שבו חלק מהשורות מעודכנות וחלקן לא. מסיבה זו, Access באפשרות עדכן שדות קשורים זה עם זה בהתאם להירארכיית הקשרים . כאשר תאכוף שלמות הקשרים ותבחר באפשרות עדכן שדות קשורים זה לזה בהתאם להירארכיית הקשרים, ולאחר מכן תעדכן מפתח ראשי, Access יעדכן באופן אוטומטי את כל השדות המפנים למפתח הראשי.
ייתכן גם שיהיה לך צורך הגיוני למחוק שורה ואת כל הרשומות הקשורות אליה — לדוגמה, רשומה של מוביל מהרשימה 'מובילים' וכל ההזמנות הקשורות אל מוביל זה. מסיבה זו, Access תומך באפשרות מחק רשומות קשורות זו לזו בהתאם להירארכיית הקשרים. כאשר תאכוף שלמות הקשרים בין טבלאות ותבחר באפשרות מחק רשומות קשורות זו לזו בהתאם להירארכיית הקשרים ולאחר מכן תמחק רשומה בצד המפתח הראשי של קשר גומלין, Access ימחק באופן אוטומטי את כל הרשומות המפנות למפתח הראשי.
הצגת קשרי גומלין בין טבלאות
כדי להציג את קשרי הגומלין בין הטבלאות שלך, לחץ על קשרי גומלין בכרטיסיה כלי מסד נתונים. החלון 'קשרי גומלין' ייפתח ויציג את כל קשרי הגומלין הקיימים. אם טרם הוגדרו קשרי גומלין בין טבלאות וזו הפעם הראשונה שאתה פותח את החלון 'קשרי גומלין', Access יציג בפניך בקשה להוסיף טבלה או שאילתה לחלון.
פתיחת החלון 'קשרי גומלין'
-
לחץ על קובץ, לחץ על פתח ולאחר מכן בחר ופתח את מסד הנתונים.
-
בכרטיסיה כלי מסד נתונים, בקבוצה קשרי גומלין, לחץ על קשרי גומלין.
-
בכרטיסיה עיצוב קשרי גומלין , בקבוצה קשרי גומלין , לחץ על כל קשרי הגומלין.
פעולה זו מציגה את כל קשרי הגומלין המוגדרים במסד הנתונים שלך. שים לב שטבלאות מוסתרות (טבלאות שעבורן נבחרה תיבת הסימון מוסתר בתיבת הדו-שיח מאפיינים של הטבלה) וקשרי הגומלין שלהן לא יוצגו אלא אם תיבת הסימון הצג אובייקטים מוסתרים נבחרה בתיבת הדו-שיח אפשרויות ניווט.
קשר גומלין בין טבלאות מיוצג על-ידי קו קשר גומלין הנמתח בין טבלאות בחלון 'קשרי גומלין'. קשר גומלין שאינו אוכף שלמות הקשרים מופיע כקו דק בין השדות המשותפים התומכים בקשר הגומלין. כאשר תבחר בקשר הגומלין על-ידי לחיצה על הקו שלו, הקו יתעבה כדי לציין שהוא נבחר. אם תאכוף שלמות הקשרים על קשר גומלין זה, הקו יהפוך עבה יותר בכל קצה. בנוסף, המספר 1 יופיע מעל החלק העבה של הקו בצד אחד של קשר הגומלין, וסימן האינסוף (∞) יופיע מעל החלק העבה של הקו בצד השני.
כאשר החלון 'קשרי גומלין' פעיל, באפשרותך לבחור מתוך הפקודות הבאות ברצועת הכלים:
בכרטיסיה עיצוב קשרי גומלין , בקבוצה כלים:
-
עריכת קשרי גומלין פתיחת תיבת הדו-שיח עריכת קשרי גומלין. בעת בחירה בקו קשר גומלין, באפשרותך ללחוץ על עריכת קשרי גומלין כדי לשנות את קשר הגומלין שבין הטבלאות. ניתן גם ללחוץ פעמיים על קו קשר הגומלין.
-
נקה מיתאר הסרת כל הטבלאות וקשרי הגומלין מהתצוגה בחלון 'קשרי גומלין'. שים לב שפקודה זו רק מסתירה את הטבלאות וקשרי הגומלין — אך אינה מוחקת אותם.
-
דוח קשרי גומלין יצירת דוח המציג את הטבלאות וקשרי הגומלין במסד הנתונים שלך. הדוח מציג רק את הטבלאות וקשרי הגומלין שאינם מוסתרים בחלון 'קשרי גומלין'.
בכרטיסיה עיצוב קשרי גומלין , בקבוצה קשרי גומלין :
-
הוספת טבלאות מתן אפשרות לבחירה של טבלאות להצגה בחלון 'קשרי גומלין'.
-
הסתר טבלה הסתרת הטבלה שנבחרה בחלון 'קשרי גומלין'.
-
קשרי גומלין ישירים הצגת כל קשרי הגומלין והטבלאות הקשורות עבור הטבלה שנבחרה בחלון 'קשרי גומלין', אם הם אינם מוצגים כבר.
-
כל קשרי הגומלין הצגת כל קשרי הגומלין והטבלאות הקשורות במסד הנתונים שלך בחלון 'קשרי גומלין'. שים לב שכל הטבלאות המוסתרות (טבלאות שעבורן נבחרה תיבת הסימון מוסתר בתיבת הדו-שיח מאפיינים של הטבלה) וקשרי הגומלין שלהן לא יוצגו אלא אם האפשרות 'הצג אובייקטים מוסתרים' נבחרה בתיבת הדו-שיח 'אפשרויות ניווט'.
-
סגור סגירת החלון 'קשרי גומלין'. אם ביצעת שינויים בפריסה של החלון 'קשרי גומלין', תישאל אם לשמור שינויים אלה.