Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 236363 מערכות מסדי נתונים 3. אלגברה רלציונית שקפים:אלדר פישר עריכה ותוספות: אמיר שפילקה.

Similar presentations


Presentation on theme: "1 236363 מערכות מסדי נתונים 3. אלגברה רלציונית שקפים:אלדר פישר עריכה ותוספות: אמיר שפילקה."— Presentation transcript:

1 1 236363 מערכות מסדי נתונים 3. אלגברה רלציונית שקפים:אלדר פישר עריכה ותוספות: אמיר שפילקה

2 2 אלגברה רלציונית אלגברה רלציונית (Relational algebra) היא שפה המאפשרת לכתוב שאילתות עבור נתונים המאורגנים בטבלאות (רלציות). התחביר מזכיר תחביר של ביטויים אלגברים, רק שכאן הפעולות הן על טבלאות שלמות, ולא על נתונים בודדים. התוצאה של הביטוי הרלציוני (השאילתה) היא טבלא (רלציה) בעצמה.

3 3 רלציה בודדת רלציה בודדת היא קבוצה של אובייקטים מטיפוס משותף. בדרך כלל נתייחס לרלציה כאל טבלא. תזכורת ─ שורות הטבלא מתאימות לאובייקטים ברלציה, ועמודות הטבלא מתאימות לתכונות האובייקטים. סדר השורות והעמודות אינו משנה, ואנו לא מרשים כפילויות בשורות. לפעמים נתייחס גם לנקודת המבט ה"גיאומטרית", שבה האובייקטים מיוצגים כנקודות במרחב הערכים האפשריים. קבוצת התכונות של הרלציה תיקרא סכימת הרלציה. נתגלה בסרטתאריך לידהשם הכרכרה26.5.1907ג'ון ויין ג'ונגל האספלט1.6.1926מרילין מונרו

4 4 פעולות רלציוניות פעולות בסיסיות: פעולות אונריות: הטלה (Projection), בחירה (Selection). פעולות בינאריות: מכפלה קרטזית, חיסור, איחוד וחיתוך (למעשה ניתן לבטא חיתוך גם במושגים של הפעולות האחרות). שינוי שמות תכונות: פעולה טכנית לצורך הרכבת פעולות. פעולות שניתנות לביטוי באמצאות הפעולות הבסיסיות: צירוף (Join) בגרסאותיו השונות, חילוק, וכו'. לעיתים ברמת המימוש כדאי לממש באופן ישיר גם חלק מהפעולות המרוכבות, ולא להסתמך על מימושי הפעולות הבסיסיות בלבד.

5 5 הטלה (Projection) הטלה היא פעולה של "שיכחה" של חלק מהתכונות המתארות קבוצת אובייקטים נתונה. במושגים של טבלאות: מוחקים את העמודות שאינן מופיעות באינדקס של הטלה, ואז מסירים כפילויות בשורות שנוצרות כתוצאה מכך. במושגים "גיאומטרים": הדבר דומה להטלה אורתוגונלית על חלק מה"צירים". T = noHebRoman 1אi 2בii  Heb, Roman T = HebRoman אi בii

6 6 בחירה (Selection) תהי T=T[A 1,...,A m ] טבלא של אובייקטים עם תכונות A 1,...,A m. עבור ביטוי ,   T תהיה קבוצת האובייקטים ב-T המספקים את התנאי המובע ב - . מה יכול  להכיל ? השוואות (עם האופרטורים =, , >, <, ,  ) בין תכונה לבין קבוע או בין שתי תכונות. עבור תכונות מסוגים מסוימים (למשל קבוצות) יתכנו גם סימני יחס אחרים (למשל "  " ). פעולות בוליאניות. למשל : ( A 1  2 )  (A 3 = “cat” ). T = noHebRoman 1אi 2בii 3גiii  no  2 T = noHebRoman 1אi 2בii

7 7 איחוד, חיסור וחיתוך פעולות אלו מתבצעות רק בין זוג רלציות בעל אותה סכמה, והן זהות לפעולות המקבילות מתורת הקבוצות. איחוד S  T ─ מכיל את כל האובייקטים שנמצאים ב-S או ב-T. חיסור S\T ─ מכיל את כל האובייקטים שנמצאים ב-S אך לא נמצאים ב-T. חיתוך S  T ─ מכיל את כל הרשומות שנמצאות גם ב-S וגם ב-T. זהה לתוצאת הביטויS \ ( S \ T ). דוגמא: T = צבעחיה שחורחתול לבןסוס S = צבעחיה לבןסוס ורודפיל S  T = צבעחיה לבןסוס S\T = צבעחיה ורודפיל S  T = צבעחיה שחורחתול לבןסוס ורודפיל

8 8 מכפלה קרטזית (Cartesian Product) עבור שתי קבוצות של אובייקטים ─ ניקח את קבוצת כל הקומבינציות האפשריות של אובייקט מהקבוצה הראשונה ואובייקט מהקבוצה השניה. במושגים של טבלאות: לוקחים את כל ה"שרשורים" האפשריים של שורה מ-S ושורה מ-T. במושגים "גיאומטרים": המכפלה כאן מזכירה את המושג של מכפלה ישרה של מרחבים ווקטורים. אם יש תכונות בעלות שם זהה ל-S ו-T, נבדיל ביניהן באמצעות סימון שם הרלציה המקורית (למשל "T.Num", "S.Num"), או באמצעות תוספת של מספר סידורי (למשל "Num2", "Num1"). S  T גודלצבעחיה קטןשחורחתול גדוללבןסוס S  T גודלצבעחיה קטןשחורחתול גדולשחורחתול קטןלבןסוס גדוללבןסוס

9 9 שינוי שם תכונות למעשה זו אינה פעולה באלגברה רלציונית, אלא פעולת עזר שנועדה לאפשר כתיבת ביטויים מורכבים (בעיקר אלו המערבים איחוד, חיסור וחיתוך, וכן צירופים טבעיים – ראו בהמשך). אם T=T[A 1,...,A m ] היא טבלא של אובייקטים עם התכונות A 1,...,A m, אז  A 1 → B 1,…, A m → B m (T) יחזיר את אותה טבלא בדיוק, רק שכאן שמות התכונות יהיו B 1,…,B m בהתאמה.  צבע → Color,חיה → Animal (T) = ColorAnimal שחורחתול לבןסוס T = צבעחיה שחורחתול לבןסוס

10 10 -  צירוף (  -Join) צירוף לפי ביטוי (  -Join): בהינתן רלציות S[A 1,...,A n ] ו- T[B 1,...,B m ], וביטוי  במושגים של A 1,...,A n,B 1,...,B m, נסמן ב- S ⋈  T את תוצאת הביטוי האלגברי   (S  T). דוגמה: S AB 12 34 S ⋈ B>C T ABCD 1212 3412 3421 T CD 12 21

11 11 צירוף טבעי (Natural Join) פעולה נפוצה מאוד במסדי נתונים. עבור הרלציות S[A 1,...,A n,B 1,...,B m ] ו- T[B 1,...,B m,C 1,...,C k ], נסמן ב- S ⋈ T את כל הצירופים של אובייקט מ-S ואובייקט מ-T המסכימים ביניהם על התכונות המשותפות, לאחר הסרת הכפילויות בתכונות. בניסוח אחר: S ⋈ T=  A 1,...,A n,S.B 1,...,S.B m,C 1,...,C k (S ⋈ (S.B 1 =T.B 1 ) ...  (S.B m =T.B m ) T) T גווןצבע בהירכחול כההכחול בהירורוד כההורוד S צבעחיה לבןסוס ורודפיל שחורחתול S ⋈ T גווןצבעחיה בהירורודפיל כההורודפיל

12 12 חצי צירוף (Semi-join) עבור S[A 1,...,A n,B 1,...,B m ] ו- T[B 1,...,B m,C 1,...,C k ], נסמן ב- S ⋉ T את כל האובייקטים ב-S שעבורם קיימים אובייקטים ב-T המסכימים איתם על התכונות המשותפות. בניסוח אחר:S ⋉ T=  A 1,...,A n,B 1,...,B m (S ⋈ T) בהרבה מקרים כדאי להשתמש במימוש ישיר של חצי-צירוף, להקטנת תוצאות הביניים בעת מימוש ביטוי באלגברה רלציונית. T גווןצבע בהירכחול כההכחול בהירורוד כההורוד S צבעחיה לבןסוס ורודפיל שחורחתול S ⋉ T צבעחיה ורודפיל

13 13 חילוק (Quotient) בהינתן שתי רלציות S[A 1,...,A n,B 1,...,B m ] ו- T[B 1,...,B m ], (ז"א כאשר תכונות T מוכלות בתכונות S), נסמן ב -S  T את הרלציה R[A 1,...,A n ] המכילה כל אובייקט עבורו יש מופעים ב-S לכל הקומבינציות האפשריות עם שורות מ-T. במילים אחרות: R היא הקבוצה המקסימלית עבורה T  R  S. הגדרה באמצעות פעולות בסיסיות: S  T=  A 1,...,A n S \  A 1,...,A n (((  A 1,...,A n S)  T) \ S ) T צבע לבן שחור S צבעחיה לבןסוס שחורסוס שחורחתול R=S  T חיה סוס

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

15 15 הכללת פעולות האלגברה הטלות: עבור רלציה R, גם הקבוצה הריקה תחשב כתת-קבוצה של התכונות שלה, וההטלה המתאימה תסומן ב- π λ R. תוצאת הביטוי תהיה רלציה ריקה אם R היתה ריקה, ותכיל את השורה הריקה (כשורה יחידה) אם R לא היתה ריקה. מכפלה קרטזית: איך נגדיר את R  S אם S היא חסרת תכונות? התוצאה תהיה ריקה אם S ריקה, וזהה ל-R אם S מכילה את השורה הריקה. חלוקה: אם ל-R ול-S אותן תכונות, אז R  S תכיל את השורה הריקה אם S ⊆ R, ותהיה ריקה אחרת.

16 16 אלגברה רלציונית ─ דוגמא מסכמת ניזכר בתרשים ה-ER עבור מפעיל הרכבות. Arrives Platform A_TimeD_Time Station Height S_Name S_Type Serves Km Line Direction L_Num L_Type Train T_Num Days Service Gives Food Class T_Category

17 17 אלו טבלאות יתקבלו מהתרשים ? אלו עמודות יהיו בטבלא עבור טיפוס היחס 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.

18 18 דוגמאות לשאילתות אלו תחנות נמצאות על הקו 1-דרום ? המידע הנ"ל נמצא כולו בטבלת הרלציה של Serves. השאילתה:  S_Name (  (L_Num=1)  (Direction=“south”) (Serves)) לאלו קווים יש תחנות מתחת לפני הים ? כאן אי אפשר לדעת אלו שורות מהטבלא של "Serves" אנו צריכים, ולכן נצרף אותה לטבלא עבור טיפוס הישות של Station. השאילתה המלאה:  L_Num,Direction (  Height<0 (Station ⋈ Serves)) או (תוך שימוש בחצי צירוף):  L_Num,Direction (Serves ⋉  S_Name (  Height<0 (Station)))

19 19 דוגמא לשימוש בחילוק אלו רכבות (לפי מספר) מגיעות לכל התחנות ?  T_Num,S_Name (Arrives)  S_Name (Station) ומה אם יש תחנות שלא נמצאות על אף קו פעיל ? איך נמנע מלהתחשב בהן ?  T_Num,S_Name (Arrives)  S_Name (Serves) ומה אם יש תחנות הנמצאות על קו פעיל אולם אף רכבת אינה מבצעת עצירה בהן ?  T_Num,S_Name (Arrives)  S_Name (Arrives)

20 דוגמא לשאילתא מורכבת יותר נניח עתה שנרצה לדעת את כל זוגות הקווים שיש ביניהן תחנת חילוף, כולל את סוגי הקווים. ראשית נבחר צירופי "משרת-קו" שעבורם התחנה היא תחנת חילוף: R = (Line ⋈ Serves) ⋉  S_Name (  “change”  S_Type (Station)) עתה במכפלה R  R יהיו כל הזוגות האפשריים של צירופי "משרת-קו" עבורם המדובר בתחנת חילוף ─ נניח שעל מנת להבדיל בין התכונות הוספנו להם אינדקסים, למשל S_Name 1, S_Name 2, … נרצה לבחור מהמכפלה רק זוגות החולקים ביניהם אותה תחנת חילוף: S =  S_Name 1 =S_Name 2 (R  R) לבסוף, לקבלת השאילתה השלמה נבצע הטלה על התכונות המעניינות אותנו : T =  L_Type 1,L_Num 1,Direction 1,L_Type 2,L_Num 2,Direction 2 (S)

21 21 אלו שאילתות לא יכולות להישאל באלגברה רלציונית ? ישנם מספר סוגים של שאילתות טבעיות שאין עבורן ביטויים מתאימים באלגברה רלציונית (RA). קיבוץ (Aggregate functions): שאילתות מהצורה: "כמה קווים יש בכיוון צפון ?" "מה ממוצע המרחקים בין שתי תחנות על קו 1-דרום ?" "כמה רכבות עוצרות ביום שני בכל תחנה ?" שאילתות אלו דורשות הפעלה של פונקציות בעלות מספר לא קבוע של משתנים (כגון ספירה, סכום, ממוצע... ) על קבוצת ערכים המתקבלים מהרלציה. ישנן הרחבות של RA המאפשרות שאילתות מסוג זה, וכן ניתן לשאול אותן בשפת SQL הנלמדת בתרגול.

22 22 שאילתות שאי אפשר לשאול (המשך) סגור טרנזיטיבי: האם ניתן לשאול את השאילתא הבאה ב-RA ? "מאלו לאלו תחנות אפשר להגיע עם מספר סופי כלשהוא של חילופי רכבת?" לכל k קבוע אפשר לשאול ב-RA את השאילתא: "מאלו לאלו תחנות אפשר להגיע עם k חילופים או פחות ?", אבל עבור השאילתה ללא הגבלה על k אין ביטוי באלגברה רלציונית. גם ב-ANSI SQL סטנדרטי (ללא התערבות של השפה המארחת) אי אפשר לשאול שאילתא מעין זו. שפת השאילתות הניסיונית Datalog מאפשרת את ביצוע השאילתה הנ"ל.


Download ppt "1 236363 מערכות מסדי נתונים 3. אלגברה רלציונית שקפים:אלדר פישר עריכה ותוספות: אמיר שפילקה."

Similar presentations


Ads by Google