Download presentation
1
2. תרשימי ER שקפים: אלדר פישר עריכה ותוספות: אמיר שפילקה
מערכות מסדי נתונים 2. תרשימי ER שקפים: אלדר פישר עריכה ותוספות: אמיר שפילקה
2
מודל ER (ישות-קשר) מודל ER (ישות-קשר ─ Entity-Relationship) מאפשר לנו לייצג באופן ויזואלי (ע"י דיאגרמה) את הבנתנו של המציאות כפי שעולה מניתוח הדרישות של המערכת, ז"א את סוגי האובייקטים שנרצה לשמור לגביהם מידע ואת טיב הקשרים ביניהם. תרשים ER (ERD – Entity-Relationship-Diagram) מאפשר להגדיר סכימה לארגון הנתונים ולפירוקם לטבלאות, ומשמש מתווך טוב בין רמת תכנון זו לבין המציאות כפי שאנו תופסים אותה. מצד שני, לא כל המידע הדרוש לנו נמצא בתרשימים אלו. למשל, אין פירוט של תחומי הערכים האפשריים של תכונות האובייקטים, ואין דרך סטנדרטית לציין מגבלות מיוחדות על האובייקטים הקיימים במערכת. קיימות מספר גישות לאופן השרטוט של תרשימי ER, אולם העקרונות הלוגים המנחים משותפים לכולן.
3
תכונה (Attribute) יחידת המידע הבסיסית ביותר. בייצוג קבוצת כל הישויות מטיפוס נתון כטבלא, כל תכונה תתאים לעמודה בטבלא. במושגים של מערכת הקבצים: בכל רשומה המתאימה לישות מטיפוס נתון, יהיה שדה עבור כל תכונה של הטיפוס. סימון: אליפסה ובתוכה שם התכונה. בתרשים ER כל אליפסה מייצגת תכונה אחרת, ולכן אין להשתמש באותו שם פעמיים באותו תרשים. שם ת. לידה
4
טיפוס ישות (Entity type)
טיפוס ישות הוא קבוצה של תכונות, שיחדיו נותנות את התיאור המלא של האובייקטים מהטיפוס הזה המאוחסנים במסד הנתונים. האובייקטים עצמם נקראים ישויות. בייצוג ע"י טבלא, טיפוס הישות יתאר את שמות עמודות הטבלא, וכל ישות במסד הנתונים תיוצג ע"י שורה בטבלא. במושגים של מערכות קבצים, ישות תיוצג (בד"כ) ע"י רשומה בקובץ המתאים. מכיוון שהתכונות של טיפוס הישות נותנות תיאור מלא של הישויות, לא נרשה כפילויות (שורות זהות) בטבלא.
5
טיפוס ישות ─ סימון בתרשים ER טיפוס ישות יסומן ע"י מלבן ובתוכו שם הטיפוס; התכונות המתאימות ייוצגו ע"י אליפסות המחוברות למלבן זה. כל תכונה בתרשים מחוברת לטיפוס ישות אחד או לטיפוס יחס (ראו בהמשך) אחד בדיוק. קבוצת התכונות עם קו תחתי מתחת לשמן מהוות את המפתח ─ לא נרשה את קיומן של שתי ישויות מאותו טיפוס שלהן ערכים זהים בכל התכונות הנ"ל. בתרשים ER כל מלבן מייצג טיפוס אחר, ולכן אין להשתמש יותר מפעם אחת בתרשים בכל שם. במקומות רבים טיפוס ישות נקרא "קבוצת ישויות", או בפשטות "ישות"; המינוח כאן הוא לפי הספר של Elmasri+Navathe. שחקן קולנוע תמונה ת. לידה שם
6
תכונות מובנות ורב ערכיות
אפשר גם לציין תכונות עם סוגי ערכים מורכבים יותר. תכונה מובנית: תכונה המקבלת את ערכיה מערכים של תתי תכונות. סימון: תתי התכונות המרכיבים את התכונה המורכבת יחוברו אליה. תכונה רב ערכית: מקבלת קבוצה של ערכים עבור האובייקט המתאים. סימון: אליפסה כפולה כאן מאפשרים לאחסן מספר תמונות לכל שחקן. תאריך שנה חודש יום שחקן קולנוע תמונה ת. לידה שם
7
טיפוס קשר (Relation type)
טיפוס קשר (או טיפוס יחס) מקשר בין שני טיפוסים או יותר של ישויות. בצורתו הכללית, לכל קומבינציה של ישות אחת מכל טיפוס ישות המקושר ע"י טיפוס הקשר, יתכן ויהיה בין אוביקטים אלו יחס מהטיפוס הקשר הנ"ל, ויתכן שלא יהיה קשר כזה. סימון: מעוין ובתוכו שם הקשר, מחובר לטיפוסי הישות המתאימים. יתכנו שחקנים עם יותר מסרט אחד, או סרטים עם יותר משחקן אחד. יתכנו גם סרטים ללא שחקנים (למשל סרטי אנימציה), או שחקנים ללא סרטים. שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט שיחק
8
טיפוס קשר עם תכונות ניתן גם לקשר תכונות באופן ישיר לטיפוסי קשר.
תכונות כאלו נקראות גם תכונות יחס. במקרה זה, לכל קומבינציה של ישות מכל טיפוס ישות שעבורה יש יחס מטיפוס הקשר, מוצמדים ליחס זה ערכים מהתכונות המקושרות. בדוגמה כאן לכל שחקן ולכל סרט בו שיחק, נדע באיזה תפקיד (יחיד) שיחק השחקן בסרט. ברמת תכנון המסד, נייצג יחס זה ע"י טבלא שעמודותיה מתאימות לתכונות המפתח של טיפוסי הישות המשתתפים, בנוסף לתכונות טיפוס הקשר עצמו. שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט שיחק תפקיד
9
טיפוס קשר עם תכונות מפתח
מה התוצאה של תוספת תכונה לקשר שהיא חלק מהמפתח? במקרה כזה יתכנו מספר יחסים עבור אותו זוג של ישויות, אם הם נבדלים ביניהם בערכים על תכונת מפתח של הקשר. בדוגמא כאן, כל שחקן יכול עתה להופיע באותו סרט במספר תפקידים. שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט שיחק תפקיד
10
השתתפות מלאה לפעמים עבור טיפוס ישות המחוברת לטיפוס קשר נתון, נדרוש שכל ישות מטיפוס הישות תשתתף בלפחות יחס אחד מטיפוס הקשר. סימון: קו כפול בחיבור של טיפוס הישות לטיפוס הקשר. בדוגמה כאן נחשיב רק שחקני קולנוע ששיחקו (בתפקיד כל שהוא) בסרט אחד לפחות. שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט שיחק תפקיד
11
חד ערכיות לפעמים נדרוש חד ערכיות עבור טיפוס ישות וטיפוס קשר המחובר אליו. במקרה זה, לא יתכנו שני יחסים מטיפוס הקשר הנידון שנבדלים ביניהם רק בישות אחת מטיפוס המחובר באופן חד ערכי (עם או בלי הבדלים בתכונות הקשר שאינן חלק ממפתח). סימון: חץ בחיבור של טיפוס הקשר לטיפוס הישות. בדוגמה כאן לכל סרט יתכן כוכב אחד בלבד (ובאחד התפקידים); יתכנו גם סרטים ללא כוכבים כלל. שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט כוכב תפקיד
12
קשר בין שלוש ישויות ─ דוגמה
פרס שם הפרס סרט ז'אנר שנה שם הסרט הוענק סכום כסף תאריך אפשר לשמור במאגר כאן רק פרס שהוענק לפחות פעם אחת לסרט כל שהוא בתאריך כל שהוא. לא יתכן שאותו פרס יוענק לאותו סרט בשני תאריכים שונים, או שאותו פרס יוענק באותו תאריך לשני סרטים שונים.
13
תפקידים (Roles) יתכנו מקרים שבהם טיפוס קשר יקושר מספר פעמים לאותו טיפוס ישות. כדי להבדיל בין שני הקישורים אפשר לציין תפקידים על הקשתות. החץ על הקשת עם התפקיד "מקור" מציין שלכל סרט יכול להיות לכל היותר סרט מקור אחד. סרט ז'אנר שנה שם הסרט המשך המשך מקור
14
הקבצה (Aggregation) הקבצה מאפשרת להשתמש בטיפוס קשר כאילו הוא היה טיפוס ישות. תכונות ההקבצה הן כל תכונות הטיפוסים המשתתפים (הקשר והישויות). לכל קומבינציה של ישויות המקושרות ע"י הקשר, תהיה ישות אחת בהקבצה. ברמת המימוש לא צריך לתחזק טבלא עבור ההקבצה עצמה ─ היא תוסק מהטבלאות עבור הטיפוסים המרכיבים אותה. שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט שיחק תפקיד פרס שם הפרס הוענק
15
ישויות חלשות, קשר ISA טיפוס ישות חלש הוא טיפוס היורש את קבוצת התכונות של טיפוס ישות אחר, המחובר אליו ביחס המיוחד ISA. יתכנו תכונות נוספות המחוברות לטיפוס החלש, ושאינן שייכות לטיפוס הישות החזק המחובר אליו. עבור כל ישות מהטיפוס החלש תהיה קיימת ישות מהטיפוס המחובר אליו, שערכי תכונותיה הן ה"צמצום" המתאים. מצד שני יתכן בחלק מהמקרים (ראו בהמשך) מצב שבו לא לכל ישות מהטיפוס המחובר קיימת ישות מהטיפוס החלש. אם מוסיפים תכונות מפתח לטיפוס הישות החלש, אז בחלק מהמקרים יתכנו גם מספר ישויות מהטיפוס החלש המתאימות לישות אחת מהטיפוס החזק.
16
הפרדה (Specialization)
טיפוס הישות החלש יסומן במלבן כפול, וטיפוס קשר ה-ISA יסומן במשולש. סרט ז'אנר שנה שם הסרט ISA סרט מדובב שפה אחראי דיבוב יתכנו מספר גרסאות מדובבות (לשפות שונות) של אותו סרט. שחקן קולנוע תמונה ת. לידה שם ISA שחקן אופי אופי כל שחקן קולנוע יכול להיות גם שחקן אופי (עם אופי יחיד). ברמת הטבלאות לא מתחזקים טבלא עבור קשר ה-ISA, כי ניתן להסיק אותה מתוך הטבלא עבור טיפוס הישות החלש.
17
זיהוי, הכללה הכללה (Generalization) ─ מספר טיפוסי ישות חלשים, ה"חולקים" ביניהם את הישויות בטיפוס משותף המחובר אליהם (כל ישות מהטיפוס המשותף תופיע בטיפוס חלש אחד בדיוק). סימון: קווים עבים, משולש אחד משותף. זיהוי הוא טיפוס ישות חלש שמכיל ישות אחת בדיוק עבור כל ישות בטיפוס המחובר אליו. סימון: חיבור בקווים עבים. סרט ז'אנר שנה שם הסרט ISA סרט תיעודי סרט עלילתי סרט ז'אנר שנה שם הסרט ID סרט פילם פורמט
18
ירושה של מפתחות בלבד כאשר סימן הקשר הוא משולש כפול, הטבלא של טיפוס הישות החלש תירש רק את תכונות המפתח של טיפוס הישות המחובר. שחקן קולנוע תמונה ת. לידה שם ISA שחקן דיבוב הקלטה ניתן להשתמש גם עם סימן הקשר הזה בכל הסימונים הקשורים בישויות חלשות.
19
הערה על סימונים אחרים בספרות
בחלק מספרות הקורס נהוג סימון שונה, שבו תכונות מפתח מסומנות ללא קו תחתי, ותכונות שאינן מפתח מחוברות בחץ לטיפוס המתאים. לפעמים משתמשים גם בסימון מעורב, שבו משתמשים בקווים תחתיים עבור טיפוסי ישות, וחיצים עבור טיפוסי קשר. אנו נשתמש כאן אך ורק בקונוונציה של סימון בקווים תחתיים. שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט שיחק תפקיד שחקן קולנוע תמונה ת. לידה שם סרט ז'אנר שנה שם הסרט שיחק תפקיד
20
דוגמה מסכמת נראה תרשים ER עבור מפעיל רכבות: Arrives Platform A_Time
D_Time Station Height S_Name S_Type Train T_Num Days Serves Km Service Gives Food Class T_Category Line Direction L_Num L_Type
21
אלו טבלאות יתקבלו מהתרשים ?
אלו עמודות יהיו בטבלא עבור טיפוס היחס Serves ? המפתח S_Name (של טיפוס הישות Station) תכונות המפתח Direction, L_Num (של Line) שלושת העמודות הנ"ל ישמשו כמפתח של Serves. בנוסף תהיה עמודה עבור תכונת היחס, Km. אלו עמודות יהיו בטבלא עבור טיפוס היחס Arrives ? המפתח T_Num של טיפוס הישות Train. תכונות המפתח של היחס (המקובץ) Serves ─ אלו הם Direction, L_Num, S_Name. שלושת התכונות של טיפוס היחס Arrives בעצמו ─ Platform, D_Time, A_Time.
22
שפת ODL (תילמד בקריאה עצמית)
השפה ODL (Object Definition Language) היא שפת הגדרת נתונים (DDL) שיכולה לשמש מסדי נתונים רלציונים ומסדי נתונים מבוססי עצמים. כמו תרשימי ER, גם ביטויי ODL ניתנים לתרגום לסכימות רלציוניות. ניתן לתרגם תרשים ER לביטוי ODL ולהיפך, אולם התרגום לא תמיד יהיה "טבעי", ויהיה איבוד של מידע. המבנה של ביטוי ODL מזכיר מבנה של שפות מבוססות עצמים, כגון C++.
23
ODL ─ קווים כללים עבור כל טיפוס ישות תיכתב ב-ODL הגדרה של מחלקה (class) מתאימה. התכונות יוגדרו בתוך הגדרת המחלקה. קשרים (דו צדדיים וחסרי תכונות בלבד) יוגדרו כחלק מהגדרת המחלקות המתאימות ─ עבור טיפוס קשר יהיו הגדרות מתאימות במחלקות משני "צדדיו". מבנים מרוכבים פרט לקבוצות (למשל ─ רבי קבוצות, סדרות) גם ניתנים להגדרה באופן טבעי ב-ODL. הדבר נכון גם לגבי תכונות (לדוגמא ─ נתונים של סטודנטים שיש להם מספר כתובות, לפי סדר עדיפות) וגם לגבי קשרים (למשל, ניתן ב-ODL לאפשר ריבוי ביחס "סטודנט-לקח-קורס", על מנת לציין קורס שנלקח מספר פעמים ע"י אותו סטודנט).
24
ODL ─ חומר קריאה חומר הקריאה על שפת הגדרת המידע ODL, ועל שפת השאילתות הנלווית לה OQL, נמצא בצורת שקפים באתר הקורס, וכן בספר: J.D. Ullman and J. Widom, A First Course in Database Systems בהצלחה !
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.