אביב-תשס"ה236363- DBMS, שפות שאילתה: RA1 שפות שאילתה מתמטיות למודל הרלציוני שפות שאילתה מתמטיות: התייחסות לרלציות כאל קבוצות של רשומות (ללא חזרות וללא.

Slides:



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

מבוא למדעי המחשב לתעשייה וניהול
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
מערכות מסדי נתונים 3. אלגברה רלציונית שקפים:אלדר פישר עריכה ותוספות: אמיר שפילקה.
1 Formal Specifications for Complex Systems (236368) Tutorial #2 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book); Z.
מתמטיקה בדידה תרגול 3.
3½ . דוגמאות נוספות ל-ERD ואלגברה רלציונית עריכה: אמיר שפילקה
מערכות מסדי נתונים 4. התחשיב הרלציוני שקפים:אלדר פישר.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
Inverse kinematics (Craig ch.4) ב"ה. Pieper’s solution נתבונן ברובוט עם 6 מפרקי סיבוב כאשר שלושת הצירים של המפרקים האחרונים נחתכים. נקודת החיתוך נתונה.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
צורות נורמליות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 10.
תכנות תרגול 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.
חורף תשס " ג DBMS , שפות שאילתה : SQL ( א ') 1 סכמה SQL: מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט.
תחשיב הפסוקים חלק ג'. צורות נורמליות א. DF – Disjunctive Form – סכום של מכפלות. דוגמא: (P  ~Q  R)  (R  P)  (R  ~Q  ~P) הגדרה: נוסחה השקולה לנוסחה.
אביב תשס"ה DBMS, צורות נורמליות1 צורות נורמליות: 3NF,BCNF צורה נורמלית (Normal Form) היא תכונה של סכמה רלציונית, המודדת את "טיב" הסכמה מבחינת מניעת.
DBMS , שפות שאילתה: SQL (ב')
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תרגול 9 אלגברה רלציונית.
1 מפרטים פורמאליים תרגול מספר 1 מהות הקורס:כח ביטוי. בעיות מעשיות (ולא הוכחות) מתרגל אחראי:שחר דג מתרגלת:אמיליה כץ אתר:
3. אלגברה רלציונית שקפים: אלדר פישר
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
צורה נורמלית – BCNF Boyce-Codd Normal Form
אביב-תשס"ה DBMS, Design1 פרוקים של רלציות מוטיבציה: פרוק סכמה לסכמות יותר קטנות על מנת למנוע כפילויות. הגדרה: תהי R סכמה רלציונית. פרוק של R הוא.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts SQL n מבנה שאילתה n פונקציות צבירה.
4 July 2007 נרמול מסד הנתונים כאשר מסד הנתונים עובר את שלב התכנון הראשוני יכולים להיווצר מספר בעיות בתכנון הנובעות מיתירות: אחת הבעיות הנפוצות ביותר במסדי.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תחשיב היחסים (הפרדיקטים)
תרגול 5: ביטויים לוגיים ומשפטי תנאי (חזרה והרחבה)
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
NoSQL Slides by Roni Licher and Shoval Lagziel , Spring 2017
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Tirgul 12 Trees 1.
Formal Specifications for Complex Systems (236368) Tutorial #1
Database Systems - Technion
4 July 2007 נרמול מסד הנתונים.
SQL בסיסי – הגדרה אינדוקטיבית
Structured Query Language
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
עבודה עם נתונים באמצעות ADO.NET
חלק 3: מבוא ל- XPath XML Path Language Spring 2005.
מודל היחסים (Relational Model)
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
Marina Kogan Sadetsky –
Based on the lecture notes of Prof. Sagiv
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

אביב-תשס"ה DBMS, שפות שאילתה: RA1 שפות שאילתה מתמטיות למודל הרלציוני שפות שאילתה מתמטיות: התייחסות לרלציות כאל קבוצות של רשומות (ללא חזרות וללא משמעות לסדר). השפות שנלמד בקורס: 1. אלגברה רלציונית (RA). 2. תחשיב רלציוני על תחומים (DRC). 3. תחשיב רלציוני על רשומות (TRC).

אביב-תשס"ה DBMS, שפות שאילתה: RA2 מסד שתייני הבירה drinker(dname, dcity) - שם שתיין ועיר מגוריו. pub(pname, pcity) - שם של פאב והעיר שבה הוא נמצא. beer(bname, btype) - שם של בירה והסוג שלה. frequents(dname, pname) – שתיין נוהג לבקר בפאב serves(pname, bname) – פאב מגיש בירה. likes(dname, bname) - שתיין אוהב בירה.

אביב-תשס"ה DBMS, שפות שאילתה: RA3 תיאור המסד על ידי ERD drinker pub frequents serves beer likes dnamedcitypcitypname btypebname

אביב-תשס"ה DBMS, שפות שאילתה: RA4 מסד שתייני הבירה - המשך dcitydname HaifaMoshe TelAvivYossi HaifaAvi NataniaLior pcityPname HaifaHaShmura TelAvivDarts HaifaMartef NataniaCamelot btypebname lightBeck rootCamelot lagerGuiness darkTuborg drinker:pub: beer:

אביב-תשס"ה DBMS, שפות שאילתה: RA5 pnamedname HaShmuraMoshe DartsYossi MartefAvi MartefYossi bnamepname TuborgHaShmura GuinessDarts BeckMartef GuinessHashmura bnamedname GuinessMoshe TuborgYossi BeckYossi BeckAvi :frequents :serveslikes: מסד שתייני הבירה - המשך

אביב-תשס"ה DBMS, שפות שאילתה: RA6 אלגברה רלציונית Relational Algebra ב-RA מוגדרים אופרטורים הפועלים על רלציות. התוצאה של כל אופרטור היא בעצמה רלציה, שעליה אפשר להפעיל אופרטור נוסף, וכן הלאה... RA היא שפה פקודתית (imperative) ולא הצהרתית (declarative). כלומר בשפה זו אומרים במפורש אלו אופרטורים יש להפעיל ובאיזה סדר.

אביב-תשס"ה DBMS, שפות שאילתה: RA7 RA: set-of-mappingאו set-of-list ל-RA שתי גרסאות: 1. Set-of-mapping עם שמות לעמודות. 2. Set-of-list בלי שמות לעמודות. דוגמא: לפי set-of-mapping שתי הרלציות הבאות שוות: r(a, b) = {(1, 2), (3, 4)} s(b,a) = {(2, 1), (4, 3)} לעומת זאת, לפי set-of-list הרלציות הבאות שונות: t = {(1, 2), (3, 4)} u = {(2, 1), (4, 3)} בהמשך, אנו נתייחס לגרסא של set-of-mapping בלבד

אביב-תשס"ה DBMS, שפות שאילתה: RA8 אופרטורים בסיסיים ב-RA 1. אופרטורים מתורת הקבוצות ( r ו-s הן רלציות): איחוד - r  s חיתוך - r  s חיסור - r  s מכפילה קרטזית - r  s 2. אופרטורים נוספים: בחירת עמודות -  attrs r בחירת שורות -  cond r שינוי שם - ρ a  a 1,b  b 1 r

אביב-תשס"ה DBMS, שפות שאילתה: RA9 אופרטורים ב-RA – המשך האופרטור "משלים" אינו מוגדר כי איננו רוצים לקבל רלציות אינסופיות. חמשת האופרטורים , , , , , ρ הם האופרטורים הבסיסיים ב-RA. אפשר להגדיר באמצעותם את כל שאר האופרטורים שנראה. תרגיל: בטאו את האופרטור . פתרון: r  s = r  (r  s)

אביב-תשס"ה DBMS, שפות שאילתה: RA10 אופרטורים ב-RA – המשך ב-set-of-mapping אפשר להפעיל את האופרטורים מתורת הקבוצות (מלבד  ) בין רלציות שיש להן אותן עמודות (ללא חשיבות לסדר העמודות). דוגמא: שתי הרלציות: r(a, b) = {(1, 2), (3, 4)} s(b,a) = {(2, 1), (4, 3)} שוות זו לזו, ולכן r  s = r

אביב-תשס"ה DBMS, שפות שאילתה: RA11 RA – בחירה (  ) והיטל (  ) התנאי הבוליאני שב-  יכול לכלול: השוואה בין שתי עמודות ע"י אחד מסימני היחס <, =,  וכו'. השוואה בין עמודה לקבוע. שילוב של השוואות כאלה ע"י הקשרים הלוגיים , ,  דוגמאות (r=r(a,b)):  a r - יחזיר רלציה שמכילה את העמודה a ב-r.  a=b r - יחזיר רלציה שמכילה את השורות ב-r שמזדהות על הערכים של התכונות a ו-b. ρ a  a 1,b  b 1 r - יחזיר את r(a 1,b 1 ) שזהה ל-r פרט לשמות התכונות.

אביב-תשס"ה DBMS, שפות שאילתה: RA12 דוגמאות דוגמא 1: אלו בירות יוסי אוהב?  dname=‘Yossi’ likes BeckYossi BeckAvi TuborgYossi GuinessMoshe bnamedname Likes: BeckYossi TuborgYossi bnamedname התוצאה :

אביב-תשס"ה DBMS, שפות שאילתה: RA13 דוגמאות – המשך כדי לבחור את שמות הבירות, בלי לחזור על Yossi כל פעם:  dname=‘Yossi’ likes BeckYossi TuborgYossi bnamedname Beck Tuborg bname  dname=‘Yossi’ likes: התוצאה :  bname ( )

אביב-תשס"ה DBMS, שפות שאילתה: RA14 דוגמאות - המשך... דוגמא 2: אלו בירות יוסי אוהב, או מוגשות ב"השמורה"?  bname (  dname=‘Yossi’ likes)   bname (  pname=‘HaShmura’ serves) דוגמא 3: אלו בירות יוסי אוהב, ואינן מוגשות ב"השמורה"?  bname (  dname=‘Yossi’ likes)   bname (  pname=‘HaShmura’ serves)

אביב-תשס"ה DBMS, שפות שאילתה: RA15 דוגמאות - המשך... הצלבת מידע: מכפלה קרטזית. דוגמא 4: אלו פאבים נמצאים בעיר שיוסי גר בה? pub: TelAvivYossi Haifa Moshe dcity dname NataniaCamelot HaifaMartef TelAvivDarts HaifaHaShmura pcitypname drinker:

אביב-תשס"ה DBMS, שפות שאילתה: RA16 דוגמא – שלב 1 pcitypnamedcitydname HaifaHaShmuraHaifaMoshe TelAvivDartsHaifaMoshe HaifaMartefHaifaMoshe NataniaCamelotHaifaMoshe HaifaHaShmuraTelAvivYossi TelAvivDartsTelAvivYossi HaifaMartefTelAvivYossi NataniaCamelotTelAvivYossi drinker  pub: dname=‘Yossi’  pcity=dcity

אביב-תשס"ה DBMS, שפות שאילתה: RA17 TelavivDartsTelAvivYossi pcitypnamedcitydname  dname=‘Yossi’  pcity=dcity (drinker  pub): דוגמא – שלב 2 Darts pname  pname (  dname=‘Yossi’  pcity=dcity (drinker  pub)): דוגמא – שלב 3 ( תוצאה )

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

אביב-תשס"ה DBMS, שפות שאילתה: RA19 דוגמאות - המשך lagerGuiness darkTuborg roofCamelot LightBeck btypebname Beer: BeckYossi TuborgYossi GuinessMoshe bnamedname Likes: דוגמא 5 : שמות השתיינים וסוגי הבירות שהם אוהבים.

אביב-תשס"ה DBMS, שפות שאילתה: RA20 btypebeer.bnamelikes.bnamedname lightBeckGuinessMoshe roofCamelotGuinessMoshe lagerGuiness Moshe darkTuborgGuinessMoshe lightBeckTuborgYossi roofCamelotTuborgYossi lagerGuinessTuborgYossi darkTuborg Yossi lightBeck Yossi roofCamelotBeckYossi lagerGuinessBeckYossi darkTuborgBeckYossi דוגמא – שלב 1 likes  beer: likes.bname=beer.bname

אביב-תשס"ה DBMS, שפות שאילתה: RA21 btypebeer.bnamelikes.bnamedname lagerGuiness Moshe darkTuborg Yossi lightBeck Yossi דוגמא – שלב 2  likes.bname=beer.bname (likes  beer):

אביב-תשס"ה DBMS, שפות שאילתה: RA22 דוגמא –שלב 3  dname,btype (  likes.bname=beer.bname (likes  beer)): btypedname lagerMoshe darkYossi lightYossi א ו ע"י שימוש באופרטור שינוי שם:  dname,btype (  lbname=bname ((  bname  lbname likes)  beer))

אביב-תשס"ה DBMS, שפות שאילתה: RA23 צרוף - Join מכפלה קרטזית + בחירה = צירוף (Join): r ⋈ s   condition (r  s) דוגמא : את השאילתה " מהם הפאבים שנמצאים בעיר שיוסי גר בה " יכולנו לכתוב גם כך :  pname (drinker ⋈ pub) condition dname=‘Yossi’  pcity=dcity

אביב-תשס"ה DBMS, שפות שאילתה: RA24 צרוף טבעי - natural join מקרה מיוחד של צרוף שבו תנאי הבחירה הוא שוויון בין כל העמודות שיש להן אותו שם ב-r וב-s: r ⋈ s   attributes of r and s without duplication (  equal values at identically-named attributes (r  s)) כמובן, אופרטור זה מוגדר רק ב-set-of-mappings, כאשר יש שמות לעמודות. למעשה, צרוף טבעי איננו בדיוק צרוף, בגלל פעולת ההיטל.

אביב-תשס"ה DBMS, שפות שאילתה: RA25 צרוף טבעי - המשך אלו פאבים מגישים בירה שיוסי אוהב?  pname (  dname=‘Yossi’ (serves ⋈ likes)) או בצורה יעילה יותר:  pname (serves ⋈  dname=‘Yossi’ likes) יעילות: השאילתה האחרונה יעילה יותר בגלל שהצרוף מבוצע בין טבלאות קטנות יותר, שכבר עברו את פעולת הבחירה.

אביב-תשס"ה DBMS, שפות שאילתה: RA26 צירוף טבעי – דוגמא דוגמא: מה מחזירה השאילתה הבאה?  dname (frequents ⋈  (serves ⋈ likes))

אביב-תשס"ה DBMS, שפות שאילתה: RA27 דוגמא – שלב 1: serves ⋈ likes BeckMartef GuinessHashmura GuinessDarts Tuborg HaShmura bnamepname :serves BeckYossi BeckAvi TuborgYossi GuinessMoshe bnamedname likes: | dnamebnamepname YossiTuborgHaShmura MosheGuinessDarts MosheGuinessHashmura YossiBeckMartef AviBeckMartef serves ⋈ likes: הביטוי serves ⋈ likes נותן שלשות של פאב, בירה ושתיין כך שהפאב מגיש את הבירה והשתיין אוהב אותה

אביב-תשס"ה DBMS, שפות שאילתה: RA28 שלב 2: frequents ⋈  (serves ⋈ likes) MartefAvi MartefYossi DartsYossi HaShmoraMoshe pnamedname :frequents AviBeckMartef YossiBeckMartef MosheGuinessHashmura MosheGuinessDarts YossiTuborg HaShmura dnamebnamepname serves ⋈ likes: AviBeckMartef YossiBeckMartef MosheGuinessHashmura dnamebnamepname frequents ⋈  (serves ⋈ likes): הצירוף עם frequents משאיר רק את השלשות שבהן השתיין גם נוהג לבקר בפאב

אביב-תשס"ה DBMS, שפות שאילתה: RA29 דוגמא – שלב 3 (תוצאה) השאילתה:  dname (frequents ⋈  (serves ⋈ likes)) פתרון: אנשים המבקרים לפחות בפאב אחד המגיש בירה שאהובה עליהם: dname Moshe Yossi Avi

אביב-תשס"ה DBMS, שפות שאילתה: RA30 חילוק אופרטור הצרוף שימושי לשאילתות בסגנון של "קיים" (  ). לשאילתות מסוג "לכל" (  ) יש אופרטור מרוכב אחר: חילוק. התוצאה של r  s היא הרשומות כך שכל השלמה שלהן עם רשומה מ-s נותנת רשומה ב-r. חילוק היא הפעולה ההפוכה, במובן מסוים, למכפלה קרטזית.

אביב-תשס"ה DBMS, שפות שאילתה: RA31 חילוק אם R, S הן הסכמות של הרלציות r, s בהתאמה, אז החילוק מוגדר אם S  R. הסכמה של התוצאה היא R\S. התוכן מוגדר ע"י: r  s   R\S (r) \  R\S ((  R\S (r)  s) \ r)

אביב-תשס"ה DBMS, שפות שאילתה: RA32 חילוק - דוגמא DCBA CB DA 22 r = s = r  s =

אביב-תשס"ה DBMS, שפות שאילתה: RA33 חילוק – דוגמא דוגמא: מי מבקר בכל הפאבים שמגישים בירה "טובורג"? הסבר: עבור השתיינים בתוצאה, לכל פאב שמגיש בירה טובורג, קיימת רשומה מתאימה ב-frequents (המבטאת שהשתיין מבקר בפאב זה). פתרון: frequents   pname (  bname=‘Tuborg’ serves)

אביב-תשס"ה DBMS, שפות שאילתה: RA34 צרוף למחצה - Semijoin צרוף טבעי למחצה (מסומן ב - r ⋉ s) מכיל את כל הרשומות מ-r שמסכימות עם רשומה כלשהי מ-s (על העמודות המשותפות): r ⋉ s   attributes of r (r ⋈ s) היתרון : ⋉ מצמצם, בעוד ש - ⋈ לעיתים מרחיב (יותר יעיל לאחסון תוצאות ביניים של חישוב).

אביב-תשס"ה DBMS, שפות שאילתה: RA35 Semijoin - דוגמא נגדיר את הרלציות: R(A,B), S(B,C), T(A,D), U(D,E),V(C,A) במקום לחשב  A (R(A,B) ⋈ S(B,C) ⋈ T(A,D) ⋈ U(D,E)) ניתן לחשב (  A ((R(A,B) ⋉ S(B,C)) ⋉ (T(A,D) ⋉ U(D,E)) לעומת זאת, את  A (R(A,B) ⋈ S(B,C) ⋈ V(C,A)) לא ניתן לחשב באופן דומה.

אביב-תשס"ה DBMS, שפות שאילתה: RA36 מתי אפשר לחשב שאילתת ⋈ ע"י ⋉ ו-  בלבד? הדבר אפשרי אם ורק אם קיים עץ מקשר שצמתיו הן הסכמות של הרלציות המשתתפות בשאילתה, והשורש שלו מכיל את כל האטריביוטים שעליהם מתבצע ההיטל. הגדרה: עץ מקשר הוא עץ שבו לכל אטריביוט A תת העץ המושרה על הצמתים המכילים את A הוא קשיר.

אביב-תשס"ה DBMS, שפות שאילתה: RA37 Semijoin - המשך בדוגמא האחרונה: המעגליות של האטריביוטים המופיעים בסכמה אינה מאפשרת בניית עץ קשיר. לכן, לא ניתן לבטא את  A (R(A,B) ⋈ S(B,C) ⋈ V(C,A)) באמצעות Semijoin. R(A,B) S(B,C) V(C,A)

אביב-תשס"ה DBMS, שפות שאילתה: RA38 Semijoin - דוגמא עבור  A (R(A,B) ⋈ S(B,C) ⋈ T(A,D) ⋈ U(D,E)) קיים העץ הקשיר הבא: ולכן ניתן לבטא אותה ע"י:  A ((R(A,B) ⋉ S(B,C)) ⋉ (T(A,D) ⋉ U(D,E))). הערה: כיוון ה - ⋉ בתוצאה הוא מלמעלה למטה ואילו הסדר הוא מהעלים לשורש. הסדר בין אחים איננו משנה. R(A,B) S(B,C) T(A,D) U(D,E)

אביב-תשס"ה DBMS, שפות שאילתה: RA39 אלגוריתם לבניית עץ מקשר עבור שאילתת ⋈ : 1. רשום את הסכמות של הרלציות המשתתפות ב - ⋈ 2. בצע עד שאין יותר שינויים: א- אם קיים אטריביוט שמופיע בסכמה בודדת ואינו נמצא בהטלה – מחק אותו. ב- אם קיימת סכמה שמוכלת בסכמה אחרת – מחק אותה. 3. אם נשארה סכמה אחת השווה להטלה - העץ נבנה ע"י מעבר על מחיקות הסכמות, בסדר הפוך: קיימת קשת R i  R j אם R j נמחקה בגלל שהייתה מוכלת ב-R i. 4. אחרת - לא קיים עץ מקשר.

אביב-תשס"ה DBMS, שפות שאילתה: RA40 בניית עץ Semijoin – דוגמא נתון: R 1 (A, B, C), R 2 (B, C, D), R 3 (D, E, F), R 4 (A, G). האם אפשר לחשב את  A (R 1 ⋈ R 2 ⋈ R 3 ⋈ R 4 ) ע"י ⋉ ו-  בלבד? פתרון: נתחיל מכל הסכמות: R 1 (A, B, C) R 2 (B, C, D) R 3 (D, E, F) R 4 (A, G) נמחק את G מ-R 4 : R 1 (A, B, C) R 2 (B, C, D) R 3 (D, E, F) R 4 (A) נמחק את R 4 כי היא מוכלת ב-:R 1 R 1 (A, B, C) R 2 (B, C, D) R 3 (D, E, F) נמחק את E, F מ-R 3 : R 1 (A, B, C) R 2 (B, C, D) R 3 (D) נמחק את R 3 כי היא מוכלת ב-R 2 : R 1 (A, B, C) R 2 (B, C, D) נמחק אתD מ-R 2 : R 1 (A, B, C) R 2 (B, C) נמחק את R 2 כי היא מוכלת ב-R 1 : R 1 (A, B, C) נמחק את B, C מ-R 1 : R 1 (A)

אביב-תשס"ה DBMS, שפות שאילתה: RA41 דוגמא – המשך אי אפשר לבצע עוד שינויים. קיבלנו סכמה אחת השווה. ולכן קיים עץ קשיר: לכן, השאילתה  A (R 1 ⋈ R 2 ⋈ R 3 ⋈ R 4 ) שקולה ל-  A (( R 1 ⋉ ( R 2 ⋉ R 3 )) ⋉ R 4 ). R1R1 R4R4 R3R3 R2R2