Presentation is loading. Please wait.

Presentation is loading. Please wait.

4 July 2007 נרמול מסד הנתונים.

Similar presentations


Presentation on theme: "4 July 2007 נרמול מסד הנתונים."— Presentation transcript:

1 4 July 2007 נרמול מסד הנתונים

2 תכנון סכמות רלציוניות איזה תכנון טוב יותר? Customer Ordered CustOrders
Track Faculty Cust_Id Software CS 12345 Hardware EE 45678 IS IE 11111 Accounting 22222 Book_Name Cust_Id Database Systems 12345 Anatomy 45678 Database And Knowledge 11111 Intro. To Economy 22222 איזה תכנון טוב יותר? CustOrders Book_Name Track Faculty Cust_Id Database Systems Software CS 12345 Anatomy Hardware EE 45678 Database And Knowledge IS IE 11111 Intro. To Economy Accounting 22222 DBMS, Design

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

4 תכנון – כללי (המשך) תכנון טוב:
מונע כפילויות. מאפשר עדכונים יעילים. פשוט ככל האפשר. בלי יותר מדי טבלאות. כלי אחד לתכנון – בניית מודל ישויות-קשרים (ERD). כלי נוסף – תלויות פונקציונליות. DBMS, Design

5 מוסכמות סימון תכונות בודדות נסמן באותיות לועזיות מתחילת הא"ב: A,B….
קבוצות של תכונות נסמן באותיות מסוף הא"ב: X,Y…. לפעמים נקצר ונרשום A במקום {A} או AB במקום {A,B}. סכמות של רלציות נסמן באותיות גדולות R,S,T…. למשל R={A,B,C} או R(A,B,C) או R[A,B,C]. את תוכן הרלציות נסמן באותיות קטנות: r,s,t…. למשל r={(1,2,3),(2,1,4)} (עיר, מספר תושבים, אזור)R {(כרמיאל, 70,000, גליל), (צפת, 40,000, גליל), (ב"ש, 40,000, גליל)}=r מתקיים עיר -> מס' תושבים בצורה זהה f היא תלות ו-F היא קבוצה של תלויות DBMS, Design

6 תלויות פונקציונליות Functional Dependency
4 July 2007 תלויות פונקציונליות Functional Dependency הגדרה תהי R(A1,A2,..An) סכמה רלציונית, תהי r רלציה מעל הסכמה R, ויהיו X,Y⊆R קבוצות תכונות. נאמר ש-r מקיימת את התלות הפונקציונאלית X→Y, אם לכל שתי רשומות בעלות ערכים זהים בתכונות של X, יש ערכים זהים בתכונות של Y. נסמן זאת r ⊧ X→Y ניסוח שונה: אם לכל שתי n-יות t1,t2∈r כך ש-πx(t2)=πx(t1) מתקיים ש- πy(t2)=πy(t1) נאמר ש-r מקיימת את X→Y התלויות הפונקציונליות מאפשרות לנו לזהות או להגדיר את הקשרים השונים בין העמודות השונות בטבלה. כשידועים לנו הקשרים האלו אנו מסוגלים לפרק את הטבלה הגדולה למספר טבלאות קטנות יותר כך שהקשרים בין העמודות יישמרו (שימור תלויות) וגם שהמידע שאנו מייצגים לא ישתנה (שימור מידע) לשים דגש על ההבדל בין רלציה r לבין סכמה R. דוגמה: (עיר, מספר תושבים, אזור)R {(כרמיאל, 70,000, גליל), (צפת, 40,000, גליל), (ב"ש, 40,000, גליל)}=r מתקיים עיר -> מס' תושבים DBMS, Design

7 4 July 2007 תלויות פונקציונאליות הגדרה: תהי R סכמה רלציונית, תהי r רלציה מעל הסכמה R , ותהי F קבוצה של תלויות פונקציונאליות מעל R. r מקיימת את F (סימון r ⊧ F) אם לכל תלות פונקציונאלית f ב-F מתקיים: r ⊧ f. הגדרה: תהי R סכמה רלציונית, תהי r רלציה מעל הסכמה R, ותהי f תלות פונקציונאלית מעל R. f נובעת מ-F (סימון: F ⊧ f) אם לכל רלציה r מעל הסכמה R מתקיים: אם r ⊧ F אזי מתקיים r ⊧ f הגדרה ראשונה: במילים אחרות, r מקיימת את F גדולה אם היא מקיימת בנפרד את כל אחת מהתלויות הפונקציונליות המוכלות ב-F גדולה. בהגדרה השנייה: להדגיש ש-f לא דווקא מוכלת ב-F אבל יכולה להיות מוכלת ב-F F נובעת מ-F אומר שכל הרלציות שמקיימות את F מקיימות גם את f. לכן השימוש באותו סימן עבור "מקיים" ועבור "נובע". שים לב: אין שימוש ברעיון של סכמה R המקיימת את f. זה מפני שסכמה אינה יכולה לקיים תלות פונקציונלית. אפשר לדבר על הסכמה R תחת קבוצת התלויות הפונקציונליות F המקיימת f מסויימת. DBMS, Design

8 4 July 2007 תלויות פונקציונאליות אקסיומות ארמסטרונג: אלו הן שלושה כללי היסק להוכחת קיום של תלויות: בהנתן X,Y,Z,W ⊆R מתקיים: רפלקסיביות: אם X⊆Y אז Y→X . הכללה: אם X →Y אז XZ →YZ . טרנזיטיביות: אם X →Y ו- Y →Z אז X →Z . כללי היסק נוספים: איחוד: אם X →Y ו- X →Z אז X →YZ . פירוק: אם X →Y ו- Z⊆Y אז X →Z . טרנזיטיביות למחצה: אם X →Y ו- WY →Z אז WX →Z . שלושת כללי היסק הנוספים נובעים מאקסיומות אמסטרונג. כלומר, הם ניתנים להוכחה מתוך האקסיומות. DBMS, Design

9 ד'/כסלו/תשע"ט4 July 2007 תלויות פונקציונאליות דוגמה: נתון F={Cust_Id→Track,Track→Faculty} נראה ש- F ⊦ Cust_Id→ {Track,Faculty}: Track → Faculty ∈ F Track → {Track,Faculty} 1, הכללה Cust_Id → Track ∈ F Cust_Id → {Track,Faculty} 3, 2, טרנזיטיביות DBMS, Design

10 4 July 2007 תלויות פונקציונאליות הגדרה: תהי F קבוצת תלויות פונקציונאליות ותהי f תלות פונקציונלית. מ-F ניתן להוכיח את f (סימון F ⊦ f) אם אפשר להסיק את f מ-F באמצעות אקסיומות ארמסטרונג. כלומר, בהינתן לנוF , ניתן לכתוב הוכחה פורמלית עבור f. DBMS, Design

11 תלויות פונקציונאליות שימו לב:
"⊦" מבטא "ניתן להוכחה" או "ניתן להסקה" (לפי המערכת של ארמסטרונג). " ⊨ " מבטא "נובע" (במובן של קיום התלויות ע"י כל הרלציות האפשריות המתאימות). משפט: לכל תלות פונקציונלית f וקבוצת תלויות פונקציונלית F, מתקיים: F ⊦ f אם ורק אם F ⊧ f. במילים אחרות: אקסיומות ארמסטרונג הן נאותות ושלמות: שלמות: אפשר להוכיח באמצעותן כל דבר נכון. נאותות: אפשר להוכיח באמצעותן רק דברים נכונים. כלומר, בכל מקום שבו נרצה לדעת אם תלות "נובעת" נוכל לענות ב"היא ניתנת להסקה" או "היא לא ניתנת להסקה." DBMS, Design

12 סגור של תלויות פונקציונאלית
4 July 2007 סגור של תלויות פונקציונאלית הגדרה: תהי F קבוצת תלויות פונקציונאליות. הסגור של F (סימון: F+) הוא: {X→Y | F ⊧ X→Y }. דוגמא: מצא F+ של F={A →B,B →C}. ב F+ תהיינה בין היתר התלויות הפונקציונאליות הבאות: A →C, AB →C, AC →C, B →B, A →B, ∅ → ∅, C → ∅ הסגור של F הוא בגודל אקספוננציאלי ולכן נשתדל מתי שאפשר להמנע מלחשב אותו. DBMS, Design

13 4 July 2007 סגור של תכונה הגדרה: תהי X קבוצת תכונות. ותהי F קבוצת תלויות פונקציונאליות. הסגור של X בהינתן F (סימון: X+F ) הוא: {A | F ⊦ X→A}. (A הוא תכונה בודדת) DBMS, Design

14 סגור של תכונה אלגוריתם לחישוב X+F : S ← X Repeat For each (Y→ Z) in F
4 July 2007 סגור של תכונה אלגוריתם לחישוב X+F : S ← X Repeat For each (Y→ Z) in F If Y⊆S then S←S⋃Z until no more changes to S. return S DBMS, Design

15 סגור של תכונה: דוגמה נתון F = {A→B,A →E,BC→D,E→C}, R(A, B, C, D, E). נחשב את A+F: S←{A} S={A} A→BF {A}S S←S{B} S={A,B} A→EF {A}S S←S{E} S={A,B,E} E→CF {E}S S←S{C} S={A,B,C,E} BC→DF {B,C}S S←S{D} S={A,B,C,D,E} פלט: A+F={A,B,C,D,E} להדגיש את החשיבות של המעבר האחרון על כל התלויות על מנת לוודא שאין שינויים. DBMS, Design

16 כיסוי מינימאלי בקבוצת תלויות פונקציונליות יכול להיות מידע עם חזרות.
4 July 2007 כיסוי מינימאלי בקבוצת תלויות פונקציונליות יכול להיות מידע עם חזרות. דוגמה: שתי הקבוצות F={A→B, B→C,A→C} G={A→B,B→C} הן "שקולות", במובן ש- F+ = G+. התלות AC ב-F היא מידע שחוזר על עצמו. מטרה: להביא את כל קבוצות התלויות פונקציונליות לצורה אחידה. DBMS, Design 16

17 כיסוי מינימאלי תהיינה F,G קבוצות תלויות פונקציונליות.
4 July 2007 כיסוי מינימאלי תהיינה F,G קבוצות תלויות פונקציונליות. G היא כיסוי של F (ולהפך) אם F+ = G+. במקרה זה ניתן לכל צורך להשתמש ב-G במקום F ולהפך. כיסוי מינימאלי (minimal cover) של F הוא קבוצת תלויות פונקציונליות FC כך ש-FC היא גם כיסוי של F וגם מינימאלית. הכיסוי המינימאלי אינו בהכרח יחיד להדגיש את ההפרדה ל-Fc הוא כיסוי ול-Fc הוא מינימלי. מה זה מינימלי נראה בשקף הבא. DBMS, Design 17

18 4 July 2007 כיסוי מינימאלי הגדרה: תהי F קבוצת תלויות פונקציונליות. F היא מינימאלית אם לכל תלות X→Y ∈ F מתקיימות שלוש הדרישות הבאות: |Y| = 1 F+ ≠ (F \ {X → Y})+ ( אין ב-F תלויות "מיותרות".) לכל Z ⊂ X מתקיים F+ ≠ ((F \ {X → Y})  {Z → Y})+ ( אין ב-F תלות A → X שבה X מכילה תכונות "מיותרות".) כדאי לשים דגש על כך שזו הגדרה של מה זה קבוצת תלויות מינימאלית. בשקף הבא נראה איך אפשר למצוא ל-F כיסוי שיהיה מינימאלי. כלומר, קבוצת תלויות פונקציונאליות שיהיו שקולות לחלוטין ל-F לכל צורך אבל שהקבוצה תהיה מינימאלית. בסעיף 2 ניתן להראות במקום זה ש- F\ {X  Y} ⊬ X  Y או Y ⊈ X+F\ {X  Y} בסעיף 3 ניתן להראות במקום זה ש- לכל BX F ⊬ (X \ B)  Y או Y ⊈ (X \ B)+F בסעיף 3 אנחנו מראים למעשה שניתן להחליף AB->C בתלות חזקה יותר A->C (כי ניתן להגיע בקלות מהשנייה לראשונה). זה ניתן לביצוע אם ניתן להסיק את A->C מתוך F. ואז ברור שאם גם A->C וגם AB->C נמצאים בסגור אזי AB->C מיותרת. DBMS, Design 18

19 אלגוריתם למציאת כיסוי מינימאלי של קבוצת תלויות פונקציונליות F
4 July 2007 אלגוריתם למציאת כיסוי מינימאלי של קבוצת תלויות פונקציונליות F G ← {(X→ A) | Y ((X →Y) ∈ F  A ∈ Y)}; Repeat For each f = X → A ∈ G do if A ∈ X+G\ {f} then G ← G\ {f}; For each f = X → A ∈ G and B ∈ X do if A∈(X\{B})+G then G←(G\{X → A})  {X\{B} → A}; until no more changes to G בסעיף 2 בהתאם לדוגמא מסעיף 3 בשקף הקודם אנחנו בודקים אם C מוכל בסגור של A ובכך מראים ש-A->C מתקיים ולכן AB->C מיותר. DBMS, Design 19

20 מציאת כיסוי מינימאלי - דוגמה
נתון R(A,B,C,D) F={A → B, BC → A, ABC → D, D → A} יש למצוא כיסוי מינימאלי של F. בצעד ראשון נקבל G←F. נפעיל את שלב 1: אין שינוי נפעיל את שלב 2: נוריד A מ- → D ABC, מכיוון ש-D ∈ ({A,B,C}\{A})+G . קיבלנו: G={A → B, BC → A, BC → D, D → A} נפעיל את שלב 1: נוריד את התלות BC → A, מכיוון ש- A ∈ BC+G\ {BC →A} קיבלנו: G={A → B, BC → D, D → A} אין יותר שינויים, ולכן G הנ"ל הוא כיסוי מינימאלי של F. DBMS, Design

21 מפתחות הגדרה: תהי R סכמה רלציונית, תהי X⊆R קבוצת תכונות, ותהי F קבוצת תלויות פונקציונליות. X הוא על-מפתח של R אם ורק אם F ⊨ X→R. במילים אחרות: X הוא על-מפתח של R אם ורק אם X → R ∈ F+. X הוא על-מפתח של R אם ורק אם R= XF+ DBMS, Design

22 מפתחות - המשך דוגמה: נתון: R(A, B, C, D), F = {A→ C, B → D}.
ABC הוא על-מפתח של R, אך איננו העל-מפתח היחיד וגם לא המינימלי. הגדרה: X הוא מפתח קביל של R אם הוא על-מפתח של R, ולא קיים Y X, כך ש-Y הוא גם על-מפתח של R. DBMS, Design

23 ד'/כסלו/תשע"ט4 July 2007 חורף 09/08 מועד א' נתון יחס r מעל סכמה U(A,B,C). כתבו תוכנית datalog הבודקת האם ישנן הפרות של התלות הפונקציונלית AB ב-r. על התוכנית לחשב פרדיקט p כך שמשמעות התוכנית תהיה p(1) כאשר אין הפרה של התלות הפונקציונלית ו-p(0) כאשר ישנה הפרה של התלות הפונקציונלית. DBMS, Design

24 המשך לא. דוגמא נגדית: U(A,B) F={A B} המפתח המינימלי היחידי הוא A ו-
ד'/כסלו/תשע"ט4 July 2007 המשך נתונה סכמה U ונתונה קבוצה F לא ריקה של תלויות פונקציונליות לא טריביאליות מעל U. הניחו כי התלויות הפונקציונליות ב-F הן כולן מהצורה XA כאשר A תכונה יחידה. הוכיחו או הפריכו את הטענות הבאות: טענה: לכל תלות פונקציונלית לא טריוויאלית XA ב-F קיים מפתח קביל K כך ש-AK. האם הטענה נכונה? לא. דוגמא נגדית: U(A,B) F={A B} המפתח המינימלי היחידי הוא A ו- DBMS, Design

25 ד'/כסלו/תשע"ט4 July 2007 המשך טענה: לכל מפתח קביל K, קיימת תלות פונקציונלית לא טריוויאלית XA ב-F כך ש-AK. האם הטענה נכונה? כן. לא ייתכן ש K=U כי אחרת F לא מכילה אף תלות פונקציונלית לא טריוויאלית. לפיכך, קיים A∈U כך ש- K ∉ A מכיוון ש-K מפתח, מתקיים K+ A∈ לכל K+ B∈ מתקיים לפחות אחד מהשניים הבאים: 1. B∈K 2. קיים ב-F כך ש- K+ B∈ לכן, קיים x A ב-F ו- K+ ∉ A DBMS, Design

26 ד'/כסלו/תשע"ט4 July 2007 המשך טענה: מספר המפתחות הקבילים הוא לכל היותר כמספר האטריבוטים בסכמה U (לכל קבוצת תלויות). האם הטענה נכונה? לא. נניח U=(A,B,C,D) F={AB CD, AC BD, AB CD, AD BC, BD AC, CD AB} אז AB, AC, AD, BC, BD, CD הם 6 מפתחות קבילים בעוד שישנם רק 4 אטריביוטים. DBMS, Design

27 ד'/כסלו/תשע"ט4 July 2007 המשך תהי Fc כיסוי מינימלי של F. תהי L קבוצת כל התכונות המופיעות בצד שמאל של תלות פונקציונלית ב-Fc. תהי R קבוצת כל התכונות המופיעה בצד ימין של תלות פונקציונלית ב-Fc. כלומר, L={B | exists XAFc such that BX} ו- R={A | exists XAFc}. טענה: אם RL= אז קיים מפתח קביל יחיד. האם הטענה נכונה? כן. U\R הוא על-מפתח, כי בחישוב הסגור שלו אפשר להפעיל את כל התלויות ב-F. בנוסף, אם קבוצה X אינה מכילה תכונה B מ-U\R, אז הסגור לא יכול להכיל את B כי כל הפעלה של תלות יכולה רק להוסיף איברים מ-R. לכן U\R הוא המפתח הקביל היחידי DBMS, Design


Download ppt "4 July 2007 נרמול מסד הנתונים."

Similar presentations


Ads by Google