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היא תכונה עודפת (בצד שמאל) בתלות XYאם אפשר להסיק מ F -את התלות (X,A)Y .3נבדוק שאף תלות אינה ניתנת להסקה מהתלויות האחרות .אם כן :נסיר את התלות .נחפש להגיע לאותה תלות בלי שימוש בתלות עצמה אלא בכל התלויות האחרות פירוק 3NFיישמר מידע ותלויות. תמיד אפשר להשיג פירוק ל.3NF- פירוק BCNFמחמיר יותר מ 3NF-אך לא תמיד ניתן להשיג פירוק BCNFשמשמר תלויות. פירוק ל BCNFהוא בוודאות 3NFאבל לא להפך! פירוק משמר מידע מציאת מפתחות קבילים - .1חשבו כיסוי מינימלי של קבוצת התלויות .2חלקו את התכונות לשלוש קבוצות תכונות הכרחיות :תכונות שלא מופיעות אף פעם בצד ימין של אף אחת מהתלויות בכיסוי המינמלי תכונות לא-שימושיות :תכונות שמופיעות רק בצד ימין של התלויות. תכונות אפשריות :תכונות שמופיעות בחלק מהתלויות בצד ימין ובחלק מהתלויות בצד שמאל. .3בדקו האם קבוצת התכונות ההכרחיות היא מפתח על ידי חישוב הסגור שלה .אם כן עצור. אחרת: