Presentation is loading. Please wait.

Presentation is loading. Please wait.

סמן נכון/לא נכון: יכולים להיות 2 חתולים (type)עם אותו שם (name)

Similar presentations


Presentation on theme: "סמן נכון/לא נכון: יכולים להיות 2 חתולים (type)עם אותו שם (name)"— Presentation transcript:

1 סמן נכון/לא נכון: יכולים להיות 2 חתולים (type)עם אותו שם (name)
PID type Person owns Pet name PName age since סמן נכון/לא נכון: יכולים להיות 2 חתולים (type)עם אותו שם (name) יתכן שלכלב פלוטו (שמופיע ביחס) אין בעלים יתכן שלשמעון (שמופיע ביחס) אין חיית מחמד יתכן שלתוכי זיפזיף (שמופיע ביחס) יש 2 בעלים יתכן שלדני (שמופיע ביחס) יש חתול וגם כלב נכון נכון לא נכון לא נכון לא נכון

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

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

4 דוגמה נתונה מערכת לשמירת מידע על סרטים ועל השחקנים ששיחקו בסרטים: Acts
Films Actors nationality fno title year salary id name Films (fno, title, year) Actors (id, name, nationality) Acts (id, fno, salary) מהם ה- relation definitions המתאימים לדיאגרמה זו?

5 בטא באלגברה של יחסים את שמות השחקנים שהלאום שלהם הוא ישראלי
Films (fno, title, year) Actors (id, name, nationality) Acts (id, fno, salary) name(nationality=‘Israel’(Actors))

6 בטא באלגברה של יחסים את שמות השחקנים הישראלים ששיחקו בסרט שהופק בשנת 2000
Films (fno, title, year) Actors (id, name, nationality) Acts (id, fno, salary) name(nationality=‘Israel’year=2000(Actors  Acts  Films)) name (nationality=‘Israel’ (Actors)  Acts  year=2000(Films)) ואפשר גם

7 id(year=1970  year=2000(Acts  Films))
Films (fno, title, year) Actors (id, name, nationality) Acts (id, fno, salary) מספרי זהות של שחקנים ששיחקו בסרט שהופק בשנת 1970 וגם שיחקו בסרט שהופק בשנת 2000 מה נכון? id(year=1970  year=2000(Acts  Films)) id(year=1970  year=2000(Acts  Films)) id(year=1970(Acts  Films))  id(year=2000(Acts  Films)) id(A1.id=A2.id  A1.fno=F1.fno  A2.fno=F2.fno  F1.year=1970  F2.year=2000 (ρ (A1,Acts) x ρ (A2,Acts) x ρ(F1,Films) x ρ(F2,Films))

8 מספרי זהות של שחקנים שלא שיחקו בסרט שהופק בשנת 2000
Films (fno, title, year) Actors (id, name, nationality) Acts (id, fno, salary) מספרי זהות של שחקנים שלא שיחקו בסרט שהופק בשנת 2000 מה נכון? id(year2000(Acts  Films)) id(Actors)  id(year=2000(Acts  Films)) ואם רוצים את שמות כל השחקנים שלא שיחקו בסרט שהופק בשנת 2000? name(Actors)  name(year=2000(Acts  Films)) name{[id(Actors)  id(year=2000(Acts  Films))]  Actors}

9 to (Flights)-to (from=‘TelAviv’ (Flights))
2004A Q3 Flights(fno, from, to, distance, departs, arrives) מצא את כל הערים שמגיעות אליהן טיסות אבל אין אליהן טיסות ישירות מתל אביב. באלגברה של יחסים: to (Flights)-to (from=‘TelAviv’ (Flights)) ב SQL: Select distinct to from flights Minus /where to not in Select distinct to from flights where from=‘TelAviv’;

10 Sportsman(spid, sname, age, country)
Coach(coid, cname, age, country) Coaches(coid, spid, salary) Names of all coaches from Germany Names of all sportsmen who are either from Jordan or are between the ages 20 and 30 The ages of the coaches who coach the sportsman with spid=2234 Names of all coaches who coach more than one sportsman Names of all coaches who do not coach a sportsman who is over the age of 40 Names of the coaches who coach all sportsmen

11 answers

12 2003A Q2 (modified) Aircrafts(aid, aname, cruisingrange)
כתוב שאילתה ב SQL המוצאת מספרי מטוסים שטווח הטיסה שלהם גדול מטווחי כל מטוסי ה ‘boeing 747’. Select a.aid from aircrafts a Where a.cruisingrange>all(select a2.cruisingrange from aircrafts a2 where a2.aname=‘Boeing 747’);

13 2003B Q5 Suppliers(sid, sname, city) מה היחס בין תוצאות שתי השאילתות?
Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’ Union all (select sid from suppliers where sname like ‘%Smith’) מה היחס בין תוצאות שתי השאילתות? התוצאה של Q2 תמיד מכילה את התוצאה של Q1 ולא להיפך. למשל אם יש את הרשומה הבודדת (11,’J. Smith’,’jerusalem’)

14 2003B Q5 Suppliers(sid, sname, city) מה היחס בין תוצאות שתי השאילתות?
Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’ Union (select sid from suppliers where sname like ‘%Smith’) מה היחס בין תוצאות שתי השאילתות? השאילתות תמיד מחזירות אותה תוצאה. ואם sid לא מפתח? התוצאה של Q1 תמיד מכילה את התוצאה של Q2 ולא להיפך. למשל אם יש את שתי הרשומות (11,’J. Smith’,’Tel Aviv’) (11,’Moshe’,’Jerusalem’)

15 R(A,B,C,D) 2004A Q11 1 2 Select A from R where B=12 and C=2
מה היחס בין התוצאות של 1 ו -2? 1 2 Select A from R where B=12 and C=2 (Select A from R where B=12) Intersect (select A from R where C=2); D C B A 2 12 1 1 1 D C B A 3 12 2 1 null 2

16

17 Students(studID, studName, studAge) Plays(studID, sportName) Sport(sportName, stadium)
שמות הסטודנטים שמשתתפים בספורט כלשהו Select S.studName from Students S, Plays P Where S.studID=P.studID

18 From Students S, Plays P, Sport SP
Students(studID, studName, studAge) Plays(studID, sportName) Sport(sportName, stadium) שמות הסטודנטים שמשחקים באצטדיון Golden Arena Select S.studName From Students S, Plays P, Sport SP Where S.studID=P.studID and P.sportName=SP.sportName and SP.stadium=’Golden Arena’

19 Students(studID, studName, studAge) Plays(studID, sportName) Sport(sportName, stadium)
select studID from Plays P minus select studID from Plays P1, Plays P2 where P1.studID=P2.studID and P1.sportName!=P2.sportName

20 Students(studID, studName, studAge) Plays(studID, sportName) Sport(sportName, stadium)
studID של הסטודנטים שמשחקים בדיוק בספורט אחד (ע"י שימוש ב group by) select studID from Plays P Group by studID Having count(*)=1;

21 Students(studID, studName, studAge) Plays(studID, sportName) Sport(sportName, stadium)
שמות הסטודנטים שמשחקים בדיוק בספורט אחד select studName from Students S, Plays P Where S.studID=P.studID Group by S.studID, S.studName Having count(*)=1;

22 Students(studID, studName, studAge) Plays(studID, sportName) Sport(sportName, stadium)
select students.studID from students S where not exists ( select * from plays, sport where plays.sportName=sport.sportName and S.studID=plays.studID and S.studName<=sport.stadium)

23 StudID של סטודנטים ששמם "גדול" משמות כל האיצטדיונים בהם הם משחקים
Students(studID, studName, studAge) Plays(studID, sportName) Sport(sportName, stadium) StudID של סטודנטים ששמם "גדול" משמות כל האיצטדיונים בהם הם משחקים select students.studID from students S where S.studName > all ( select stadium from plays, sport where plays.sportName=sport.sportName and S.studID=plays.studID ) דרך נוספת:

24 להלן הגדרות יחסים בבסיס נתונים כלשהו:
Worker(id, name, age, city); Belongs(id, deptNum, salary); Department(deptNum, managerId, budget); כתוב את השאילתות הבאות ב SQL: מצא את שמות העובדים השייכים ליותר מ-10 מחלקות Select name from worker, belongs where worker.id=belongs.id Group by worker.id Having count(deptNum)>10; מצא את שמות העובדים עם משכורת מצטברת גדולה מ משכורת מצטברת של עובד היא סכום המשכורות שהוא מקבל מכל המחלקות בהן הוא מועסק. Select Name from worker, belongs Where worker.id=belongs.id Having sum(salary)>5000;

25 סמן נכון/לא נכון: כאשר קיים אינדקס מקובץ, תמיד כדאי להשתמש בו לגישה לנתונים אם כל שאר הפרמטרים קבועים, כאשר מקטינים את גודל ה buffer, עולה הכדאיות של שימוש ב block-nested loop לעומת index-nested loop בצירוף טבעי בין יחסים R(A,B) ו S(B,C), כאשר שניהם ממוינים לפי B, זמן הריצה של sort-merge join הוא תמיד לינארי במס' הבלוקים של R ו S עבור אינדקס מסוג עץ B+ על שדה X, נאמר שהוא מקובץ אם ערכי X המופיעים בעלים שלו ממוינים לא נכון לא נכון לא נכון לא נכון

26 מה מכילה הטבלה secretTable2 לאחר הרצת הקוד הבא:
Create table secretTable2(colA integer, colB integer); CREATE FUNCTION secretFunc2() RETURNS trigger AS $$ BEGIN If new.colA>10 then Insert into secretTable2 values(new.colA-new.colB, 2*new.ColB); end if; return new; END; $$ LANGUAGE plpgsql; CREATE TRIGGER secretTrig2 after INSERT or UPDATE on secretTable2 FOR EACH ROW execute procedure secretFunc2(); insert into secretTable2 values(50,10); תשובה: colB colA 10 50 20 40 80 -20

27

28

29

30 א. כן. החיתוך של שתי התבניות הוא AE, שמהווה מפתח של התבנית הראשונה
ב. דוגמא לפירוק עפ"י האלגוריתם: פירוק ל CED ו ABCEHI את ABCEHI מפרקים ל BEH ו ABCEI מפרקים את ABCEI ל CA ו BCEI מפרקים את BCEI ל EB ו CEI סה"כ התקבל הפירוק: CDE, BEH, AC, BE, CEI הפירוק אינו משמר ת"פ, למשל את DB ג. כיסוי קנוני: F’={AB->D, AB->C,C->A,E->B,E->H,D->B} מפתחות: AEI, CEI ואז האלגוריתם מייצר את הפירוק: ABCD, BEH, CEI (נשים לב שאיחדנו כאן ת"פ עם צד ימין זהה לפני יצירת התבניות, ניתן גם להימנע מכך ולקבל יותר תבניות)

31 2006b T1 T2 T3 R(A) W(A) R(C) W(C) נתון תזמון S:

32 2006b נתון R=ABCDE F={A->DE, C->DB, B->CE, CE->A}
Fc={A->D, A->E,C->D,C->B,B->C,B->E,CE->A} מצא את כל המפתחות של R B, C מצא פירוק משמר תלויות ומשמר מידע ל R AD, AE, CD, BC, BE, CEA

33 2003A Q7 {a,b} {c} Support=60%, confidence=30%
Supp({a,b}->{c}) = supp({a,b,c}) =< supp({a,c}) = supp({a}->{c}) Conf({a,b}->{c})= supp({a,b,c})/ supp({a,b}) Conf({a}->{c})= supp({a,c})/ supp({a}) {a} {c}


Download ppt "סמן נכון/לא נכון: יכולים להיות 2 חתולים (type)עם אותו שם (name)"

Similar presentations


Ads by Google