Transcript ת.ז.

An Introduction to Schema Design – Part 1
1
‫המטרה‪" :‬התאמת העולם למודל"‬
‫‪ ‬כשאנחנו מעצבים בסיס נתונים במודל היחסים‪ ,‬אנחנו בעצם‬
‫דוחסים את העולם הממשי לתוך טבלאות‪.‬‬
‫דרישות הלקוח‬
‫תכנון ברמה גבוהה‬
‫אפשר להתחיל ישירות‬
‫תכנון סכמה‬
‫סכמה במודל‬
‫היחסים‬
‫להגדיר טבלאות‪ ,‬אבל‪:‬‬
‫‪‬האם הבנו את הדרישות‬
‫נכון? דיאגראמה‬
‫הישויות‬
‫‪‬עולם במודל‬
‫רחוק‬
‫הטבלאות מדי‬
‫מהעולם הממשי‪.‬‬
‫והקשרים‬
‫‪‬אנחנו צריכים כלי עזר ל‪:‬‬
‫‪‬דו‪-‬שיח יעיל עם הלקוח‬
‫‪‬תהליך דחיסת העולם‬
‫הממשי לתוך טבלאות‬
‫‪2‬‬
‫דוגמה להמחשה‪ :‬דיאגראמה עבור פרויקט בשנת תשע"ב‬
‫מחלה‬
‫בדיקה‬
‫סניף‬
‫מבוצע‬
‫סותרת‬
‫תרופה‬
‫אב‬
‫חולה‬
‫אם‬
‫הפניה‬
‫בתוכו‬
‫חולה‬
‫אב‬
‫מבקר‬
‫ביקור‬
‫מומלץ‬
‫מוצר‬
‫בן‬
‫אב מש'‬
‫אצל‬
‫רופא‬
‫‪3‬‬
‫רגיש‬
‫נראה‬
‫אבחנה‬
‫מוגשת‬
‫תלונה‬
‫מאורז‬
‫אריזה‬
The Entity-Relationship Model
4
‫מודל הישויות והקשרים‬
‫‪ ‬מודל הישויות והקשרים הינו מודל שמתאים במיוחד‬
‫לתכנון גרפי של סכמה עבור מודל היחסים‬
‫‪ ‬באנגלית‪( Entity-Relationship Model :‬נכתוב "מודל ‪)"ER‬‬
‫‪ ‬לדיאגרמה במודל ‪ ER‬קוראים ‪.ERD‬‬
‫‪ ‬הערה‪ :‬בזמן האחרון התפרסמו גם מודלים אחרים‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫)‪Unified Modeling Language (UML‬‬
‫)‪Object Description Language (ODL‬‬
‫מודל ‪ ER‬הינו המודל הקלסי‬
‫‪ ‬במודל ‪ ,ER‬העולם מורכב מישויות וקשרים בין הישויות‬
‫‪ ‬דוגמאות של ישויות‪ :‬סטודנט‪ ,‬קורס‪ ,‬מרצה‬
‫‪ ‬דוגמאות של קשרים‪ :‬קשר בין קורס לסטודנט‪ ,‬קשר בין קורס‬
‫למרצה‬
‫‪5‬‬
‫ישות‬
‫ת‪.‬ז‪.‬‬
‫ישות קורא‬
‫ישות ספר‬
‫מס'‬
‫שם משפחה‬
‫שם‬
‫‪ ‬ישות היא דבר שקיים בעולם ושיש לו תכונות (אטריבוטים)‬
‫‪ ‬לדוגמה‪ ,‬קורא הוא ישות בעל התכונות‬
‫‪‬‬
‫שם‪ ,‬כתובת‪ ,‬תאריך לידה‪ ,‬שם האב‪ ,‬מספר זהות וכד'‬
‫‪ ‬חשוב‪ :‬אטריבוטים הינם אטומיים‪ ,‬כלומר לא נצטרך לחלק‬
‫ערך של אטריבוט בשביל שאילתה‬
‫‪ ‬לדוגמה‪ ,‬לא כדאי להגדיר תכונה של רשימת ספרים שהקורא שאל‪.‬‬
‫‪ ‬אטריבוט או קבוצת אטריבוטים שמזהים את הישות‬
‫נקרא(ת) מפתח של הישות‬
‫‪ ‬בוחרים מפתח אחד ומסמנים אותו על ידי קו תחתון‬
‫‪6‬‬
‫קשר‬
‫ת‪.‬ז‪.‬‬
‫ישות קורא‬
‫קשר השאלה‬
‫ישות ספר‬
‫מס'‬
‫שם משפחה‬
‫שם‬
‫תאריך החזרה‬
‫‪ ‬קשר מביע אינטראקציה בין שתי ישויות או יותר‪ .‬דוגמאות‪:‬‬
‫‪ ‬קורא יכול להיות בקשר של השאלה עם ספר‬
‫‪ ‬סטודנט יכול להיות בקשר של הרשמה עם קורס‬
‫‪ ‬לקשר יש אטריבוטים המאפיינות את הקשר‪ .‬דוגמאות‪:‬‬
‫‪ ‬תאריך החזרה של הספר מאפיין את הקשר בין קורא לספר‬
‫‪ ‬ציון הינו תוצאה של הקשר בין סטודנט לקורס‪ ,‬ולכן אנחנו יכולים‬
‫לראות אותו כמאפיין את הקשר הרשמה‬
‫‪7‬‬
‫כמה קשרים בין אותם ישויות‬
‫‪ ‬ייתכן שקיימים שניים או יותר קשרים בין אותן הישויות‬
‫קשר השאלה‬
‫ת‪.‬ז‪.‬‬
‫שם משפחה‬
‫ישות קורא‬
‫תאריך החזרה‬
‫קשר תרומה‬
‫שם לע"נ‬
‫‪8‬‬
‫ישות ספר‬
‫מס'‬
‫שם‬
‫קבוצת ישויות‬
‫ת‪.‬ז‪.‬‬
‫קבוצת ישויות "קורא"‬
‫קבוצת ישויות‬
‫ת‪.‬ז‪.‬‬
‫קורא‬
‫שם משפחה‬
‫שם משפחה‬
‫‪ ‬כל הישויות מאותו סוג נמצאות בקבוצת ישויות אחת‪.‬‬
‫דוגמאות‪:‬‬
‫‪ ‬קבוצת הישויות של קוראים‬
‫‪ ‬קבוצת הישויות של סטודנטים‬
‫‪ ‬סימון ב ‪ :ERD‬מלבן‬
‫‪ ‬לכל הישויות בקבוצה יש אותם אטריבוטים ואותו מפתח‬
‫‪ ‬בסוף המצגת ניראה יוצאים מכלל זה‬
‫‪9‬‬
‫קבוצת קשרים‬
‫קבוצת קשרים "השאלה"‬
‫תאריך החזרה‬
‫קבוצת קשרים‬
‫השאלה‬
‫תאריך החזרה‬
‫‪ ‬כל הקשרים מאותו סוג נמצאים בקבוצת קשרים אחת‪ .‬דוגמאות‪:‬‬
‫‪ ‬קבוצת קשרים של השאלה בין קוראים לספרים‬
‫‪ ‬קבוצת קשרים של הרשמה בין סטודנטים לקורסים‬
‫‪ ‬סימון ב ‪ :ERD‬מעוין‬
‫‪ ‬לכול הקשרים בקבוצה יש את אותם אטריבוטים‬
‫‪10‬‬
‫סיכום של סימונים בסיסיים ב‪ERD-‬‬
‫אטריבוט‬
‫אטריבוט‬
‫קבוצת ישויות‬
‫קבוצת קשרים קבוצת ישויות‬
‫מס'‬
‫ת‪.‬ז‪.‬‬
‫קורא‬
‫שם משפחה‬
‫השאלה‬
‫שם‬
‫תאריך החזרה‬
‫אטריבוט‬
‫‪11‬‬
‫ספר‬
‫הערה חשובה על קבוצת קשרים‬
‫ת‪.‬ז‪.‬‬
‫שם משפחה‬
‫קורא‬
‫השאלה‬
‫ספר‬
‫מס'‬
‫שם‬
‫תאריך החזרה‬
‫‪ ‬ב "קבוצה" במובן המתמטי אין משמעות לשתי דברים זהים‪ .‬לדוגמה‪:‬‬
‫‪ {1, 4, 7} ‬הינה קבוצה של שלושה מספרים‬
‫‪ {1, 4, 7, 1} ‬הינה אותה קבוצה של שלושה מספרים כי כפילויות לא נחשבות‬
‫‪ ‬קבוצת קשרים הינה קבוצה במובן המתמטי‬
‫‪ ‬לכן‪ ,‬קשר בין אותם ישויות לא יכול להופיע בקבוצה פעמיים‬
‫‪ ‬בדוגמה עם קבוצת הקשרים השאלה‪:‬‬
‫‪ ‬אם בספריה מסוימת נהוג שקורא לא יכול לשאול אותו ספר יותר‬
‫מפעם אחת (לפחות בתקופה שעבורה אנחנו שומרים נתונים)‪ ,‬אז ה‬
‫‪ ERD‬שלנו בסדר‪ ,‬אבל‬
‫‪ ‬אם קורא יכול לשאול אותו ספר יותר מפעם אחת‪ ,‬אז קבוצת‬
‫הקשרים השאלה לא יביע את המצב האמתי באופן נכון‬
‫‪12‬‬
ER (Entity-Relationship) Diagram
13
‫קשר רבים לרבים‬
‫מס'‬
‫ת‪.‬ז‪.‬‬
‫קורס‬
‫מרצה‬
‫לימד‬
‫שם‬
‫‪14‬‬
‫שם משפחה‬
‫קורס‬
‫לימד‬
‫מרצה‬
‫מס'‬
‫קשר יחיד לרבים‬
‫קורס‬
‫שם‬
‫לימד‬
‫ת‪.‬ז‪.‬‬
‫מרצה‬
‫שם משפחה‬
‫מרצה‬
‫לימד‬
‫קורס‬
‫‪ ‬משמעות האילוץ‪ :‬כל ישות של קורס יכול להיות בקשר עם‬
‫לכל היותר ישות אחת של מרצה‬
‫‪15‬‬
‫קשר יחיד ליחיד‬
‫מס'‬
‫ת‪.‬ז‪.‬‬
‫קורס‬
‫מרצה‬
‫לימד‬
‫שם‬
‫‪16‬‬
‫שם משפחה‬
‫קורס‬
‫לימד‬
‫מרצה‬
‫קשר רקורסיבי‬
‫תפקיד של ישות בקשר‬
‫מנהל פרויקט‬
‫מנהל‬
‫‪ ‬למה צריך לציין תפקיד?‬
‫עובד‬
‫שכיר‬
‫ת‪.‬ז‪.‬‬
‫שם‬
‫כתובת‬
‫‪ ‬אם קיים קשר בין שתי ישויות או יותר‪ ,‬אז לכל ישות יש תפקיד בקשר‬
‫‪‬‬
‫למשל‪ :‬בקשר הרשמה שבין סטודנט לקורס התפקיד של הסטודנט הוא‬
‫להירשם והתפקיד של הקורס הוא שאליו נרשמים‬
‫‪ ‬בקשר לא רקורסיבי ברור משם קבוצת הקשרים ושמות קבוצות‬
‫הישויות מה הוא התפקיד של כל ישות בקשר‬
‫‪ ‬אבל בקשר רקורסיבי לא ברור משמות אלו מה הוא התפקיד של כל‬
‫ישות בקשר‪.‬‬
‫‪17‬‬
‫קשר רקורסיבי יחיד לרבים‬
‫‪ ‬לכיוון איזה תפקיד צריך להיות החץ?‬
‫אבא‬
‫אבא של‬
‫ילד‬
‫בן אדם‬
‫שם‬
‫גיל‬
‫‪18‬‬
‫ת‪.‬ז‪.‬‬
‫בחירת סוג הקשר‬
‫‪ ‬בחירת סוג הקשר (יחיד לרבים או רבים לרבים) תלוי בחוקי‬
‫הארגון שעבורו מעצבים בסיס הנתונים‬
‫‪ ‬למשל‪ :‬איזה סוג קשר יש בין מרצים לקורסים?‬
‫‪ ‬תלוי אם יכולים להיות כמה מרצים באותו קורס (כגון כמה קבוצות)‬
‫‪19‬‬
‫קשר משולש‬
‫‪ ‬נתבונן בתכנון ‪ ERD‬עבור הדוגמה הבאה‪:‬‬
‫‪ ‬ייתכנו כמה מתרגלים בקורס‬
‫‪ ‬בכל קורס שסטודנט לומד‪ ,‬הוא נותן ציון לכל מתרגל‬
‫מס'‬
‫שם משפחה‬
‫קורס‬
‫שם‬
‫‪20‬‬
‫מתרגל‬
‫תרגול‬
‫ת‪.‬ז‪.‬‬
‫סטודנט‬
‫ת‪.‬ז‪.‬‬
‫שם משפחה‬
‫ציון למתרגל‬
‫קשר משולש עם אילוץ‬
‫‪ ‬נתבונן בתכנון ‪ ERD‬עבור הדוגמה הבאה‪:‬‬
‫‪ ‬יש לכל היותר מתרגל אחד בקורס‬
‫‪ ‬בכל קורס שסטודנט לומד‪ ,‬הוא נותן ציון למתרגל‬
‫מס'‬
‫שם משפחה‬
‫קורס‬
‫שם‬
‫מתרגל‬
‫ת‪.‬ז‪.‬‬
‫תרגול‬
‫סטודנט‬
‫ת‪.‬ז‪.‬‬
‫שם משפחה‬
‫ציון למתרגל‬
‫‪ ‬משמעות הקשר‪ :‬בהינתן סטודנט וקורס מסוימים‪ ,‬יש קשר עם רק‬
‫מתרגל אחד לכל היותר‬
‫‪21‬‬
‫קשר משולש עם רקורסיה‬
‫‪ ‬נתבונן בתכנון ‪ ERD‬עבור דוגמה הבאה‪:‬‬
‫‪ ‬ייתכן כמה מתרגלים בקורס‬
‫‪ ‬בכל קורס שסטודנט לומד‪ ,‬הוא נותן ציון לכל מתרגל‬
‫‪ ‬מתרגלים הם גם סטודנטים‬
‫סטודנט‬
‫מס'‬
‫ת‪.‬ז‪.‬‬
‫קורס‬
‫תרגול‬
‫סטודנט‬
‫שם משפחה‬
‫שם‬
‫מתרגל‬
‫ציון למתרגל‬
‫שימו לב שצריך לציין תפקידים!‬
‫‪22‬‬
‫שיקול צורך לקשר נוסף‬
‫‪ ‬האם אנחנו צריכים להוסיף קשר בין קורס למתרגל?‬
‫מס'‬
‫שם משפחה‬
‫מתרגל‬
‫ת‪.‬ז‪.‬‬
‫קשר‬
‫נוסף‬
‫קורס‬
‫שם‬
‫תרגול‬
‫סטודנט‬
‫ת‪.‬ז‪.‬‬
‫שם משפחה‬
‫ציון למתרגל‬
‫‪ ‬תלוי!‬
‫‪ ‬אם המתרגל יכול להיות קשור לקורס רק דרך הוראה לסטודנטים‬
‫הרשומים לקורס‪ ,‬אז לא‪.‬‬
‫‪ ‬אבל אם‪ ,‬לדוגמה‪ ,‬רוצים לשמור רשימת מתרגלים המעוניינים ללמד‬
‫קורס מסוים‪ ,‬אז כן‪.‬‬
‫‪23‬‬
‫קשר מיוחד‪ISA :‬‬
‫‪ ‬לפעמים יש ישויות בקבוצה עם אטריבוטים מיוחדים‬
‫‪ ‬דוגמה‪ :‬בין חברי סגל יש אלו המתמקדים במחקר ויש להם‬
‫אטריבוט "תחום מחקר"‬
‫‪ ‬קשר ‪ ISA‬מיועד להבעת מצבים כאלו‬
‫תאריך התחלה‬
‫שם‬
‫ת‪.‬ז‪.‬‬
‫חבר סגל‬
‫‪isa‬‬
‫מרצה‬
‫‪24‬‬
‫‪isa‬‬
‫חוקר‬
‫תחום המחקר‬
‫קשר משולש עם רקורסיה‬
‫‪ ‬נחזור לתכנון ‪ ERD‬עבור הדוגמה‪:‬‬
‫‪ ‬ייתכן כמה מתרגלים בקורס‬
‫‪ ‬בכל קורס שסטודנט לומד‪ ,‬הוא נותן ציון לכל מתרגל‬
‫‪ ‬מתרגלים נבחרים מתוך סטודנטים‬
‫סטודנט‬
‫מס'‬
‫ת‪.‬ז‪.‬‬
‫קורס‬
‫תרגול‬
‫סטודנט‬
‫שם משפחה‬
‫שם‬
‫מתרגל‬
‫ציון למתרגל‬
‫מה אם למתרגל יש אטריבוטים שאין אותם לסטודנט רגיל?‬
‫‪25‬‬
‫קשר משולש עם רקורסיה ו‪ISA-‬‬
‫‪ ‬תכנון ‪ ERD‬עבור הדוגמה‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ייתכן כמה מתרגלים בקורס‬
‫בכל קורס שסטודנט לומד‪ ,‬הוא נותן ציון לכל מתרגל‬
‫מתרגלים נבחרים מתוך סטודנטים‬
‫עבור כל מתרגל נשמר מספר שנות ניסיון‬
‫שנות ניסיון‬
‫מתרגל‬
‫מס'‬
‫קורס‬
‫תרגול‬
‫שם משפחה‬
‫שם‬
‫ציון למתרגל‬
‫‪26‬‬
‫סטודנט‬
‫ת‪.‬ז‪.‬‬
‫תבנית בשביל תרגיל‬
‫ישויות‬
‫ישויות‬
‫חלשות‬
‫קשרים‬
‫קשרים‬
‫חלשים‬
‫‪ISA‬‬
‫‪27‬‬