
a7648a2a868625c6fc1d3d966d917996.ppt
- Количество слайдов: 46
תיאוריית תכנון סכמות למסדי נתונים יחסיים 2 חלק Design Theory for Relational Databases Part 2 1
1 דוגמה Student Course Teacher S Levy Cohen Levy C OS DB DB Logic T Jones Smith White היחס C → T מקיים את הת"פ S → C ואינו מקיים את הת"פ 2
2 דוגמה Student Department Head S D H היחס Levy CS Rubin Cohen Math Bush Barak CS Rubin S → D מקיים את הת"פ D → H ומקיים את הת"פ S → H לפיכך, היחס מקיים גם את הת"פ 3
בקיצור ת"פ X → Y מתקיימת ביחס r אם כל שתי רשומות ששוות על X הנן שוות גם על Y קבוצת ת"פ F גוררת ת"פ X → Y אם כל יחס שמקיים את F מקיים גם את X → Y הסימון של גרירה: F ⊨ X → Y אם אין גרירה, אז יש דוגמה נגדית, כלומר יחס שמקיים את F ואינו מקיים את X → Y 4
דוגמה לדוגמה נגדית היחס C B A 1 1 0 0 הוא דוגמה נגדית לגרירה A → B, B → C ⊨ C → A 5
עוד דוגמה לדוגמה נגדית היחס C B A 1 1 1 0 הוא דוגמה נגדית לגרירה A → B, C → B ⊨ C → A 6
השימושים של ת"פ מבטאות אילוצים ) (constraints צריך לדאוג לכך שהנתונים האגורים במסד הנתונים יקיימו את האילוצים בנוסף לכך, הת"פ )וגם אילוצים מסוגים אחרים( מאפשרות לזהות סכמות בעייתיות 7
כפילויות ) (Redundancy סכמה גורמת לכפילויות אם ביחס מופיע אותו מידע במספר רשומות; להלן דוגמאות: ביחס של דוגמה 1, המידע לגבי המורה של קורס מופיע ברשומות של כל הסטודנטים בקורס ביחס של דוגמה 2, המידע לגבי ראש מחלקה מופיע ברשומות של כל הסטודנטים של המחלקה 8
מדוע כפילויות מהוות בעיה? ראשית, בזבוז של מקום בזכרון שנית, כפילויות גורמות לאנומליות מסוגים שונים: אנומליה של הוספה ) (insertion anomaly אנומליה של מחיקה ) (deletion anomaly אנומליה של עדכון ) (update anomaly 9
אנומליה של הוספה ביחס של דוגמה 1 קיימות מספר בעיות הקשורות להוספה של רשומות חדשות איך אפשר להוסיף קורס ומורה כשעדיין אין מידע לגבי תלמידים בקורס? באופן דומה, איך אפשר להוסיף תלמיד לקורס כשעדיין לא ידוע מי המורה? כשמוסיפים רשומה מלאה, יש לוודא שהמידע לגבי מורה הקורס תואם את המידע הקיים 01
אנומליה של מחיקה ביחס של דוגמה 1 קיימות מספר בעיות הקשורות למחיקה של רשומות קיימות אם מוחקים את התלמיד האחרון בקורס, נמחק גם המידע לגבי מורה הקורס אם רוצים למחוק את המידע לגבי מורה הקורס, צריך למחוק את כל הרשומות של התלמידים בקורס 11
אנומליה של עדכון ביחס של דוגמה 1 קיימת בעיה הקשורה לעדכונים אם רוצים לשנות את המורה של אחד הקורסים, צריך לבצע את השינוי ברשומות של כל תלמידי הקורס 21
איך נאפיין סכמה בעייתית? בדוגמה 1 מקור הבעיה הוא הת"פ C → T זוהי ת"פ שאמורה להתקיים ביחס, אבל צידה השמאלי איננו מפתח של היחס )כלומר, C אינו קובע את כל שאר האטריביוטים, אלא רק את (T 31
מדוע חשוב לדעת מתי יש גרירה? נתונה לנו סכמה , R קרי קבוצת אטריביוטים ונתונה קבוצה של ת"פ F שהיחסים עבור R צריכים לקיים האם היחסים עבור R מקיימים ת"פ X → Y שצידה השמאלי אינו קובע כל האטריביוטים של ? R אם כן, הסכמה בעייתית באופן פורמלי, האם קיימים X ו- Y כך ש- F ⊨ X → Y וגם F ⊭ X → R 41
הגדרה של מפתח ומפתח-על בעזרת המושג של גרירה ניתן להגדיר באופן פורמלי מפתח ) (key ומפתח-על ) (superkey בהינתן סכמה R וקבוצת ת"פ , F מפתח-על של R הוא קבוצת אטריביוטים , X ⊆ R כך ש- ⊨ F X→R X הוא מפתח אם F ⊨ X → R ואם אין Z ⊊ X כך ש- F ⊨ Z → R מפתח הוא גם מפתח-על, אבל לא להיפך 51
אפיון סכמה בעייתית )שנית( נתונה לנו סכמה , R קרי קבוצת אטריביוטים ונתונה קבוצה של ת"פ F שהיחסים עבור R צריכים לקיים הסכמה בעייתית אם קימת ת"פ X → Y כך ש- F⊨X→Y ו- X אינו מפתח-על 61
איך נבדוק מתי יש גרירה? יש גרירה F ⊨ X → Y אם אין דוגמה נגדית לפיכך, נחפש דוגמה נגדית יש אינסוף יחסים אפשריים עבור סכמה נתונה )בהנחה שהתחום של הערכים הנו אינסופי( לפיכך, חיפוש דוגמה נגדית הוא תהליך שאיננו בהכרח עוצר 71
האקסיומות של ארמסטרונג רפלקסיביות: אם אוגמנטציה )הוספה(: אם אז אם ו- אז טרנזיטיביות: אז 81
אקסיומות נוספות איחוד: אם ו- , אז פירוק: אם , אז וגם פסודו-טרנזיטיביות: אם ו- , אז 91
גזירה של ת"פ בהינתן קבוצה F של ת"פ, ניתן לגזור מהן ת"פ נוספות בעזרת האקסיומות, לדוגמה תהי: להלן גזירה של 1. 2. 3. 4. 5. מ- F )נתון ב- (F )אוגמנטציה של 1 עם (AB )נתון ב- (F )אוגמנטציה של 3 עם (ABC )טרנזיטיביות של 2 ו- 4( 02
הגדרה של גזירה מקבוצה F של גזירה של ת"פ היא סדרה סופית של ת"פ, שמקיימת את שני הדברים הבאים: כל ת"פ בסדרה שייכת ל- , F נובעת מרפלקסיביות או נובעת מת"פ קודמות בסדרה, לפי אוגמנטציה או טרנזיטיביות בנוסף, הסדרה מסתיימת בת"פ 12
נאותות ושלמות של האקסיומות X F ⊢ X → Y פירושו שיש גזירה של → Y מ- F X F ⊨ X → Y פירושו שיש גרירה של → Y מ- F האקסיומות של ארמסטרונג הנן נאותות ושלמות, כלומר F⊨X→Y⇔F⊢X→Y 22
איך נבדוק האם יש גזירה? המושגים של גרירה וגזירה הנם שקולים, ולכן במקום לבדוק האם יש גרירה אפשר לבדוק האם יש גזירה יש מספר סופי של ת"פ שניתן לרשום בעזרת קבוצה סופית של אטריביוטים ולכן, בהינתן קבוצה של ת"פ, יש מספר סופי של גזירות )בגזירה אין צורך לחזור על אותה ת"פ פעמיים( 32
אלגוריתם לבדיקה F ⊢ X → Y נייצר את כל הסדרות האפשריות )ללא חזרות( של ת"פ, תוך שימוש באטריביוטים המופיעים ב- F נבדוק עבור כל סדרה האם היא גזירה של X → Y מ- F עדיין יש מספר אקספוננציאלי של גזירות אפשריות 42
סגור של קבוצת אטריביוטים הסגור של קבוצת אטריביוטים , הוא לקבוצת ת"פ , סימון כלומר, קבוצת כל האטריביוטים מ- לגזור את אם ברור מההקשר, אז מסמנים ביחס כך שניתן 52
הלמה של הסגור גזיר מ- אם ורק אם למה: הוכחה: הלמה נובעת מההגדרה של הסגור ומהאקסיומות של האיחוד והפירוק. 62
דוגמה 3 } F = {A → C, B → D, DE → H, DK → G נבדוק האם F ⊢ ABK → HG ע"י חישוב הסגור +) (ABK אם הצד השמאלי של ת"פ מוכל בסגור, אז גם הצד הימני מוכל בסגור נתחיל עם ABK בגלל A → C נוסיף את C לסגור, ונקבל ABKC 72
דוגמה 3 )המשך( } F = {A → C, B → D, DE → H, DK → G נתחיל עם ABK בגלל A → C נוסיף את C לסגור, ונקבל ABKC בגלל B → D נוסיף את D לסגור, ונקבל ABKCD בגלל DK → G נוסיף את G לסגור, ונקבל ABKCDG 82
דוגמה 3 )המשך( אין ב- F אף ת"פ נוספת שצידה השמאלי מוכל בסגור, אבל צידה הימני עדיין אינו מוכל בסגור לפיכך, הסגור הוא ABKCDG מסקנה: הת"פ ABK → G נגזרת מ- , F אבל ABK → H איננה נגזרת מ- F לכן, ABK → HG איננה נגזרת מ- F 92
אלגוריתם לחישוב הסגור נתונה קבוצה של ת"פ F וקבוצת אטריביוטים X ורוצים לחשב את + X V: =X כל זמן שיש ב- F ת"פ , Y → Z כך ש- , Y ⊆ V אז מוסיפים את Z ל- , V כלומר V : = V ∪ Z זמן ריצה ריבועי בעזרת מבנה נתונים מתאים, זמן ריצה לינארי 03
הוכחת נכונות של האלגוריתם ראשית מראים שהאלגוריתם נאות, כלומר אם האלגוריתם מוסיף אטריביוט A לסגור, אז F ⊢ X → A מראים זאת באינדוקציה על מספר האיטרציה שבה מתווסף A לסגור, תוך שימוש באקסיומות 13
הוכחת נכונות )המשך( הוכחה סינטקטית מראים שאם יש גזירה של X → Y מ- F אז האלגוריתם מוסיף את כל האטריביוטים של Y לסגור ההוכחה באינדוקציה על אורך הגזירה הוכחה סמנטית מראים שאם בסיום האלגוריתם, Y אינו מוכל בסגור, אז יש דוגמה נגדית לגרירה F ⊨ X → Y 23
סגור של קבוצת ת"פ תהי F קבוצה של ת"פ הסגור של , F סימון + , F הוא קבוצת כל הת"פ הנגררות מ- ) F או באופן שקול, הנגזרות מ- , (F כלומר } F+ = { X → Y | F ⊨ X → Y } F+ = { X → Y | F ⊢ X → Y 33
שקילות של קבוצות של ת"פ שתי קבוצות F ו- G של ת"פ הנן שקולות אם יש להן אותו הסגור, כלומר + G+ = F הסגור + F יכול להיות בגודל אקספוננציאלי ביחס ל- F לכן, חישוב הסגור דורש זמן אקספוננציאלי אפשר, לדוגמה, לחשב את הסגור של F ע"י כך שמחשבים את הסגור של כל קבוצת אטריביוטים 43
דוגמה 4 } F = { A → B, B → C, A → C } G = { A → B, B → C ברור ש- + G+ = F ב- F יש ת"פ מיותרת 53
דוגמה 5 } F = { A → B, AB → C } G = { A → B, A → C גם בדוגמה זו מתקיים + G+ = F ברור ש- A → B בסגור של שניהם ברור ש- AB → C נגרר מ- A → C צריך להראות ש- A → C נגרר מ- F מראים זאת ע"י חישוב הסגור של A לפי F ב- F יש ת"פ עם אטריביוט מיותר )בצד שמאל( 63
כיסוי חסר כפילויות בהינתן קבוצה F של ת"פ, כיסוי חסר כפילויות ) (non-redundant cover הנו קבוצה , G כך ש- + , G+ = F ובנוסף G מקיימת את התנאים הבאים: לכל ת"פ ב- G אטריביוט בודד בצד ימין אין אטריביוט מיותר באף ת"פ של G אין ב- G אף ת"פ מיותרת 73
אלגוריתם למציאת כיסוי חסר כפילויות של F עוברים שוב ושוב על F ובודקים האם יש ת"פ מיותרת או אטריביוט מיותר בצד שמאל של אחת הת"פ אם כן, מוחקים את הת"פ או האטריביוט המיותרים האלגוריתם מסתיים כשאין אף ת"פ או אטריביוט מיותרים 83
דוגמה 6 תהי F קבוצת הת"פ הבאה: } {AD → C, A → D, AC → B, B → D, BC → E 93
שיפור האלגוריתם כדי לשפר את האלגוריתם, צריך למצוא דרך שמאפשרת לבדוק כל אטריביוט וכל ת"פ פעם אחת בלבד שלב 1: עוברים על כל אחד מהאטריביוטים בצדי שמאל של הת"פ ובודקים אם הוא מיותר; אם כן מוחקים אותו שלב 2: עוברים על כל אחת מהת"פ ובודקים אם היא מיותרת; אם כן מוחקים אותה 04
נכונות האלגוריתם המשופר צריך להראות שאטריביוט או ת"פ אינם יכולים להפוך למיותרים בהמשך האלגוריתם אם לא היו כאלה כאשר נבדקו 14
בדיקה האם אטריביוט הנו מיותר הבדיקה האם אטריביוט B הנו מיותר היא מהצורה G⊢X-B→A כאשר G שקול ל- F המקורי ו- X → A שייכת ל- G 24
הוכחת נכונות – חלק 1 נניח שבודקים אם B מיותר בצעד מסוים והתוצאה שלילית, כלומר G ⊬ X - B → A חוזרים ובודקים בצעד מאוחר יותר ואז התוצאה חיובית, כלומר G 1 ⊢ X 1 - B → A G ו- 1 G שקולות, כי הן שקולות ל- F המקורי כמו כן, ) X 1 ⊆ X כי אטריביוטים רק נמחקים( לכן, אם G 1 ⊢ X 1 - B → A אז , G ⊢ X - B → A בסתירה להנחה 34
בדיקה האם ת"פ הנה מיותרת הבדיקה האם ת"פ הנה מיותרת היא מהצורה G – {X → A} ⊢ X → A כאשר G שקול ל- F המקורי ו- X → A שייכת ל- G 44
הוכחת נכונות – חלק 2 נניח שבודקים אם X → A מיותרת בצעד מסוים והתוצאה שלילית, כלומר G – {X → A} ⊬ X → A חוזרים ובודקים בצעד מאוחר יותר ואז התוצאה חיובית, כלומר G 1 – {X → A} ⊢ X → A קבוצת הת"פ } G – {X → A איננה בהכרח שקולה ל- } G 1 – {X → A 54
הוכחת נכונות – חלק 2 )המשך( אבל } ) G 1 – {X → A} ⊆ G – {X → A כי ת"פ רק נמחקות והשלב של מחיקת אטריביוטים הסתיים( לכן, אם G 1 – {X → A} ⊢ X → A אז , G – {X → A} ⊢ X → A בסתירה להנחה 64
a7648a2a868625c6fc1d3d966d917996.ppt