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