שיעור 13 – 05/01/14
תרגול לקראת מבחן
מבנה המבחן –
-
שאלת שרטוט.
-
כתיבת שאילתה על השרטוט.
-
שאלת כתיבה – UNION.
-
שאלת כתיבה – זוגות.
-
שאלת כתיבה – תת שאילתה מתואמת / שיעור פדיון.
שאלה:
-
לחברת טיולים יש מגוון של טיולים לחו"ל.
-
בכל טיול ישנם הרבה מטיילים.
-
בכל טיול ישנה אפשרות למספר מדריכים.
-
כל מדריך יכול להדריך במספר טיולים.
-
לכל טיול קוד משלו.
-
למספר מצומצם ביותר של מדריכים ישנה התמחות ספציפית לדוגמה (היסטוריה, גיאוגרפיה, חובש).
-
שרטט את מבנה מסד הנתונים ERD.
-
יש לבצע את הפעולה הבאה – הצג את סכום הפדיון מכלל הטיולים בחודשי הקיץ / חורף השונים.
פתרון:
סיווג טבלאות:
טיולים – בסיס
טיולים ומטיילים – קשר
מטיילים – בסיס
טיולים ומדריכים – קשר
מדריכים – בסיס
התמחויות – הרחבה
מחלקות – טבלת בסיס אשר הופכת את טבלת "טיולים" לטבלת משנה
-
יש צורך לוודא שכל השדות הנדרשים לחישוב נמצאים בטבלאות שבנינו ולבנות את השאילתה ידנית.
שאלה:
-
לכל מטייל מה שיעור המחיר ששילם מתוך סכום הפדיון של הטיולים שמשתתף בהם.
קוד מטייל |
קוד טיול |
מחיר בפועל |
10 |
1 |
1000 |
10 |
2 |
3000 |
10 |
3 |
2500 |
11 |
2 |
700 |
11 |
4 |
800 |
11 |
6 |
1900 |
12 |
6 |
3100 |
12 |
1 |
4100 |
13 |
4 |
3000 |
13 |
3 |
800 |
13 |
2 |
750 |
פתרון:
מטייל |
טיול |
מחיר |
שיעור המחיר |
שיעור מטיול |
10 |
1 |
1000 |
|
|
10 |
2 |
3000 |
||
10 |
3 |
2500 |
פעולת WHERE חיה בעולם פרטני ולכן לא יהיו בו אף פעם פונקציות אלא רק בעזרת תת שאילתה. תת השאילתה תחזיר תשובה אחת אשר תקיים את הפונקציה.
דוגמה: הצג לכל טיול או מטייל את המחיר הגבוה ממוצע מחירי הטיולים. כך באמצעות תת שאילתה נמצא את ממוצע מחירי הטיולים אשר יחזור כתשובה אחת בלבד (ממוצע) אשר תוצב בפונקצית ה-WHERE.
פעולת HAVING מטפלת במצב של קבוצה.
דוגמה: האם סכום המחירים של מטייל ספציפי גבוה מממוצע מחירי הטיולים.
פעולת SELECT תציג את הממוצע ולא רק תחשב אותו.
פעולת FROM תשתמש בתת שאילתה כטבלה חדשה שתיבנה.
תת שאילתה מתואמת – מאפשרת להציג אינפורמציה על קטעים מסוימים מהטבלה, למשל רק על קוד מטייל.
-
הצג את זוגות המטיילים שהיו יחד באותו טיול באותו חודש ושגרים באותה עיר – ב-ON זה תמיד יהיה השונה בין המפתחות. ב-WHERE יהיה שווה לקריטריון ההשוואה.
האם קשר LS או RS יכול להיות לכיוון המפתח הזר? מפתח זר יכול להכיל רק נתונים משותפים עם המפתח הראשי (שגיאה בהבנה). RS ו-LS נועדו כדי להוציא את כלל הנתונים.