Presentation is loading. Please wait.

Presentation is loading. Please wait.

Based on the lecture notes of Prof. Sagiv

Similar presentations


Presentation on theme: "Based on the lecture notes of Prof. Sagiv"— Presentation transcript:

1 Based on the lecture notes of Prof. Sagiv
אלגברת היחסים Relational Algebra יחס מעל קבוצת עמודות ריקה – יש שקפים להוסיף שהטלה או בחירה (וגם צירוף עם תנאי) אינם מוגדרים אם יש התייחסות לאטריבוטים שלא קיימים ביחסים – ראה שקף 23 מי כל הסטודנטים שלא לוקחים DB (איפה המידע על מיהם כל הסטודנטים?) – ראה שקף על שאילתות לא מונוטוניות צירוף טבעי עם כמה עמודות – לתת דוגמה או להדגיש, ראה גם שקף 76 אינדקסים ואופטימיזציה – שקילויות. ראה שקפים 45 ו- 46 מספרי עמודות – פרמוטציות – יש שקפים אלגברה של שקים – מה אפשר להגיד? בתרגיל לשאול על פעולת החלוקה Based on the lecture notes of Prof. Sagiv

2 מודל הנתונים היחסי (או בקיצור "המודל היחסי")
The Relational Data Model אלגברת היחסים מוגדרת על המודל היחסי

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

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

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

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

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

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

9 אלגברת היחסים Relational Algebra

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

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

12 יחסים לדוגמה 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 S – Students T – Teachers R – Students, their courses, and their teachers

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

14 הטלה Projection

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

16 דוגמה של הטלה כדי לבצע הטלה של יחס R על העמודות tid ו- course רושמים את הביטוי: התוצאה: course sid tid os 202 20 calculus 450 10 db 240 R course tid os 20 calculus 10 db

17 כיצד ממומשת הטלה ב SQL? ע"י פסוקית ה Select
Select distinct tid, course From R

18 כתיבת שאילתה בעזרת הטלה
course sid tid os 202 20 calculus 450 10 db 240 מהם כל הקורסים? התוצאה: R course os calculus db

19 בחירה Selection

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

21 course sid tid os 202 20 calculus 450 10 db 240 דוגמה של בחירה R כדי לבחור מהיחס R את כל הרשומות של המורה שה-id שלו הוא 20, רושמים את הביטוי: התוצאה: course sid tid os 202 20 db 240

22 כיצד ממומשת בחירה ב SQL? ע"י פסוקית ה From Select distinct * From R
Where tid=20;

23 שימו לב ! פעולת ההטלה (Projection) באלגברה של יחסים מקבילה לפסוקית ה select ב SQL פעולת הבחירה (Selection) באלגברה של יחסים מקבילה לפסוקית ה Where ב SQL כלומר, המילה select מבטאת פעולות שונות באלגברה של יחסים וב SQL

24 שילוב של הטלה ובחירה הביטוי הבא מחשב את רשימת הקורסים שמלמד המורה שה-id שלו הוא 20 התוצאה: R course sid tid os 202 20 calculus 450 10 db 240 course os db האם אפשר להחליף את הסדר של הבחירה וההטלה?

25 דוגמה נוספת S מהם שמות הסטודנטים בשנה שלישית? התוצאה: year sname sid 3
white 240 jones 202 1 adams 450 מהם שמות הסטודנטים בשנה שלישית? התוצאה: sname white Jones

26 התנאים שניתן להשתמש בהם בפעולת הבחירה

27 התנאי של פעולת הבחירה הצורה הכללית של פעולת הבחירה הנה , כאשר C הנו התנאי התנאי מורכב מהשוואות שמקושרות ע"י פעולות לוגיות של ו (אין צורך בשלילה) השוואה היא מהצורה attribute1 op attribute2 או attribute1 op constant

28 פעולות השוואה פעולות ההשוואה (op) הן
אם הקבוע מורכב מאותיות (char string), אזי רושמים אותו בין צמד גרשיים, לדוגמה

29 שימו לב באלגברה של יחסים לא קיימים אופרטורים המקבילים לפונקציות האגרגציה ב SQL כגון count, sum, avg וכו' בוודאי שגם לא קיימים אופרטורים המקבילים לאפשרות הקיבוץ (Group By) הקיימת ב SQL

30 דוגמה S year sname sid 3 white 240 jones 202 1 adams 450 מהם ה- id של הסטודנטים ששמם הוא jones והם לומדים בשנה ראשונה או שלישית? התוצאה: sid 202

31 Cartesian Product (Cross Product)
מכפלה קרטזית Cartesian Product (Cross Product)

32 מכפלה קרטזית Cross Product
מכפלה קרטזית היא פעולה בינארית, שמסומנת ע"י , והיא מחברת כל רשומה של יחס אחד עם כל רשומה של היחס השני מספר העמודות בתוצאה שווה לסכום מספרי העמודות ביחסים המקוריים מספר הרשומות בתוצאה שווה למכפלת מספרי הרשומות ביחסים המקוריים

33 יחסים לדוגמה (שנית) 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 S – Students T – Teachers R – Students, their courses, and their teachers

34 dept tname )tid( course sid math cohen 10 os 202 20 calculus 450 db 240 cs levy

35 dept tname )tid( course sid math cohen 10 os 202 20 calculus 450 db 240 cs levy סכמת התוצאה היא איחוד הסכמות של היחסים המקוריים. מכיוון שלשתי הסכמות המקוריות יכולים להיות אטריבוטים משותפים, חייבים לשנות את שמות האטריבוטים האלה. בדוגמה, המופעים של האטריבוט המשותף מוקפים ע"י סוגריים, כדי לציין שלמעשה יש בעיה עם השמות האלה. דרך אחת לפתור את הבעיה היא להוסיף את שם היחס המקורי לשם האטריבוט, כלומר העמודה השמאלית נקראת R.tid והעמודה הרביעית משמאל נקראת T.tid

36 הצירוף הטבעי R ⋈ T The Natural Join R ⋈ T

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

38 מצרפים רשומה מ- R עם רשומה מ- T בתנאי שהרשומות שוות על האטריבוטים המשותפים
dept tname )tid( course sid math cohen 10 os 202 20 calculus 450 db 240 cs levy

39 מוחקים עותקים כפולים של עמודות
dept tname )tid( course sid math cohen 10 calculus 450 cs levy 20 os 202 db 240 R ⋈ T = R.tid,sid,course,tname,deptR.tid=T.tid (R ⅹ T)

40 התוצאה היא הצירוף הטבעי R ⋈ T
dept tname course sid tid math cohen calculus 450 10 cs levy os 202 20 db 240 R ⋈ T = R.tid,sid,course,tname,deptR.tid=T.tid (R ⅹ T)

41 דוגמאות לחישוב שאילתות בעזרת צירוף טבעי

42 מה שמות המורים שמלמדים את הסטודנט המזוהה ע"י sid=202?
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 tname (sid=‘202’ (R ⋈ T)) tname (sid=‘202’ )R( ⋈ T)או

43 מהן שנות הלימוד של הסטודנטים שמלמד לוי?
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 צירוף טבעי הוא אסוציאטיבי וקומוטטיבי year (tname=‘levy’ (S ⋈ R ⋈ T)) year (S ⋈ R ⋈ tname=‘levy’)T()או

44 דוגמה לצירוף טבעי כשיש מספר עמודות משותפות

45 חייב להיות שוויון על כל צמד של עמודות משותפות
S R C B A os 20 202 calc 10 450 db 240 D C A 3 calc 240 2 db 202 1 os 450 D C B A 2 db 20 202 R ⋈ T

46 מה התוצאה עכשיו? R ⋈ T S R C B A os 20 202 calc 10 450 db 240 D C A 3

47 איחוד Union

48 איחודUnion יחסים הנם קבוצות וניתן לאחד אותם, בתנאי שהם תואמים, כלומר:
לשני היחסים אותה קבוצה של אטריבוטים, ובנוסף עמודות בעלות אותו אטריבוט הנן בעלות אותו type (תנאי זה משמעותי אם הוגדר type לכל אטריבוט) אם לא מתייחסים לאטריבוטים (או שאין אטריבוטים), אז התנאים הנם: לשני היחסים אותו מספר עמודות, ובנוסף עמודות בעלות אותו מיקום הנן בעלות אותו type (אם הוגדר type)

49 דוגמה year sname sid 3 white 240 jones 202 1 adams 450 year sname sid
katz 701 2 sapir 820 adams 450 year sname sid 1 katz 701 3 jones 202 2 sapir 820

50 הפרש Difference

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

52 דוגמה year sname sid 3 white 240 jones 202 1 adams 450 year sname sid
katz 701 3 jones 202 2 sapir 820

53 חיתוך Intersection

54 חיתוך Intersection באופן דומה ניתן להגדיר חיתוך של יחסים
אבל למעשה פעולת החיתוך ניתנת לביטוי בעזרת פעולות אחרות

55 דוגמה year sname sid 3 white 240 jones 202 1 adams 450 year sname sid
katz 701 3 jones 202 2 sapir 820

56 שימוש במספרי עמודות במקום אטריבוטים
שימוש במספרי עמודות במקום אטריבוטים

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

58 דוגמה במכפלה הקרטזית של R ו- T, אפשר למחוק את אחת משתי העמודות בעלות אותו השם ע"י הפעולה הבאה בפעולת ההטלה (המופיעה לעיל) מתייחסים למיקום העמודות ולא לשמותיהן (עמודה 1 היא השמאלית ביותר) התוצאה של ההטלה היא יחס עם סכמה מוגדרת היטב (קרי, אין שתי עמודות עם אותו שם)

59 dept tname )tid( course sid math cohen 10 os 202 20 calculus 450 db 240 cs levy

60 dept tname course sid tid math cohen os 202 20 calculus 450 10 db 240 cs levy

61 dept tname course sid tid math cohen os 202 20 calculus 450 10 db 240 cs levy

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

63 dept tname course sid tid math cohen calculus 450 10 cs levy os 202 20 db 240

64 הערה אם בפעולת הבחירה משתמשים במספרי עמודות, אז צריך לסמן קבועים ע"י גרשיים השוואת עמודות 1 ו- 4: השוואת עמודה 1 לקבוע:

65 שינוי שם Renaming

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

67 שינוי שם Renaming הפעולה מסומנת ע"י לדוגמה, נרשום את הביטוי
ביטוי זה יוצר את המכפלה הקרטזית ונותן לתוצאה את הסכמה: P(tid1,sid,course,tid2,tname,dept) שם הסכמה של התוצאה הוא P ובסוגריים מצוינים שמות האטריבוטים מציינים במפורש רק את העמודות ששמן משתנה

68 צירוף Join

69 צירוף Join פעולת הצירוף היא למעשה שילוב של מכפלה קרטזית ובחירה (ובמקרים מסוימים גם הטלה) שלושה סוגים condition join או theta join (הכללי ביותר) equi-join (שתי גרסאות) natural join (צירוף טבעי – הוגדר כבר קודם)

70 צירוף מותנה Condition Join
צירוף מותנה הנו פעולה מהצורה הבאה C הנו ביטוי המורכב מפעולות לוגיות ( , ) ומהשוואות מהצורה: כלומר כל השוואה היא בין אטריבוט כלשהו A של R לבין אטריבוט כלשהו B של S מסמן את אחד מששת האופרטורים של ההשוואה, קרי ההגדרה:

71 הסבר להגדרה ההגדרה: מדוע התנאי המקורי (בצירוף המותנה) הוא C, בעוד שבהגדרת הצירוף (באגף ימין של השיוויון) התנאי הוא C’? ב- C מופיעות השוואות מהצורה ב- C’ מופיעות השוואות לפי מספר האטריביוט

72 R ⋈R.tid=T.tid T = dept tname )tid( course sid math cohen 10 calculus
450 cs levy 20 os 202 db 240

73 ההגדרה הנפוצה של Equi-Join
צירוף שוויון הנו פעולה מהצורה הבאה כאשר C הנו גימום (קוניונקציה) של השוואות מהצורה: כלומר, כל השוואה היא שוויון בין אטריבוט כלשהו A של R לבין אטריבוט כלשהו B של S ההגדרה: הקשר בין C לבין C’ הוא כפי שהוסבר בשקף 70

74 צירוף טבעי Natural Join (הוגדר כבר קודם)
בצירוף טבעי משווים את כל זוגות האטריבוטים המשותפים ל- R ול- S ומשאירים רק עותק אחד מכל זוג עמודות שהושוו מהו הצירוף הטבעי אם אין עמודות משותפות? מהו הצירוף הטבעי אם כל העמודות משותפות?

75 יחס ריק לעומת יחס עם סכמה ריקה

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

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

78 הטלה על רשימת אטריבוטים ריקה
∅ מסמן את הרשימה הריקה הביטוי ∅(R) מציין הטלה של R על רשימה ריקה של אטריבוטים התוצאה היא יחס מעל סכמה ריקה, כלומר התוצאה היא אחת משתי האפשרויות הבאות: יחס שמכיל בדיוק את הרשומה הריקה אם R אינו ריק יחס ריק אם R הנו ריק הטלה על ∅ מחזירה תשובה שהיא "כן" או "לא" למשל, האם יש סטודנטים שלוקחים את הקורס db?

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

80 פעולות מונוטוניות

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

82 מושג השקילות של שאילתות
מושג זה הנו חשוב בהקשר של חישוב יעיל של שאילתות

83 דוגמה להבהרת מושג השקילות
שני ביטויים אלגבריים הנם שקולים אם הם תמיד נותנים אותה תוצאה לדוגמה, הביטוי Y+X+Y שקול לביטוי 2Y+X אבל הביטוי X+Y והביטוי X+2Y אינם שקולים, כי הם נותנים אותה תוצאה רק אם Y=0 המשמעות הפורמלית של "תמיד נותנים אותה תוצאה" היא שהם נותנים אותה תוצאה לכל הצבה אפשרית של ערכים עבור המשתנים

84 הגדרה: שקילות של שאילתות
שני ביטויים באלגברת היחסים הנם שקולים אם הם תמיד נותנים אותה תוצאה, כלומר אם הם נותנים אותה תוצאה לכל הצבה אפשרית של יחסים עבור שמות היחסים דוגמה לשתי שאילתות שקולות: year (S ⋈ R ⋈ tname=‘levy’)T() year (tname=‘levy’ (S ⋈ R ⋈ T))

85 מדוע שקילות של שאילתות הנה מושג חשוב?
למרות שלביטויים שקולים תמיד יש אותה תוצאה, זמן החישוב שלהם יכול להיות שונה האם זמן החישוב של אחת משתי השאילתות הבאות הוא תמיד מהיר יותר משל השניה? year (S ⋈ R ⋈ tname=‘levy’)T() year ( tname=‘levy’ (S ⋈ R ⋈ T))

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

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

88 דוגמה year (tname=‘levy’ (S ⋈ R ⋈ T))
בדוגמה שראינו קודם, מיישמים עיקרון זה ע"י כך שמחליפים את השאילתה בשאילתה השקולה year (tname=‘levy’ (S ⋈ R ⋈ T)) year (S ⋈ R ⋈ tname=‘levy’)T()

89 דוגמה נוספת כאמור, צירוף הנה פעולה אסוציאטיבית ולכן הביטויים ((S ⋈ R) ⋈ T) ו- (S ⋈ (R ⋈ T)) הנם שקולים, כלומר הם נותנים אותה תוצאה אבל אינם נותנים אותה תוצאת ביניים! לאיזה משני הביטויים יש תוצאת ביניים קטנה יותר? תלוי ביחסים הספציפיים עבור R, S, ו- T למשל: ((S ⋈ R) ⋈ R) ו- (S ⋈ (R ⋈ R))


Download ppt "Based on the lecture notes of Prof. Sagiv"

Similar presentations


Ads by Google