Presentation is loading. Please wait.

Presentation is loading. Please wait.

3. אלגברה רלציונית שקפים: אלדר פישר

Similar presentations


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

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

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

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

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

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

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

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

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

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

10 צירוף (Join) צירוף לפי ביטוי (-Join): בהינתן רלציות S[A1,...,An] ו- T[B1,...,Bm], וביטוי  במושגים של A1,...,An,B1,...,Bm, נסמן ב- S ⋈ T את תוצאת הביטוי האלגברי  (ST) . דוגמה: S A B 1 2 3 4 T C D 1 2 S ⋈ B>C T A B C D 1 2 3 4

11 צירוף טבעי (Natural Join)
פעולה נפוצה מאוד במסדי נתונים. עבור הרלציות S[A1,...,An,B1,...,Bm] ו- T[B1,...,Bm,C1,...,Ck], נסמן ב- S ⋈ T את כל הצירופים של אובייקט מ-S ואובייקט מ-T המסכימים ביניהם על התכונות המשותפות, לאחר הסרת הכפילויות בתכונות. בניסוח אחר: S ⋈ T= A1,...,An,S.B1,...,S.Bm,C1,...,Ck(S ⋈(S.B1=T.B1) ... (S.Bm=T.Bm) T) S צבע חיה לבן סוס ורוד פיל שחור חתול T גוון צבע בהיר כחול כהה ורוד S ⋈ T גוון צבע חיה בהיר ורוד פיל כהה

12 חצי צירוף (Semi-join) עבור S[A1,...,An,B1,...,Bm] ו- T[B1,...,Bm,C1,...,Ck], נסמן ב- S ⋉ T את כל האובייקטים ב-S שעבורם קיימים אובייקטים ב-T המסכימים איתם על התכונות המשותפות. בניסוח אחר: S ⋉ T= A1,...,An,B1,...,Bm (S ⋈ T) בהרבה מקרים כדאי להשתמש במימוש ישיר של חצי-צירוף, להקטנת תוצאות הביניים בעת מימוש ביטוי באלגברה רלציונית. S צבע חיה לבן סוס ורוד פיל שחור חתול T גוון צבע בהיר כחול כהה ורוד S ⋉ T צבע חיה ורוד פיל

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

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

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

16 אלגברה רלציונית ─ דוגמא מסכמת
ניזכר בתרשים ה-ER עבור מפעיל הרכבות. Arrives Platform A_Time D_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 אלו טבלאות יתקבלו מהתרשים ?
אלו עמודות יהיו בטבלא עבור טיפוס היחס 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 דוגמאות לשאילתות אלו תחנות נמצאות על הקו 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 דוגמא לשימוש בחילוק אלו רכבות (לפי מספר) מגיעות לכל התחנות ?
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_Name1, S_Name2, … נרצה לבחור מהמכפלה רק זוגות החולקים ביניהם אותה תחנת חילוף: S = S_Name1=S_Name2(RR) לבסוף, לקבלת השאילתה השלמה נבצע הטלה על התכונות המעניינות אותנו: T = L_Type1,L_Num1,Direction1,L_Type2,L_Num2,Direction2(S)

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

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


Download ppt "3. אלגברה רלציונית שקפים: אלדר פישר"

Similar presentations


Ads by Google