Based on the lecture notes of Prof. Sagiv

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
אופטימיזציה של שאילתות
מתמטיקה בדידה תרגול 3.
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
חישוב ואופטימיזציה של שאילתות חלק 1
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
מסדי נתונים תשס " ג 1 More on SQL קורס מסדי נתונים.
DBMS , שפות שאילתה: SQL (ב')
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תרגול 9 אלגברה רלציונית.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts SQL n מבנה שאילתה n פונקציות צבירה.
אלכסנדר ברנגולץ דואר אלקטרוני: אלכסנדר ברנגולץ דואר אלקטרוני: פעולות מורפולוגיות.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
1 חישוב ואופטימיזציה של שאילתות חלק 1 Query Evaluation and Optimization Part 1.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
תחשיב היחסים (הפרדיקטים)
תרגול 5: ביטויים לוגיים ומשפטי תנאי (חזרה והרחבה)
1 compute תנאים פשוטים בעזרת compute לוגי לדוגמא: compute q1 = w > 80. Freq var = q1.
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מבוא לשפת C תרגול 4: ביטויים לוגיים ומשפטי תנאי מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב"
מתמטיקה בדידה תרגול 2.
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 5
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
2003B Q5 Suppliers(sid, sname, city) Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
1 Relational Model and Relational Algebra 1. 2 The Relational Model The relational model describes the logical view of the data by using tables –The logical.
מחרוזות – הטיפוס String
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Structured Query Language
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
סמן נכון/לא נכון: יכולים להיות 2 חתולים (type)עם אותו שם (name)
4 July 2007 נרמול מסד הנתונים.
SQL בסיסי – הגדרה אינדוקטיבית
SQL SQL הינה השפה הדומיננטית לטיפול בבסיסי נתונים יחסיים, אך לא קיים סטנדרט SQL יחיד. ׁ(SQL92, SQL3 …) ניתן לחלק את פקודות SQL לארבע משפחות: פקודות להגדרת.
עבודה עם נתונים באמצעות ADO.NET
מודל היחסים (Relational Model)
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
ממשקים - interfaces איך לאפשר "הורשה מרובה".
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
בעיות נוספות ב-NPC.
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

יחסים לדוגמה 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

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

הטלה Projection

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

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

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

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

בחירה Selection

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

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

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

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

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

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

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

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

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

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

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

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

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

יחסים לדוגמה (שנית) 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

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

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

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

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

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

מוחקים עותקים כפולים של עמודות 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)

התוצאה היא הצירוף הטבעי 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)

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

מה שמות המורים שמלמדים את הסטודנט המזוהה ע"י 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)או

מהן שנות הלימוד של הסטודנטים שמלמד לוי? 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()או

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

חייב להיות שוויון על כל צמד של עמודות משותפות 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

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

איחוד Union

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

דוגמה 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

הפרש Difference

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

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

חיתוך Intersection

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

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

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

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

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

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

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

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

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

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

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

שינוי שם Renaming

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

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

צירוף Join

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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