מהו קישור בין כרטיסים?

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

נכיר שני אלמנטים הקיימים במערכת:

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

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

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

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

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

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

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

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

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

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

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

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

יהודה פולק כתב 76 מאמרים