310 likes | 808 Views
תיכון בסיס הנתונים. איריס צור ברגורי bargury@bezeqint.net. תיכון בסיס נתונים- למה?. סטודנט ( ת.ז. , שם, כתובת, טלפון, מס-קורס , שם-קורס, רכז, נ"ז) יתרונות – חסרונות -. תיכון בסיס הנתונים – מה נלמד?. 1NF טעויות בתיכון בסיסי נתונים תלויות פונקציונליות פירוק
E N D
תיכון בסיס הנתונים איריס צור ברגורי bargury@bezeqint.net
תיכון בסיס נתונים- למה? סטודנט (ת.ז., שם, כתובת, טלפון, מס-קורס, שם-קורס, רכז, נ"ז) יתרונות – חסרונות -
תיכון בסיס הנתונים – מה נלמד? • 1NF • טעויות בתיכון בסיסי נתונים • תלויות פונקציונליות • פירוק • BCNF • 3NF
-1NF צורה נורמלית ראשונה • תחום הוא אטומיאם מרכיביו לא ניתנים לא ניתנים לפירוק. (כתובת-רחוב בית מספר) • תבנית יחס R היא בצורה נורמלית ראשונה אם התחומים של כל התכונות ב-R אטומיים. • ערכים שאינם אטומיים מסבכים את אחסון הנתונים ומעודדים מידע כפול. • אנו מניחים שכל היחסים נמצאים בצורה נורמלית ראשונה – 1NF.(בנינו ER)
בעיות בתיכון בסיס נתונים • תיכון בסיס נתונים דורש שנמצא אוסף "טוב" של תבניות יחסים. תיכון גרוע עשוי לגרור: • מידע כפול • חוסר יכול לייצג מידע מסוים • מטרות התיכון: • להימנע ממידע כפול • לוודא שהיחסים בין התכונות מיוצגים • לוודא שלא תהיה הפרת אילוצים במצב של עדכון בסיס הנתונים.
המטרה • לקבוע האם יחס R בצורה "טובה". • במקרה שיחס R אינו בצורה "טובה", פרק אותו ליחסים {R1, R2, ..., Rn} כך ש: • כל יחס בצורה "טובה" • הפרוק משמר מידע – לא יתווסף מידע בחיבור מחדש • התיאוריה מבוססת על תלויות פונקציונליות.
תלויות פונקציונליות • אילוצים על אוסף יחסים (מפתחות / מידות ריבוי) • דורשים שהערכים באוסף תכונות יקבע באופן חד ערכי את הערכים של אוסף תכונות אחר. • בעזרת הכללת התלויות הפונקציונליות מגדירים מפתח • תהא R סכמת יחס. R וגם R התלות הפונקציונלית חלה על R אם ורק אם לכל יחס r(R), אם כל שתי שורות t1 ו- t2שמסכימות על תכונות , מסכימות גם על תכונות . ז"א t1[] = t2 [] t1[ ] = t2 [ ] • כל תכונות היחס תלויות פונקציונאלית במפתח היחס
תלויות פונקציונליות –דוגמאמהמדריך Emp(id, dept, manager) מהתלות השלישית נסיק כי מהעובדה כי XYZ לא נובע כי XZ או YZ.
תלויות פונקציונליות - המשך • תלות פונקציונלית היא טריוויאלית אם היא מתקיימת תמיד לכל המופעים של יחס. באופן כללי: היא טריוויאלית אם • K הוא מפתח על של תבנית יחס R אם ורק אם KR. • K הוא מפתח קביל עבור R אם ורק אם • KRוגם • אין אף תת קבוצה K עבורה R (מפתח קביל – אין תכונות עודפות במפתח) • הערה: מופע מסוים של תבנית יחסים יכול לקיים תלות פונקציונלית למרות שהתלות לא חלה על כל המופעים האפשריים.
תלויות פונקציונליות - דוגמא • מצאו תלויות לא טריוויאליות • מצאו מפתחות
תלויות פונקציונליות - דוגמא R=(A,B,C,D) F={AB , B C} • האם ניתן להסיק תלויות נוספות? • מהו המפתח של התבנית R? מסקנה – כל תכונה שאינה תלויה באף תכונה אחרת (אינה מופיעה בצד ימין) חייבת להיות מוכלת בכל מפתח קביל של היחס
סגור של אוסף תלויות פונקציונליות • בהינתן אוסף תלויות פונקציונליות, יש תלויות פונקציונליות נוספות שנובעות מ-F. • למשל, אם A B ו- B C אז ניתן להסיק כי A C. • אוסף כל התלויות הפונקציונליות שנובעות לוגית מ-F היא הסגור של F. מסומן ב-F+. • ניתן לחשב את +F על ידי הפעלת האקסיומות הבאות: • רפלקסיביות: אם אזי . • טרנזיטיביות: אם וגם אז . • איחוד: אם וגם אזי • פירוק: אם אזי וגם . • חישוב הסגור מתוך קבוצת תלויות פונקציונליות עשוי להיות תהליך ממושך ומיגע.
דוגמא R = (A, B, C, G, H, I)F = { A BA CGC HCG IB H} • חלק מ-+F הוא: • AH- טרנזיטיביות • CG HI - איחוד • AG I - מתוך A C יחד עם CG I.
סגור של קבוצת תכונות • בהינתן אוסף תכונות X, נגדיר את הסגור של X תחת F (מסומן +X) כאוסף התכונות שתלויות פונקציונלית ב-X תחת F: X Y ב-+FYX+ • האלגוריתם לחישוב +X, הסגור של X תחת F הוא: result :=X;while (changes to result) do for each in F do if result then result := result
דוגמא (המשך הדוגמא הקודמת) R = (A, B, C, G, H, I) F = {A B, A C, CG H, CG I, B H} • (AG)+ • 1.result = AG • 2.result = ABCG (A C and A B) • 3.result = ABCGH (CG H and CG AGBC) • 4.result = ABCGHI (CG I and CG AGBCH) • האם AG מפתח קביל? • האם AG מפתח על? • האם תת קבוצה כלשהי של AG מפתח?
תכונה שלא תלויה פונקציונלית באף תכונה אחרת, חייבת להיכלל בכל מפתח קביל אם תכונה או קב' תכונות הן מפתח קביל – לא צריך לבדוק קבוצות המכילות אותן אם הסגור של קבוצת תכונות מכיל מפתח אזי גם קבוצת התכונות היא מפתח מציאת מפתח קביל
חיפוש מפתחות על כדי לבדוק אם A מפתח על, מחשבים את +A ובודקים אם הוא מכיל את כל התכונות של R. חיפוש תלויות פונקציונליות כדי לבדוק אם התלות הפונקציונלית XY מתקיימת (האם היא ב-+F) נבדוק אם Y X+ נחשב את +X ונבדוק האם הוא מכיל את Y. חישוב הסגור של F כל תת קבוצה R, ניתן לחשב את הסגור +, ולכל S + יוצרים את התלות הפונקציונאלית S שימושים לסגור של קבוצת תכונות
כיסוי קנוני • באוסף תלויות פונקציונליות יתכנו תלויות מיותרות שניתן להסיק מאחרות. • ייתכן גם שחלקים של תלויות פונקציונליות מיותרים. • באופן אינטואיטיבי, כיסוי קנוני של F הוא אוסף "מינימלי" של תלויות פונקציונליות השקול ל-F, ואין בו תלויות עודפות, או חלקי תלויות עודפות. תכונות עודפות • בהינתן אוסף תלויות פונקציונליות F ותלות ב-F • התכונה Aעודפת ב- אם A וניתן להסיק מ-F את התלות (–A) • התכונה Bעודפת ב- אם B וניתן להסיק מ- (F– {}) {(–B)} את התלות B.
בדיקה האם תכונה עודפת בהינתן אוסף תלויות פונקציונליות F ותלות פונקציונאלית ב-F • כדי לבדוק אם תכונה A עודפת ב- • חשבו ({} – A)+ תוך שימוש באוסף התלויות הפונקציונליות F • בדקו ש-({} – A)+ מכיל את , אם כן – A עודפת. • כדי לבדוק שתכונה B עודפת ב- • חשבו את + תוך שימוש רק בתלויות המופיעות ב- F’=(F– {}) {(–A)} • בדקו ש- + מכיל את B, אם כן, B עודפת
כיסוי קנוני • כיסוי קנוני של F הוא אוסף תלויות פונקציונליות Fc המקיים: • F גורר לוגית את כל התלויות הפונקציונליות ב- Fc • Fc גורר לוגית את כל התלויות הפונקציונליות ב-F • אין אף תלות ב- Fc המכילה תכונות עודפות • צד שמאל של כל אחת מהתלויות הפונקציונליות ב- Fc הוא ייחודי.
כיסוי קנוני אלגוריתם לחישוב כיסוי קנוני ל-F: השתמש בכלל האיחוד כדי להחליף את התלויות 11 ו- 12 בתלות 112 חפש תלות פונקציונלית המכילה תכונה עודפת ב- או ב- אם נמצאה תכונה עודפת, מחק אותה מ- חזור להתחלה עד שלא ניתן לשנות יותר את F - לאחר מחיקת כמה תכונות עודפות ייתכן וניתן יהיה שוב לאחד תלויות.
כיסוי קנוני - דוגמא R= (A ,B, C) F= {ABC , BC , AB , ABC} מצא כיסוי קנוני
פירוק מהו? או"פ ( ת.ז.-סטודנט , שם-סטודנט , שם-קורס , מס'-קורס ) 1 אפרת א 111 1 אפרת ב 222 2 יעל א 333 פרוקים אפשריים: סטודנטים(ת.ז. , שם , שם-קורס ) סטודנטים(ת.ז. , שם , מס'-קורס ) קורסים (מס'-קורס, שם-קורס ) קורסים (מס'-קורס, שם-קורס ) משמר מידע סטודנטים קורסים = או"פ המוטיבציה לפירוק – בסיס נתונים בלי מידע כפול
פירוק • כל התכונות של תבנית יחס (R) חייבות להופיע בפירוק(R1, R2): R = R1 R2 • על הפירוק להיות משמר מידע. ז"א לכל יחס r(R) מתקיים: • פירוק של R ל- R1 ו- R2 הוא פירוק משמר מידע אם מתקיים לפחות אחד מהתנאים הבאים: • R1 R2R1 • R1 R2R2 • כשמפרקים יחס R עם אוסף תלויות פונקציונליות F ליחסים R1, R2,.., Rn מעונינים ב: • פירוק משמר מידע – אחרת הפרוק יגרור איבוד מידע • חוסר כפילויות – כל יחס מהיחסים המפורקים יהיה באחת מהצורות הנורמליות הבאות: BCNF או 3NF. • שימור תלויות – יהי Fiאוסף התלויות הפונקציונליות מתוך +F המכילות רק תכונות מ- Ri.. על הפירוק להיות משמר תלויות, דהיינו: (F1 F2 … Fn)+ = F+
הצורה הנורמלית של Boyce-Codd BCNF תבנית יחס R נמצאת ב-BCNF ביחס לאוסף תלויות פונקציונאליות F אם לכל התלויות הפונקציונליות ב-+F מהצורה כאשר Rמתקיים לפחות אחד מהתנאים הבאים: • התלות היא טריוויאלית ( ) • מפתח של R
אלגוריתם פירוק ל-BCNF • R תבנית יחסים, F אוסף התלויות הפונקציונליות החלות עליה. • תהא X Y תלות שמפרה BCNF • נפרק את R ל-2 תבניות: • R1=(X,Y) • R2=(R-Y) • הערה: הפירוק משמר מידע. • הערה: לא תמיד ניתן להגיע לפירוק BCNF המשמר תלויות.
דוגמא לפירוק ל-BCNF R=(A , B , C , D , E) F={ ABDE , CDE , DAE , CA} R=(A , B , C , D , E , G) F={ AEG, EBD, BCAG, BG, CDA}
הצורה הנורמלית השלישית 3NF • ישנם מצבים בהם • BCNF אינו משמר תלויות ו- • חשוב לבדוק מהר בעדכונים אם מתקיימות כל התלויות הפונקציונליות • פתרון: נגדיר צורה נורמלית חלשה יותר: צורה נורמלית שלישית • מאפשרת כפילות מסוימת • ניתן לבדוק תלויות פונקציונליות על היחסים עצמם • תמיד יש פירוק משמר מידע ומשמר תלויות ב-3NF. • תבנית יחס R נמצאת ב-3NF אם לכל תלות ב-+F מתקיים לפחות אחד מהתנאים הבאים: • תלות טריוויאלית ( ) • מפתח של R • כל תכונה A ב- – מוכלת במפתח קביל של R • הערה: כל תכונה יכולה להשתייך למפתח שונה.
אלגוריתם לפירוק 3NF R תבנית יחס, ו- Fc כיסוי קנוני ל-F. i=0 לכל תלות ב- Fc בצע: אם אף אחת מתבניות היחסים Rj,1 j i אינה מכילה את , i=i+1 Ri := אם אף אחת מתבניות היחסים אינה מכילה מפתח קביל כלשהו של R אזי i=i+1 Ri- מפתח קביל כלשהו של R. • האלגוריתם מבטיח: • כל אחת מהתבניות שנוצרה ב-3NF. • הפירוק משמר מידע ומשמר תלויות.
השוואה בין 2 הפירוקים • תמיד ניתן לפרק יחס ליחסים ב-3NF. • הפירוק משמר מידע • הפירוק משמר תלויות • תמיד ניתן לפרק יחס ליחסים ב-BCNF. • הפרוק משמר מידע • הפירוק לא תמיד משמר תלויות. • ליחס ב-3NF שאינו ב-BCNF יתכן: • כפילות מידע • צורך בערכי NULL.