כאשר אנחנו שולחים שאילתה לDBMS יתקיים שהמנוע מקבל Query Plan.
השפה הדיקלרטיבית שהיא SQL היא דרך מילולית לבטא את אוסף הפעולות שהמערכת יודעת לבצע ולעבד. ה Query Compiler הוא זה שמקבל את השאילתות בשפה הדיקלרטיבית ומתרגם אותה ל Query Plans שהם ביטויים יותר פורמליים שהמערכת יודעת להתעסק איתם.
האלגברה הרלצניונית זו בעצם הפורמליזציה של לקיחת קבוצה של טבלאות ובניית טבלה חדשה מהן בהתבסס על ה Query plans. אלו כתובים בשפת האלגברה הרלציונית וה Execution Engine מביא את המידע מבסיס הנתונים באופן הכי יעיל בעזרתם.
נשים לב שכאשר שולחים שאילתה למערכת בסיס הנתונים ישנן מספר דרכים אפשריות שמהם היא יכולה לשלוף את הרלציה המבוקשת של הפלט. התפקיד של מערכת בסיסי הנתונים בין השאר זה לדעת מה השיטה הכי יעילה לבצע שאילתה ובחירה בה על פני דרכים שעלולים לקחת יותר זמן או יותר מאמץ.
הסימון זה
הסימון זה
הסימון זה
הסימון זה
פעולה המצמידה רשומה מטבלה אחת לטבלה אחרת
הסימון הוא
הסימון הוא
מסומן כ
כאשר
למשל עבור
ID | Name |
---|---|
1 | John |
2 | Jane |
3 | Bill |
ו
ID | Age | Gender |
---|---|---|
1 | 25 | M |
2 | 32 | F |
4 | 45 | M |
הjoin הטבעי ייתן
ID | Name | Age | Gender |
---|---|---|---|
1 | John | 25 | M |
2 | Jane | 32 | F |
כלומר אנחנו רוצים לקחת את שתי הטבלאות ולהשאיר רק את השורות שמקיימות תנאי כלשהו
דוגמה
הפקודה הבאה
לוקחת את הטבלה
הפקודה
מבצעת join בין שתי הטבלאות לפי עמודת הbuyer והname היכן שיש שיוויון.
כלומר, כמו שהכרנו מפעולות Join של טבלאות ב-SQL ניקח את שני הטבלאות Purchase ו-Person ונייצר כל קומבינציה אפשרית של רשומה מול רשומה מטבלאות אלו, ובסוף נשאיר רק את הרשומות שיש להן ערך זהה בשדה ה-buyer וname לפי העמודות שביקשנו.
כעת ננסה לעשות פקודה מורכבת אף יותר
היא עושה Join כפי שהראנו מקודם אבל מבצעת הקרנה רק על עמודת ה buyer
ניתן לראות את שרשרת הפעולות בעץ הבא
הכללים הבאים מתקיימים
כאשר
כמו כן מתקיימים תנאי הדיסטריבוטיות מתורת הקבוצות על join , כלומר
ניתן לדבר גם על הכללים הבאים שנוגעים ל-Selection ומתארים כיצד ניתן לפרק ביטויים עם התניות לביטויים שקולים: