Presentation is loading. Please wait.

Presentation is loading. Please wait.

Databases: An Introduction

Similar presentations


Presentation on theme: "Databases: An Introduction"— Presentation transcript:

1 Databases: An Introduction
מסדי נתונים: הקדמה Databases: An Introduction  השקפים מבוססים על הרצאות של פרופ' יהושע שגיב, האוניברסיטה העברית

2 מושגי יסוד מסד נתונים מערכת לניהול מסדי נתונים

3 מהו מסד נתונים? מסד נתונים הנו אוסף של נתונים שמנוהל בעזרת כלי תוכנה הנקראים מערכת לניהול מסדי נתונים, ובאנגלית Database Management System (DBMS) בעבר הרחוק כלי תוכנה אלה היו לא יותר מאשר מערכת קבצים משופרת כיום הכלים הרבה יותר משוכללים

4 מדוע אי אפשר להסתפק במערכת קבצים?

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

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

7 B-trees the most successful family of index schemes (B-trees, B+-trees, B*-trees) balanced “n-way” search trees

8 B-trees Eg., B-tree of order 3: 1 3 6 7 9 13 <6 >6 <9 >9

9 B - tree properties: v1 v2 … vn-1 p1 pn
each node, in a B-tree of order n: Key order at most n pointers at least pointers (except root) all leaves at the same level if number of pointers is k, then node has exactly k-1 keys v1 v2 vn-1 p1 pn

10 Properties “block aware” nodes: each node -> disk page
O(log (N)) for everything! (ins/del/search) typically, if m = , then levels utilization >= 50%, guaranteed; on average 69%

11 Queries Algo for exact match query? (eg., ssn=8?) 1 3 6 7 9 13 <6
>6 <9 >9

12 Queries Algo for exact match query? (eg., ssn=8?) 6 9 <6 >9
>6 <9 1 3 7 13

13 Queries Algo for exact match query? (eg., ssn=8?) 6 9 <6 >9
>6 <9 1 3 7 13

14 Queries Algo for exact match query? (eg., ssn=8?) 6 9 <6 >9
>6 <9 1 3 7 13

15 Queries Algo for exact match query? (eg., ssn=8?) 6 9 <6
H steps (= disk accesses) >9 >6 <9 1 3 7 13

16 Queries what about range queries? (eg., 5<salary<8)
Proximity/ nearest neighbor searches? (eg., salary ~ 8 )

17 Queries what about range queries? (eg., 5<salary<8)
Proximity/ nearest neighbor searches? (eg., salary ~ 8 ) 1 3 6 7 9 13 <6 >6 <9 >9

18 Queries what about range queries? (eg., 5<salary<8)
Proximity/ nearest neighbor searches? (eg., salary ~ 8 ) 1 3 6 7 9 13 <6 >6 <9 >9

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

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

21 קצת היסטוריה מחשבים הומצאו מתוך צורך לבצע חישובים מדעיים והנדסיים
אבל הדחיפה הגדולה בשנות החמישים והשישים לפיתוח ולהרחבת השימוש במחשבים נבעה מהצורך לעבד כמויות גדלות והולכות של נתונים כך גם בשנות השמונים – הדחיפה הגדולה ל-PC נבעה מאפליקציות של משרד ממוחשב, כולל עיבוד נתונים (spreadsheets)

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

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

24 מה כולל DBMS סיכום ביניים:

25 התמונה הכללית מסד נתונים – אוסף נתונים בעלי מבנה פיזי ולוגי DBMS
עוד מסד נתונים DBMS אוסף של כלי תוכנה לעיבוד וניהול הנתונים של מספר מדי נתונים שונים

26 מהו DBMS? מערכת לניהול מסדי נתונים
מערכת תוכנה לבניית מספר מסדי נתונים שונים (נתונים + אפליקציות), שמאפשרת להגדיר בצורה קלה את המבנה של הנתונים מבנה לוגי – מהי משמעות הנתונים? מה הם מיצגים? מבנה פיסי – איך הנתונים מאורגנים בקבצים? לשלוף נתונים בקלות ע"י שפת שאילתות כמו כן, קיימים כלים נוספים לעיבוד נתונים

27 מהו DBMS? (המשך): כלים נוספים מאפשרים
לבצע פעולות בו-זמנית (במקביל) הזמנת מקומות לטיסה ע"י מספר אנשים באותו הזמן לשחזר נתונים במקרה של נפילה לשמור על שלמות הנתונים (data integrity) לא יוזמן אותו מקום ע"י שני אנשים שונים אי אפשר לקחת שני קורסים דומים אין סטודנט ללא מחלקה לשמור על סודיות הנתונים (security) ע"י מתן הרשאות מתאימות (authorization)

28 מודל הנתונים מודל הנתונים הוא אוסף של מושגים שמאפשרים לנו לתאר באופן פורמלי את הנתונים ואת משמעותם (קרי, הסמנטיקה של הנתונים) מבדילים בין מבנה הנתונים לבין הנתונים עצמם סכמה מתארת את מבנה הנתונים - מודל הנתונים מתאר את הסכימה הלוגית, לא הפיזית המודל הנפוץ ביותר הנו המודל היחסי (המודל הרלציוני או Relational Model)

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

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

31 רמות הפשטה Levels of Abstraction
קימות למעשה שלוש רמות של הפשטה סכמה פיסית (Physical Schema) סכמה מושגית (Conceptual Schema) זוהי סכמה לוגית של כל הנתונים מבטים (Views) אלה סכמות לוגיות, שכל אחת מהן מייצגת חלק מהנתונים ונועדה לשרת אפליקציות מסוימות

32 Levels of Abstraction כל מבט (View) מתאר כיצד קבוצת משתמשים מסוימת רואה את הנתונים כלומר, כל אפליקציה נכתבת ביחס למבט מסוים ולא ביחס לסכמה המושגית View 1 View 2 View 3 Conceptual Schema Physical Schema דוגמא: אפליקציה שמדפיסה גליונות ציונים תרוץ מעל מבט (view) שלא כולל נתוני שכר . 6

33 הקשר בין רמות ההפשטה הסכמה הפיסית והסכמה המושגית מוגדרות בעזרת שפה מתאימה, הנקראת Data Definition Language (DDL) המבטים מוגדרים ב- SQL (במודל היחסי) ההגדרות של הרמות השונות כוללות למעשה גם את המיפוי של כל רמה לרמה שמתחתיה

34 מדוע צריך מספר רמות הפשטה ?
כדי להשיג את אי תלות הנתונים (Data Independence) אי תלות הנתונים פירושה ששינויים המבוצעים ברמה אחת לא משפיעים על הרמה שמעליה או מתחתיה (מספיק להגדיר מחדש את המיפוי בין הרמות) הוספת אינדקס אינה מצריכה שינוי שאילתות

35 לסיכום – מערכת לניהול מסדי נתונים מספקת:
לסיכום – מערכת לניהול מסדי נתונים מספקת: מודל נתונים שכולל שלוש רמות הפשטה שפת שאילתות וכלים נוספים לשליפת ועיבוד נתונים אפשרות לבצע פעולות ("עסקות") בו-זמנית גיבוי והתאוששות (backup & recovery) שלמות הנתונים (data integrity) אבטחת מידע (data security) והרשאות (authorization) רמת ההפשטה של המבטים (views) מאפשרת לבצע הרשאות

36 יחס הנו למעשה טבלה נוח לייצג נתונים בטבלה
לדוגמה, הטבלה הבאה מכילה נתונים לגבי מספר סטודנט, שם סטודנט ושנה שורה בטבלה נקראת רשומה year sname sid 3 white 240 jones 202 1 adams 450 שם של עמודה נקרא אטריביוט

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

38 היבט פורמלי (מתמטי) רשומה הנה למעשה n-יה של ערכים
(240,white,3) ≠ (white,240,3) אבל ביחסים יש שמות לעמודות ולכן הרשומות הבאות שוות זו לזו year sid sname 3 240 white year sname sid 3 white 240 =

39 הערה יש מקרים בהם אין שמות לעמודות ואז ההיבט המתמטי הוא הקובע, כלומר סדר העמודות הנו חשוב

40 הסכמה של יחס (או של רשומה)
year sname sid 3 white 240 jones 202 1 adams 450 הסכמה של יחס (או של רשומה) קבוצת האטריביוטים (שמות העמודות) של יחס נקראת סכמה הסכמה של היחס הקודם היא {sid, sname, year} סכמה היא קבוצה, כי הסדר של העמודות אינו חשוב ואין שתי עמודות עם אותו שם הסכמה מייצגת את המבנה של הטבלה

41 יחס הנו קבוצה סופית של רשומות
פורמלית יחס הנו קבוצה סופית של רשומות לכל הרשומות ביחס יש אותם אטריביוטים במיוחד, לכל הרשומות ביחס יש אותו מספר עמודות מעשית יחס הוא לא תמיד קבוצה, כי אותה רשומה יכולה להופיע מספר פעמים (כפי שיוסבר לגבי שפת השאילתות SQL) באלגברת היחסים, יחס הוא תמיד קבוצה

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

43 מבוא לתכנון סכמות: מודל הישויות והקשרים
An Introduction to Schema Design: The Entity-Relationship Model

44 מהו תכנון סכמה של מסד נתונים?
סכמה של מסד נתונים = מבנה נתונים במודל היחסי צריך לקבוע את הסכמות (קרי, קבוצות האטריביוטים) של היחסים בהם משתמשים במודל מונחה עצמים צריך לקבוע את המחלקות (classes) ואת הקשרים ביניהן, קרי ISA Hierarchy (Inheritance Hierarchy) Aggregation (or Composition) Hierarchy

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

46 דוגמה – מסד עם שלושה יחסים
S R T course sid tid os 202 20 calculus 450 10 db 240 year sname sid 3 white 240 jones 202 1 adams 450 dept tname tid math cohen 10 cs levy 20 הסכמה של המסד מורכבת מהסכמות של שלושת היחסים: {tid,sid,course} {sid,sname,year} {tid,tname,dept}

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

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

49 מודל הישות והקשרים Entity-Relationship Model
מודל הישויות והקשרים הנו מודל פורמלי לתיאור העולם הממשי, שמקורו בתחום מסדי הנתונים מודל הישויות והקשרים משמש כמודל פורמלי לתיאור העולם הממשי גם בתחומים אחרים בינה מלאכותית תכנון מערכות תוכנה מונחות עצמים

50 הערות כיום עוברים למודל עשיר יותר, שנקרא UML (Universal Modeling Language) תכנון סכמה של מסד נתונים יחסי יכול להתבצע בשני שלבים ייצוג העולם הממשי בעזרת מודל הישויות והקשרים תרגום הייצוג הנ"ל למודל היחסי אפשרות אחרת היא להתחיל ישירות במודל היחסי

51 מבט כולל על מודל הישויות והקשרים
מבט כולל על מודל הישויות והקשרים העולם מורכב מישויות ומקשרים בין הישויות דוגמה לישויות: - סטודנטים - קורסים - מרצים - חוגי לימוד דוגמה לקשרים: - קשר בין קורסים לסטודנטים - קשר בין קורסים למרצים - קשר בין קורסים לחוגי לימוד

52 ישות וקבוצת ישויות Entity and Entity Set
ישות היא דבר שקיים בעולם ושיש לו תכונות לדוגמה, סטודנט הוא ישות בעלת התכונות שם, כתובת, תאריך לידה, שם האב, מספר זהות וכד' כל ישות ניתנת לזיהוי באופן אחד ויחיד בהינתן ערכים עבור תכונה או תכונות מסוימות, לדוגמה סטודנט מזוהה ע"י שם, תאריך לידה ושם האב עדיף לזהות סטודנט ע"י מס' זהות (או מס' סטודנט) כל הישויות מאותו סוג נמצאות בקבוצת ישויות אחת לדוגמה, קבוצת הישויות של הסטודנטים

53 ישות וקבוצת ישויות Entity and Entity Set
האם חוג לימודים הוא תכונה של סטודנט או ישות בפני עצמה? ישות וקבוצת ישויות Entity and Entity Set ישות היא דבר שקיים בעולם ושיש לו תכונות לדוגמה, סטודנט הוא ישות בעלת התכונות שם, כתובת, תאריך לידה, שם האב, מספר זהות וכד' כל ישות ניתנת לזיהוי באופן אחד ויחיד בהינתן ערכים עבור תכונה או תכונות מסוימות, לדוגמה סטודנט מזוהה ע"י שם, תאריך לידה ושם האב עדיף לזהות סטודנט ע"י מס' זהות (או מס' סטודנט) כל הישויות מאותו סוג נמצאות בקבוצת ישויות אחת לדוגמה, קבוצת הישויות של הסטודנטים

54 ייצוג ישויות ע"י רשומות ניתן לייצג ישות ע"י רשומה, לדוגמה ישות: סטודנט
שם: "יוסף לוי" כתובת: "שדרות הרצל 107 ירושלים" תאריך לידה: "7.8.78" שם האב: "יעקב" מספר זהות: " " ייצוג: (יוסף לוי, שדרות הרצל 107 ירושלים, , יעקב, )

55 ייצוג ישויות ע"י רשומות קבוצת כל הישויות מאותו הסוג היא למעשה יחס
ניתן לייצג ישות ע"י רשומה, לדוגמה ישות: סטודנט שם: "יוסף לוי" כתובת: "שדרות הרצל 107 ירושלים" תאריך לידה: "7.8.78" שם האב: "יעקב" מספר זהות: " " ייצוג: (יוסף לוי, שדרות הרצל 107 ירושלים, , יעקב, )

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

57 קשר וקבוצת קשרים Relationship & Relationship Set
בין מספר כלשהו של ישויות יכול להתקיים קשר, לדוגמה הסטודנט "משה כהן" לוקח את הקורס "מערכות מולטימדיה" שמלמד המרצה "עפר הדר" זהו קשר משולש, קרי בין שלוש ישויות דוגמה לקשרים בינאריים: הסטודנט "משה כהן" לוקח את הקורס "מערכות מולטימדיה" המרצה "עפר הדר" מלמד את הקורס "מערכות מולטימדיה" כל הקשרים מאותו סוג נמצאים בקבוצה אחת

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

59 ייצוג קשרים ע"י רשומות ניתן לייצג קשר ע"י רשומה, לדוגמה
הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות מולטימדיה" שמלמד המרצה "עפר הדר" הייצוג: (משה כהן, מולטימדיה, עפר הדר) הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות מולטימדיה" הייצוג: (משה כהן, מערכות מולטימדיה) הקשר: המרצה "עפר הדר" מלמד את הקורס "מערכות מולטימדיה" הייצוג: (עפר הדר, מערכות מולטימדיה)

60 ייצוג קשרים ע"י רשומות קבוצת כל הקשרים מאותו הסוג היא למעשה יחס
ניתן לייצג קשר ע"י רשומה, לדוגמה הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות מולטימדיה" שמלמד המרצה "עפר הדר" הייצוג: (משה כהן, מולטימדיה, עפר הדר) הקשר: הסטודנט "משה כהן" לוקח את הקורס "מערכות מולטימדיה" הייצוג: (משה כהן, מערכות מולטימדיה) הקשר: המרצה "עפר הדר" מלמד את הקורס "מערכות מולטימדיה" הייצוג: (עפר הדר, מערכות מולטימדיה)

61 מעבר ממודל הישויות והקשרים למודל היחסי
כפי שראינו ניתן לייצג כל קבוצת ישויות וכל קבוצת קשרים ע"י יחס מתאים

62 הערה לגבי מינוח תכונה של ישות נקראת אטריביוט
עמודה של יחס נקראת אטריביוט יש כאן שימוש באותו המונח (Attribute) עבור שני מושגים שיש ביניהם דמיון, אבל הם בהחלט שונים זה מזה

63 קשר ה- ISA במודל הישויות והקשרים יש קשר מיוחד הקרוי קשר ה- ISA (is a)
קשר זה מבטא את הירארכית הירושה (Inheritance Hierarchy) הקיימת בין קבוצות של ישויות, לדוגמה קבוצת הישויות של כל הסטודנטים קבוצת הישויות של הסטדונטים לתואר ראשון קבוצת הישויות של הסטודנטים לתואר שני קבוצת הישויות של הסטודנטים שעובדים כעוזרי הוראה

64 במודל היחסי אין ירושה מכיוון שבמודל היחסי אין ירושה, צריך למצוא דרך נאותה לייצג את קשר ה- ISA

65 סיכום ביניים מודל הישויות והקשרים מתאר את העולם בעזרת קבוצות של ישויות וקבוצות של קשרים קשר מיוחד הנו קשר ה- ISA ניתן לתרגם כל קבוצת ישויות וכל קבוצת קשרים ליחס מתאים, לפיכך ניתן לתכנן סכמה של מסד נתונים יחסי ע"י יצירת מודל מתאים של העולם הממשי באמצעות ישויות וקשרים, ותרגום התוצאה למודל היחסי

66 מודל הישויות והקשרים – יותר לעומק
Entity Relational Model

67 המטרה: "התאמת העולם למודל"
Requirement Analysis Conceptual Database Design Logical Database Design Database ERD Relations Objects XML documents

68 מושגי יסוד מודל הישויות והקשרים (Entity Relationship Model)
מאפשר לאפיין את העצמים ב"עולם", את הקשרים בין עצמים ותכונות של עצמים דיאגרמת ישויות קשרים (Entity Relationship Diagram) ייצוג גרפי, בדיאגרמה, של ה"עולם" כפי שהוא על פי מודל הישויות והקשרים

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

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

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

72 בדיאגרמת ERD קבוצת ישויות מיוצגת בעזרת מלבן
כיצד מיוצגת ישות בדיאגרמה? כיצד מיוצג קשר? בדיאגרמת ERD קבוצת ישויות מיוצגת בעזרת מלבן קבוצת קשרים מיוצגת בעזרת מעויין תכונה מיוצגת בעזרת אליפסה אמן יצר את יצר את יצירה אמן שם יצירה מספר קטלוגי שם אמן מס זהות

73 של מי התכונה הזאת? בקורס באוניברסיטה שומרים מידע על סטודנטים ועל תרגילי בית שהסטודנטים הגישו: כיצד נייצג ציוני תרגילים? ציון ? ? ? הגשה תרגיל סטודנט נושא מספר תרגיל שם מס זהות כיצד יבוטא במודל קשר הגשה? האם יתכן שתהיה סטודנטית שלא הגישה אף תרגיל?

74 קבוצת קשרים רקורסיבית מותר שבקשר ישתתפו שתי ישויות (או יותר) מאותו טיפוס במקרה זה מוסיפים לקבוצת הקשרים בחיבור לטיפוסי הישויות את תיאור תפקיד (role) הישות בהשתתפות: מנהל מנוהל מנהל של שם עובד עובד מספר זהות

75 קבוצת קשרים n-רית עד כה ראינו קבוצות קשרים בינאריות
שם מוסד מוסד לימד קורס מרצה שם קורס מספר קטלוגי שם מרצה מס זהות

76 קבוצת קשרים פורמלית קבוצת קשרים תהיה {(e1, …, en) | e1E1, …, enEn}
For E1, …, En entity sets הישויות המשתתפות בקשר השייך לקבוצת קשרים מזהות את הקשר בקבוצה באופן ייחודי

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

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

79 אילוצים (constraints)
מפתח (key) של קבוצת ישויות הוא קבוצה מינימלית של תכונות כך שהערכים בתכונות אלו מזהים באופן ייחודי את המופעים של קבוצת הישויות יתכן שיהיה קיים יותר ממפתח מועמד אחד (candidate key) לטיפוס ישויות אחד מן המפתחות המועמדים נבחר להיות המפתח הראשי (primary key) של קבוצת הישויות המפתח הראשי מסומן על ידי קו תחתי בתכונותיו

80 דוגמא חייל חייל חייל מספר חשבון בנק מספר זהות 1 שם בנק מספר אישי
2 שם בנק מספר אישי מספר חשבון בנק חייל מספר זהות 3 שם בנק מספר אישי

81 אילוצים אילוצי מפתח (key constraints)
אילוץ על השתתפות קבוצת ישויות בקבוצת קשרים כשאין אילוץ, ישות עשויה להשתתף במספר קשרים מקבוצת הקשרים האילוץ מחייב ישות להשתתף בלכל היותר קשר אחד מטיפוס הישויות סימון בעזרת הוספת חץ לכיוון המעויין

82 יחיד לרבים (one-to-many)
יצר את יצירה אמן שם יצירה מספר קטלוגי שם אמן מס זהות - אמן קשור להרבה יצירות - יצירה קשורה לאמן יחיד יצירה יצר אמן

83 רבים לרבים (many-to-many)
שייכת ל יצירה קבוצה שם יצירה מספר קטלוגי תיאור שם קבוצה קבוצה יכולה להכיל כמה יצירות יצירה יכולה להיות קשורה למספר קבוצות יצירה שייכת קבוצה

84 יחיד ליחיד (one-to-one)
נישואין גברים נשים שם מספר זהות שם מס זהות - גבר קשור לאשה יחידה - אשה קשורה לגבר יחיד גברים נישואין נשים

85 אילוצי מפתח ? ? מוכר ? קונה מכונית מספר זהות חברה שנת ייצור מכירה
מודל מס רכב הנחות: מוכר עשוי למכור כמה מכוניות, קונה עשוי לקנות כמה מכוניות, מכונית נמכרת פעם אחת בלבד

86 אילוצי השתתפות אילוצי השתתפות (participation constraints)
אילוץ על השתתפות קבוצת ישויות בקבוצת קשרים כשאין אילוץ, ישות עשויה לא להשתתף באף קשר מקבוצת הקשרים האילוץ מחייב ישות להשתתף בלפחות קשר אחד מטיפוס הישויות סימון בעזרת הדגשת הקו המחבר את המלבן למעויין

87 אילוצי השתתפות יצירה אמן יצר את שם יצירה מספר קטלוגי שם אמן מס זהות
- אמן לא חייב להיות קשור ליצירה - יצירה חייבת להיות קשורה לאמן יצירה יצר אמן

88 השתתפות חלקית והשתתפות מלאה
(total participation) השתתפות חלקית (partial participation) יצר את יצירה אמן ניתן לשלב אילוצי השתתפות עם אילוצי מפתח שם יצירה מספר קטלוגי שם אמן מס זהות

89 מערכת המידע של הגלריה כעת יש לנו את הכלים לייצר דיאגרמת ישויות קשרים לייצוג המידע הנדרש עבור גלריית האמנות חשוב שבמערכת יהיה ייצוג לאילוצים הנדרשים

90 טיפוסי ישויות חלשים טיפוסי ישויות חלשים (weak entity sets) הם טיפוסי ישויות שאין להם מפתח המורכב מהתכונות שלהם בלבד לטיפוס ישויות חלש יש תלות זיהוי (identifying relationship set) בטיפוס ישויות שהוא הבעלים המזהה (identifying owner) של הטיפוס החלש לטיפוס הישויות החלש השתתפות מלאה בתלות הזיהוי סימון טיפוס הישויות החלש בעזרת הדגשת המלבן סימון תלות הזיהוי בעזרת הדגשת המעויין

91 דוגמה פלוגה מחלקה גדוד פלוגה מחלקה מחלקה מהם המפתחות הראשיים של
קבוצות הישויות? פלוגה שייכת ל אות פלוגה מחלקה מספר מחלקה גדוד מספר גדוד פלוגה שייכת ל אות פלוגה מחלקה מספר מחלקה מחלקה מספר מחלקה

92 דוגמאות נוספות ספר קו נסיעה עותק נסיעה מספר קטלוגי מספר קו כותרת
מופע של מספר קטלוגי עותק מספר עותק קו נסיעה מספר קו כותרת ביצוע מספר אוטובוס השאלה נסיעה תאריך שעה

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

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

95 המרת קבוצות ישויות לטבלאות
כל תכונה של קבוצת הישויות מתורגמת לתכונה בטבלה address person name id person (id, name, address) CREATE TABLE person(id CHAR(11), name CHAR(30), address CHAR(40), PRIMARY KEY (id) )

96 המרת קבוצות קשרים לטבלאות
הטבלה עבור קבוצת קשרים מכילה את תכונות המפתחות הראשים של כל קבוצות הישויות שמשתתפות בקבוצת הקשרים, כל מפתח עם אילוץ מפתח זר (foreign key constraint) הטבלה מכילה את התכונות של קבוצת הקשרים עצמה המפתח הראשי נוצר מתכונות המפתח של קבוצות הישויות שמשתתפות בקבוצת הקשרים

97 car person owns address name id model plate since color
owns (id, plate, since) CREATE TABLE owns( id CHAR(11), plate CHAR(10), since DATE, PRIMARY KEY (id, plate), FOREIGN KEY (id) REFERENCES person, FOREIGN KEY (plate) REFERENCES car )

98 בנוסף, נדרש בטבלה car מפתח זר FOREIGN KEY (plate) REFERENCES owns
address car person plate name id model since color owns (id, plate, since) CREATE TABLE owns( id CHAR(11) NOT NULL, plate CHAR(10), since DATE, PRIMARY KEY (plate), FOREIGN KEY (id) REFERENCES person, FOREIGN KEY (plate) REFERENCES car ) בנוסף, נדרש בטבלה car מפתח זר FOREIGN KEY (plate) REFERENCES owns מדוע?

99 מחברים את טבלת קבוצת הקשרים לטבלת קבוצת הישויות,
owns address car person plate name id model since color אפשרות ב', בלא טבלת owns! CREATE TABLE car( model CHAR(20), plate CHAR(10) PRIMARY KEY, color CHAR(10), id CHAR(11) NOT NULL, since DATE NOT NULL, PRIMARY KEY (plate), FOREIGN KEY (id) REFERENCES person ) מחברים את טבלת קבוצת הקשרים לטבלת קבוצת הישויות, מדוע זה ניתן?

100 reference (in_bno, to_bno)
publisher books in title bno reference (in_bno, to_bno) CREATE TABLE reference( in_bno CHAR(20), to_bno CHAR(20), PRIMARY KEY (in_bno, to_bno), FOREIGN KEY (in_bno) REFERENCES books(bno) FOREIGN KEY (to_bno) REFERENCES books(bno) )

101 המרת קבוצת ישויות חלשה המפתח של קבוצת הישויות החלשה כולל את המפתח הראשי של קבוצת הישויות שבה היא תלויה קבוצת הישויות החלשה תמיד משתתפת השתתפות מלאה בתלות הזיהוי ועם אילוץ מפתח יחיד לרבים ישנה "תלות קיום" של קבוצת הישויות החלשה בקבוצת הישויות שבה היא תלויה בתלות הזיהוי

102 copy (bno, cno, limitations) כיצד באה לידי ביטוי תלות הקיום?
exists publisher copies books cno title bno limitations copy (bno, cno, limitations) CREATE TABLE copies( bno CHAR(20), cno INTEGER, limitations CHAR(20), PRIMARY KEY (bno, cno), FOREIGN KEY (bno) REFERENCES books ON DELETE CASCADE ) כיצד באה לידי ביטוי תלות הקיום?

103 מדוע תכנון סכמה של מסד נתונים הוא בעיה קשה?
Why Is It Difficult to Design a Database Schema?

104 הסיבות לקושי מעבר מעולם לא פורמלי למודל פורמלי הגודל של סכמות ירושה
ישות גנרית לעומת ישות פרטיקולרית (פרטנית) אילוצים ערכים חסרים (ערכי NULL) מידע בסכמה או באפליקציות (ב- methods)

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

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

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

108 הגודל של סכמות בקורס תעבדו עם דוגמאות צעצוע (toy examples) שבהן העולם הממשי הוא פשוט ולכן המודל הפורמלי הנו קטן ניתוח מערכת אמיתי לוקח חודשים (אם לא שנים) והתוצאה יכולה להיות דיאגרמה של ישויות וקשרים שתופסת קיר שלם בתהליך ניתוח המערכת צריך "לסחוט" את המידע מהאנשים עבורם מתכננים את מסד הנתונים

109 ירושה בין קבוצות שונות של ישויות מתקיימים קשרי ISA (inheritance), שלא תמיד קל לאפיין אותם קבוצת כל הסטודנטים קבוצת הסטודנטים לתואר ראשון קבוצת הסטודנטים לתואר שני קבוצת הסטודנטים לתואר שלישי קבוצת הסטודנטים המשמשים כעוזרי הוראה (גם תלמיד שנה ג' יכול להיות עוזר הוראה ומקבל תנאי שכר כמו תלמיד לתואר שני המשמש כעוזר הוראה) קבוצת הסטודנטים המשמשים כאסיסטנטים (גם תלמיד לתואר שני יכול להיות אסיסטנט, אבל תנאי השכר כשל עוזר הוראה) קבוצת הסטודנטים שעובדים באוניברסיטה

110 ירושה יש צורך בירושה מרובה (multiple inheritance)
בין קבוצות שונות של ישויות מתקיימים קשרי ISA (inheritance), שלא תמיד קל לאפיין אותם קבוצת כל הסטודנטים קבוצת הסטודנטים לתואר ראשון קבוצת הסטודנטים לתואר שני קבוצת הסטודנטים לתואר שלישי קבוצת הסטודנטים המשמשים כעוזרי הוראה (גם תלמיד שנה ג' יכול להיות עוזר הוראה ומקבל תנאי שכר כמו תלמיד לתואר שני המשמש כעוזר הוראה) קבוצת הסטודנטים המשמשים כאסיסטנטים (גם תלמיד לתואר שני יכול להיות אסיסטנט, אבל תנאי השכר כשל עוזר הוראה) קבוצת הסטודנטים שעובדים באוניברסיטה כאשר יש גם דמיון וגם שוני בין ישויות שונות, לא קל להגדיר בדייקנות את הדמיון ואת השוני

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

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

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

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

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

116 DEPT = ‘CSE’ OR DEPT IS NULL
דוגמה כדי למצוא את כל הסטודנטים של CSE צריך לרשום את התנאי DEPT = ‘CSE’ כדי למצוא את כל הסטודנטים של CSE או שיש אפשרות שהם ב- CSE צריך לרשום את התנאי DEPT = ‘CSE’ OR DEPT IS NULL אין אפשרות לכתוב נוסח אחד ולהפעיל אותו בשני אופנים Mode לקבלת כל התשובות הודאיות Mode לקבלת כל התשובות האפשריות

117 מידע בסכמה או באפליקציות (ב- methods)
ברור שמסד נתונים אוניברסיטאי יכיל מידע על קורסים, סטודנטים וכד' היכן יופיע מידע על הכללים לקבלת תואר ב- CSE? אם מידע זה בכלל קיים במסד הנתונים, אז רוב הסיכויים שהוא מופיע בתוך method שבודק האם סטודנט זכאי לתואר אי אפשר לשאול שאילתה לגבי מידע שמופיע בתוך קוד לדוגמה, היינו רוצים לדעת האם חובה לקחת קורס באלגוריתמים כדי לקבל תואר ב- CSE

118 האתגר האמיתי לבנות סכמה שכוללת בתוכה את כל המידע, כולל הכללים לקבלת תואר ועל ידי כך לאפשר שאילתות מהצורה האם הכרחי לקחת קורס בהסתברות כדי לקבל תואר ב- CSE? אם לא, האם צריך לקחת קורסים מסוימים במקום הקורס בהסתברות? מערכת שמאפשרת זאת קרויה מערכת מומחה


Download ppt "Databases: An Introduction"

Similar presentations


Ads by Google