Uploaded by Ron Sharabi

דף נוסחאות בסיסי

advertisement
‫‪RxS‬‬
‫סוגי מפתחות‪:‬‬
‫‪B‬‬
‫‪S.A‬‬
‫‪D‬‬
‫‪C‬‬
‫‪R.A‬‬
‫‪b1‬‬
‫‪a1‬‬
‫‪d1‬‬
‫‪c1‬‬
‫‪a1‬‬
‫‪b2‬‬
‫‪a2‬‬
‫‪d1‬‬
‫‪c1‬‬
‫‪a1‬‬
‫‪b1‬‬
‫‪a1‬‬
‫‪d2‬‬
‫‪c2‬‬
‫‪a2‬‬
‫‪b2‬‬
‫‪a2‬‬
‫‪d2‬‬
‫‪c2‬‬
‫‪a2‬‬
‫‪b1‬‬
‫‪a1‬‬
‫‪d3‬‬
‫‪c3‬‬
‫‪a3‬‬
‫‪ – SuperKey‬תת קבוצת שדות (לא מינמלי) שמזהים רשומה‪.‬‬
‫‪b2‬‬
‫‪a2‬‬
‫‪d3‬‬
‫‪c3‬‬
‫‪a3‬‬
‫‪ – CandidateKey‬תת קבוצת שדות(מינימלי) שמזהים רשומה‪.‬‬
‫‪ - Key‬שדה (אחד או יותר) המאפשר הבחנה בין רשומות וזיהוי חד‪-‬ערכי של כל רשומה‬
‫ברלציה‪.‬‬
‫‪ – PrimaryKey‬אחד מה ‪.CandiKey‬‬
‫‪ – ForeignKey‬שדה (שדות) שמתייחס למפתח של רלצייה אחרת‪.‬‬
‫אילוצים‪:‬‬
‫ריק!!‬
‫מינימלי‪,‬‬
‫להיות‬
‫מפתח חייב‬
‫כל עוד קיימות רשומות בטבלאות בן‪.‬‬
‫ולאשינוי‬
‫ביטול‪/‬‬
‫לאפשר‬
‫‪ -Restricted‬לא‬
‫טיפ ‪:‬לרוב בשימוש כשמבקשים‬
‫למצוא משהו שמתקיים‬
‫לכל משהו אחר‪.‬‬
‫‪ – Nullify‬לאפשר ביטול\שינוי ולאפס את ערכי המפתח הזר בתנאי שאינם‬
‫ממפתח ראשי בטבלה‪.‬‬
‫חלק‬
‫‪ – Cascade‬לאפשר ביטול\שינוי וביטול\שינוי רשומות בן תואמות‬
‫‪ – SetDefault‬לאפשר ביטול\שינוי ולקבוע ערך ברירת מחדל‪.‬‬
‫( ‪WITH regional_sales AS‬‬
‫‪SELECT region,‬‬
‫‪SUM(amount) AS‬‬
‫‪UNION- with dupes‬‬
‫‪total_sales‬‬
‫‪UNION ALL-no dupes‬‬
‫‪FROM orders‬‬
‫‪GROUP BY region‬‬
‫( ‪WITH RECURSIVE cte_org AS‬‬
‫‪SELECT staff_id, first_name, manager_id‬‬
‫‪FROM staffs WHERE manager_id IS‬‬
‫‪NULL‬‬
‫‪UNION ALL‬‬
‫‪SELECT e.staff_id, e.first_name,‬‬
‫‪e.manager_id‬‬
‫נרמול –‬
‫‪FROM staffs e INNER JOIN cte_org o‬‬
‫אטומיים‪.‬‬
‫הערכים‬
‫כל‬
‫‪,‬‬
‫‪NULL‬‬
‫ולא‬
‫ייחודי‬
‫הוא‬
‫מפתח‪,‬‬
‫יש‬
‫‪– 1NF‬‬
‫‪ON o.staff_id = e.manager_id‬‬
‫רלציה המורכבת‬
‫מ‪ 2 -‬תכונות‬
‫תמיד מקיימת‬
‫‪.BCNF‬‬
‫‪ – 2NF‬כל שדה שאינו מתפתח תלוי בכל שדות המפתח‪.‬‬
‫‪ – 3NF‬כל שדה שאינו מפתח אינו תלוי באף שדה אחר שאינו‬
‫המפתח‬
‫‪ – BCNF‬מתקיים אם לכל ‪ X Y ,X Y‬היא תלות טריוויאלית‬
‫נירמול ‪- BCNF‬‬
‫צעד ‪ :1‬חפש קשר ‪ X->Y‬אשר מפר את מצב‬
‫‪ .BCNF‬אם לא נמצא קשר כזה‪ ,‬סיים‪.‬‬
‫צעד ‪ :2‬חשב ‪X+‬‬
‫צעד ‪ :3‬פרק את הטבלה ‪ R‬ל‪ X+ -‬ול‪(R-X+) U X -‬‬
‫צעד ‪ :4‬חזור על התהליך ברקורסיה עבור כל‬
‫אלגוריתם למציאת כיסוי מינימלי (קנוני)‪:‬‬
‫טבלה‪.‬‬
‫‪ .1‬נפרק תלויות אשר מכילות בצד ימין יותר מתכונה אחת‪.‬‬
‫‪.BC-> AD - BC->A & BC->D‬‬
‫‪ .2‬נבדוק שאין תכונות עודפות בצידי שמאל של התלויות‪:‬‬
‫תכונה ‪ A  X‬היא תכונה עודפת (בצד שמאל) בתלות ‪ XY‬אם אפשר‬
‫להסיק מ‪ F -‬את התלות ‪(X,A)Y‬‬
‫‪.3‬נבדוק שאף תלות אינה ניתנת להסקה מהתלויות‬
‫האחרות‪ .‬אם כן‪ :‬נסיר את התלות‪ .‬נחפש להגיע לאותה‬
‫תלות בלי שימוש בתלות עצמה אלא בכל התלויות האחרות‬
‫פירוק ‪ 3NF‬יישמר מידע ותלויות‪.‬‬
‫תמיד אפשר להשיג פירוק ל‪.3NF-‬‬
‫פירוק ‪ BCNF‬מחמיר יותר מ‪ 3NF-‬אך לא תמיד ניתן‬
‫להשיג פירוק ‪ BCNF‬שמשמר תלויות‪.‬‬
‫פירוק ל‪ BCNF‬הוא בוודאות ‪ 3NF‬אבל לא להפך!‬
‫פירוק משמר‬
‫מידע‬
‫מציאת מפתחות קבילים ‪-‬‬
‫‪.1‬חשבו כיסוי מינימלי של קבוצת התלויות‬
‫‪ .2‬חלקו את התכונות לשלוש קבוצות‬
‫תכונות הכרחיות‪ :‬תכונות שלא מופיעות אף פעם בצד ימין של אף אחת מהתלויות בכיסוי‬
‫המינמלי‬
‫תכונות לא‪-‬שימושיות‪ :‬תכונות שמופיעות רק בצד ימין של התלויות‪.‬‬
‫תכונות אפשריות‪ :‬תכונות שמופיעות בחלק מהתלויות בצד ימין ובחלק מהתלויות בצד‬
‫שמאל‪.‬‬
‫‪ .3‬בדקו האם קבוצת התכונות ההכרחיות היא מפתח על ידי חישוב הסגור שלה‪ .‬אם כן עצור‪.‬‬
‫אחרת‪:‬‬
Download