בניית דוחות בפריוריטי – יחסים בין טבלאות

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

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

אחד לאחד – לכל  רשומה בטבלה X יש רשומה יחידה המתאימה לה בטבלה Y. לדוגמא היחס בין טבלת PART – טבלת המוצרים לבין טבלת PARTSPEC הוא אחד לאחד משום שלכל רשומת פריט ב PART יש רשומת פרמטרים למוצר יחידה ב PARTSPEC.  כיצד יחס זה בא לידי ביטוי במפתחות הטבלאות ? כאשר מפתח U או A של טבלה אחת הוא מפתח U או A של הטבלה השנייה. בדוגמא של PART ו PARTSPEC. מפתח ה A של PART זהה למפתח ה U של PARTSPEC.

אחד לרבים – לכל רשומה בטבלה X יש רשומה אחת או יותר בטבלה Y. לדוגמא היחס הין טבלת ORDERS  – טבלת הזמנות הלקוח לטבלת ORDERITEMS – טבלת פירוטי ההזמנה הוא אחד לרבים. מדוע ? כי לכל הזמנה יכולות להיות מספר כלשהו של רשומות פירוט בטבלת ORDERITEMS. מה היחס בין PART ל ORDERITEMS ? גם כן אחד לרבים!! כי לכל פריט יכולות להיות מספר כלשהו של רשומות בפירוט ההזמנה.  היחס אחד לרבים בא לידי ביטוי כך: מפתח A או U של טבלה X מופיע כעמודה בטבלה Y. לדוגמא, מפתח ה-A של ORDERS הוא ORD. טבלת ORDERITEMS מכילה גם כן עמודת ORD אשר תפקידה לרשום לכל פירוט הזמנה את מספר ההזמנה שלו . 

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

רבים לרבים – לכל רשומה בטבלה X יש מספר רשומות בטבלה Y ולכל רשומה בטבלה Y יש מספר רשומות בטבלה X. דוגמא: מוצרים ולקוחות. לכל לקוח יכולים להיות מספר מוצרים ולכל מוצר יכולים להיות מספר לקוחות. אין קישור ישיר בין מפתחות הטבלאות. אלא קיימת טבלה "מגשרת" Z אשר היחס הין X ל Z הוא אחד לרבים והיחס בין Y ל Z הוא אחד לרבים. דוגמא במערכת קיימת טבלה הנקראת CUSTPART – מוצרים ללקוחות אשר המפתח שלה הוא (CUST,PART) – מפתח U בן שתי עמודות. מכיון שPART מטבלת המוצרים היא עמודה ב CUSTPART, היחס בניהן הוא אחד לרבים. ומכיון ש CUST של CUSTOMERS מופיעה ב CUSTPART, גם היחס בינה לבין CUSTOMERS הוא אחד לרבים.אם ברצוננו להציג קשר רבים לרבים בדוח עלינו למצוא את הטבלה המגשרת ולהכניס גם אותה לדוח.

"דילוגים" – (לא מצאתי מילה אחרת. עם הפרופסורים הסליחה). ולסיום העניין נקודה נוספת. אם היחס בין X ל Y הוא אחד לאחד וגם היחס בין Y ל Z הוא אחד לאחד, אזי היחס בין X ל Z הוא גם אחד לאחד אפילו אם אין קשר ישיר של מפתחות בינהן. אם היחס בין Y  ל W הוא אחד לרבים אזי היחס בין X ל W הוא אחד לרבים. נמחיש באמצעות דוגמא. היחס בין PART ל PARTPARAM הוא אחד לאחד על פי מפתח PART הנמצא בשתיהן. היחס בין PARTPARAM ל PARTPARAMA הוא גם אחד לאחד על פי מפתח PARTPARAM הנמצא בשתיהן ולכן גם היחס בין PART ל PARTPARAMA הוא אחד לאחד. PARTARC היא טבלת עצי המוצר. מכיון היחס בין PART לPARTARC הוא אחד לרבים (לכל מוצר ייתכנו מספר פריטי בן) אזי גם היחס בין PARTPARAMA ל PARTARC הוא אחד לרבים.

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

0
0