המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 2

מצגות קשורות


מצגת בנושא: "תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 2"— תמליל מצגת:

1 תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 2
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 2 Design Theory for Relational Databases Part 2

2 סיכום הנושא של תלויות פונקציונליות, גרירה וגזירה

3 השימושים של ת"פ (תלויות פונקציונליות)
השימושים של ת"פ (תלויות פונקציונליות) ת"פ מבטאות אילוצים (constraints) צריך לדאוג לכך שכל יחס במסד הנתונים יקיים את האילוצים ששייכים לסכמה שלו בנוסף לכך, הת"פ (וגם אילוצים מסוגים אחרים) מאפשרות לזהות סכמות בעייתיות

4 יש גרירה אם אין דוגמה נגדית
היחס הוא דוגמה נגדית לגרירה A → B, B → C ⊨ C → A כלומר, A → B, B → C ⊭ C → A A B C 1

5 עוד דוגמה של דוגמה נגדית
היחס מראה ש- A → B, C → B ⊭ C → A A B C 1

6 דוגמה של גזירה כל ת"פ בגזירה שייכת ל- F, נובעת מרפלקסיביות או נובעת מת"פ קודמות בסדרה, לפי אוגמנטציה או טרנזיטיביות; לדוגמה להלן גזירה של מ- F (נתון ב- F) (אוגמנטציה של 1 עם AB) (נתון ב- F) (אוגמנטציה של 3 עם ABC) (טרנזיטיביות של 2 ו- 4)

7 נאותות ושלמות של האקסיומות
F ⊢ X → Y פירושו שיש גזירה של X → Y מ- F F ⊨ X → Y פירושו שיש גרירה של X → Y מ- F האקסיומות של ארמסטרונג הנן נאותות ושלמות, כלומר F ⊨ X → Y ⇔ F ⊢ X → Y

8 איך נבדוק מתי יש גרירה? יש גרירה F ⊨ X → Y אם אין דוגמה נגדית
לפיכך, נחפש דוגמה נגדית יש אינסוף יחסים אפשריים עבור סכמה נתונה (בהנחה שהתחום של הערכים המופיעים בעמודות הנו אינסופי) לפיכך, חיפוש דוגמה נגדית הוא תהליך שאינו בהכרח עוצר

9 איך נבדוק האם יש גזירה? המושגים של גרירה וגזירה הנם שקולים, ולכן במקום לבדוק האם יש גרירה אפשר לבדוק האם יש גזירה יש מספר סופי של ת"פ שניתן לרשום בעזרת קבוצה סופית של אטריביוטים ולכן, בהינתן קבוצה של ת"פ, יש מספר סופי של גזירות (בגזירה אין צורך לחזור על אותה ת"פ פעמיים)

10 אלגוריתם לבדיקה F ⊢ X → Y נייצר את כל הסדרות האפשריות (ללא חזרות) של ת"פ, תוך שימוש באטריביוטים המופיעים ב- F נבדוק עבור כל סדרה האם היא גזירה של X → Y מ- F עדיין יש מספר אקספוננציאלי של גזירות אפשריות

11 אלגוריתם יעיל לבדיקה האם יש גזירה F ⊢ X → Y

12 סגור של קבוצת אטריביוטים
הסגור של קבוצת אטריביוטים ביחס לקבוצת ת"פ , סימון , הוא כלומר, קבוצת כל האטריביוטים כך שניתן לגזור את מ- אם ברור מההקשר, אז מסמנים

13 הלמה של הסגור למה: גזיר מ- אם ורק אם
למה: גזיר מ- אם ורק אם הוכחה: הלמה נובעת מההגדרה של הסגור ומהאקסיומות של האיחוד והפירוק. הערה: מהגדרת הסגור ומאקסיומת הרפלקסיביות נובע ש- +X ⊆ X

14 דוגמה לחישוב הסגור F = {A → C, B → D, DE → H, DK → G}
נבדוק האם F ⊢ ABK → HG ע"י חישוב הסגור (ABK)+ אם הצד השמאלי של ת"פ מ- F מוכל בסגור, אז גם הצד הימני מוכל בסגור נתחיל עם ABK בגלל A → C נוסיף את C לסגור, ונקבל ABKC

15 דוגמה לחישוב הסגור (המשך)
F = {A → C, B → D, DE → H, DK → G} נתחיל עם ABK בגלל A → C נוסיף את C לסגור, ונקבל ABKC בגלל B → D נוסיף את D לסגור, ונקבל ABKCD בגלל DK → G נוסיף את G לסגור, ונקבל ABKCDG

16 דוגמה לחישוב הסגור (המשך)
אין ב- F אף ת"פ נוספת שצידה השמאלי מוכל בסגור, אבל צידה הימני עדיין אינו מוכל בסגור לפיכך, הסגור הוא ABKCDG מסקנה: הת"פ ABK → G נגזרת מ- F, אבל ABK → H איננה נגזרת מ- F לכן, ABK → HG איננה נגזרת מ- F

17 אלגוריתם יעיל לחישוב הסגור
נתונה קבוצה של ת"פ F וקבוצת אטריביוטים X ורוצים לחשב את X+ V:=X כל זמן שיש ב- F ת"פ Y → Z, כך ש- Y ⊆ V, אז מוסיפים את Z ל- V, כלומר V := V ∪ Z האלגוריתם עוצר כשאי אפשר להוסיף אטריביוטים ל- V זמן ריצה ריבועי בעזרת מבנה נתונים מתאים, זמן ריצה לינארי

18 הוכחת נכונות האלגוריתם

19 בהוכחה שני שלבים נאותות – צריך להראות שהאלגוריתם מוסיף לסגור המחושב רק אטריביוטים שאומנם נמצאים בסגור לפי ההגדרה שלמות – צריך להראות שהאלגוריתם מוסיף לסגור המחושב את כל האטריביוטים שנמצאים בסגור לפי ההגדרה

20 הוכחת הנאותות של האלגוריתם
צריך להראות שאם האלגוריתם מוסיף אטריביוט A לסגור, אז F ⊢ X → A מראים זאת באינדוקציה על מספר האיטרציה שבה מתווסף A לסגור, תוך שימוש באקסיומות של ארמסטרונג

21 הוכחת השלמות של האלגוריתם
אפשרות א': הוכחה סינטקטית מראים שאם יש גזירה של X → Y מ- F אז האלגוריתם מוסיף את כל האטריביוטים של Y לסגור ההוכחה באינדוקציה על אורך הגזירה אפשרות ב': הוכחה סמנטית מראים שאם בסיום האלגוריתם, Y אינו מוכל בסגור, אז יש דוגמה נגדית לגרירה F ⊨ X → Y

22 מפתח ומפתח-על Key and Super-Key

23 בעזרת המושגים של ת"פ ושל גרירה
בעזרת המושגים של ת"פ ושל גרירה ניתן להגדיר באופן פורמלי את המושגים של מפתח (key) ומפתח-על (superkey) ניתן לבדוק האם קבוצת אטריביוטים היא מפתח-על ניתן לבדוק האם קבוצת אטריביוטים היא מפתח ניתן למצוא מפתח של סכמה ניתן למצוא את כל המפתחות של סכמה נתונה

24 הגדרה של מפתח ומפתח-על בהינתן סכמה R וקבוצת ת"פ F עבור R, מפתח-על של R הוא קבוצת אטריביוטים X ⊆ R, כך ש- F ⊨ X → R (כלומר, X+=R) X הוא מפתח אם F ⊨ X → R ואם אין Z ⊊ X כך ש- F ⊨ Z → R כלומר, X הוא מפתח-על ואין תת-קבוצה של X שגם היא מפתח-על מפתח הוא גם מפתח-על, אבל לא להיפך

25 דוגמה R=ABCD ו- F = {A → B, B → D, C → D}
A+=ABD ולכן A אינו מפתח-על (וגם לא מפתח) C+=CD ולכן C אינו מפתח-על (וגם לא מפתח) אבל AC הוא מפתח, ובדוגמה זאת AC הוא המפתח היחיד של R AC, ACB, ACD ו- ABCD הם כל מפתחות-העל של R (כאשר הראשון הוא גם מפתח)

26 דוגמה נוספת R=ABCD ו- F = {A → B, B → A, C → D}
במקרה זה יש שני מפתחות AC ו- BC AC, BC, ABC, ACD, BCD ו- ABCD הם כל מפתחות-העל של R (כאשר השניים הראשונים הם גם מפתחות)

27 איך בודקים אם X הוא מפתח-על של סכמה R עם קבוצת ת"פ F?
מחשבים את X+ ובודקים ש- X+ = R

28 איך בודקים אם X הוא מפתח של סכמה R עם קבוצת ת"פ F?
כלומר, מחשבים את X+ ובודקים ש- X+ = R בשלב השני צריך לבדוק אם יש Z ⊊ X כך ש- Z+ = R לכאורה, צריך לבדוק עבור מספר אקספוננציאלי של תתי-קבוצות של X, אבל למעשה מספיק לבדוק עבור מספר לינארי (בגודל של X) של תתי-קבוצות כפי שמראה הטענה בשקף הבא

29 טענה: יש Z ⊊ X כך ש- Z+ = R אםם יש A ∊ X כך ש- (X-A)+ = R
הכיוון של "אם" הוא ברור כדי להוכיח את הכיוון של "רק אם" נניח שיש ⊊ X Z כך ש-Z+ = R יהי A ∊ X-Z Z ⊆ X-A ⊆ X ⊆ R וגם Z+ = R לפיכך,(X-A)+ = R , כי R+ = R (מכיוון שב- F יש רק אטריביוטים שמופיעים ב- R) ומהגדרת הסגור נובע שאם V ⊆ W אז V+ ⊆ W+

30 מציאת מפתח אחד ומציאת כל המפתחות
מציאת מפתח אחד ומציאת כל המפתחות בהינתן סכמה R וקבוצת ת"פ F, אפשר למצוא בזמן פולינומיאלי מפתח אחד של R (יינתן כתרגיל) יתכן שיש מספר אקספוננציאלי (בגודל של R ו- F) של מפתחות אפשר למצוא את כולם בזמן פולינומיאלי בגודל הקלט והפלט

31 סגור של קבוצת ת"פ

32 סגור של קבוצת ת"פ תהי F קבוצה של ת"פ
הסגור של F, סימון F+, הוא קבוצת כל הת"פ הנגררות מ- F (או באופן שקול, הנגזרות מ- F), כלומר F+ = { X → Y | F ⊨ X → Y } F+ = { X → Y | F ⊢ X → Y }

33 דוגמה A → B, B → C} F = { F+ = { A → B, A → C, A → A, A → AB,
A → BC, A → AC, A → ABC, B → C, B → B, B → BC, C → C, … }

34 {יש ב- F ת"פ Y → Z כך ש- Y ⊆ X ו- Z ⊊ X { X → X+ |
חישוב הסגור של קבוצת ת"פ בסגור F+ של קבוצת ת"פ F יכול להיות מספר אקספוננציאלי של ת"פ בהשוואה ל- F חישוב הסגורF+ יכול להתבצע ע"י חישוב הסגורX+ של כל קבוצת אטריביוטים X אין טעם לכלול ב- F+ ת"פ טריוויאליות (קרי, המתקבלות מאקסיומת הרפלקסיביות) או כאלה שנובעות מת"פ אחרות ב- F+ ע"י אקסיומת הפירוק לכן, אפשר להסתפק בחישובX+ לכל קבוצה X, שמכילה את צד שמאל אבל לא את צד ימין של ת"פ כלשהי מ- F, כלומר החלק המעניין של F+ הוא (גודלו עדיין יכול להיות אקספוננציאלי): {יש ב- F ת"פ Y → Z כך ש- Y ⊆ X ו- Z ⊊ X { X → X+ |

35 דוגמה A → B, B → C} F = { הת"פ המעניינות של F+ הן
A → ABC, B → BC, AB → ABC, AC → ABC

36 שקילות של קבוצות של ת"פ

37 שקילות של קבוצות של ת"פ הגדרה: שתי קבוצות F ו- G של ת"פ הנן שקולות אם יש להן אותו הסגור, כלומר G+ = F+ חישוב הסגור דורש זמן אקספוננציאלי, כי הוא עשוי להכיל מספר אקספוננציאלי של ת"פ האם דרוש זמן אקספוננציאלי כדי לחשב שקילות של F ו- G? יש אלגוריתם ריבועי הבודק שקילות

38 אלגוריתם לבדיקת שקילות
בהינתן שתי קבוצות F ו- G של ת"פ, אפשר לבדוק אם הן שקולות, כלומר האם G+ = F+, באופן הבא: לכל X → Y ∈ F בודקים האם G ⊢ X → Y לכל X → Y ∈ G בודקים האם F ⊢ X → Y נסמן F ⊢ G אם לכל X → Y ∈ G קיים F ⊢ X → Y לכן, G+ = F+ אם F ⊢ G ו- G ⊢ F

39 מתי אין שקילות? לפי הגדרה, הקבוצות F ו- G אינן שקולות אם ורק אם קיימת ת"פ X → Y, כך שמתקיים אחד משני הדברים הבאים: G ⊬ X → Y ו- F ⊢ X → Y או G ⊢ X → Y ו- F ⊬ X → Y ב.ה.ה. (בלי הגבלת הכלליות) אפשר להניח שמתקיים המקרה הראשון

40 נכונות האלגוריתם נניח שאין שקילות, כלומר יש ת"פ X → Y כך ש-G ⊬ X → Y ו- F ⊢ X → Y נכונות האלגוריתם נובעת מכך שהתנאי הנ"ל מתקיים עבור ת"פ X → Y כלשהי אם ורק אם הוא מתקיים עבור ת"פ X → Y ששייכת ל- F הכיוון של ה"אם" הוא ברור

41 נכונות האלגוריתם – רק אם
נניח שיש ת"פ X → Y כלשהי כך ש- G ⊬ X → Y ו- F ⊢ X → Y אם אין ת"פ X → Y ב- F שמקיימת את התנאי הנ"ל, אז G ⊢ F ולפיכך ניתן לבנות – בסתירה להנחה – גזירה שלX → Y מ- G: בונים גזירה מ-G עבור כל ת"פ של F בונים גזירה של X → Y מ- F משרשרים את כל הגזירות הנ"ל לגזירה אחת של X → Y מ- G

42 דוגמה לבדיקת שקילות F = { A → B, B → C, A → C } G = { A → B, B → C }
כדי להראות שקילות, מספיק להראות ש- G ⊢ A → C, וברור שזה מתקיים לכן G+ = F+ שים לב שב- F יש ת"פ מיותרת

43 דוגמה נוספת לבדיקת שקילות
F = { A → B, AB → C } G = { A → B, A → C } גם בדוגמה זו מתקיים G+ = F+ ברור ש- A → B בסגור של שניהם ברור ש-AB → C נגרר מ- A → C צריך להראות ש- A → C נגרר מ- F מראים זאת ע"י חישוב הסגור של A לפי F ב- F יש ת"פ עם אטריביוט מיותר (בצד שמאל)

44 כיסוי חסר כפילויות

45 כיסוי חסר כפילויות בהינתן קבוצה F של ת"פ, כיסוי חסר כפילויות (non-redundant cover) הנו קבוצה G, כך ש- G+ = F+, ובנוסף G מקיימת את התנאים הבאים: לכל ת"פ ב- G אטריביוט בודד בצד ימין אין אטריביוט מיותר באף ת"פ של G אין ב- G אף ת"פ מיותרת

46 אלגוריתם למציאת כיסוי חסר כפילויות של F
מניחים שלכל ת"פ אטריביוט בודד בצד ימין עוברים שוב ושוב על F ובודקים האם יש ת"פ מיותרת או אטריביוט מיותר בצד שמאל של אחת הת"פ (כלומר, מחיקתם אינה משנה את F+) אם כן, מוחקים את הת"פ או האטריביוט המיותרים האלגוריתם מסתיים כשאין אף ת"פ או אטריביוט מיותרים

47 דוגמה למציאת כיסוי חסר כפילויות
תהי F = {AD → C, A → D, AC → B, B → D, BC → E} נראה ש- D הוא אטריביוט מיותר בת"פ AD → C תהי G = {A → C, A → D, AC → B, B → D, BC → E} טענה: G+ = F+ הוכחה: צ"ל F ⊢ A → C (ברור שכל שאר הגרירות מתקיימות) נחשב את A+ לפי F תחילה מוסיפים ל- A+ את D ואח"כ את C (ואח"כ ...) הראנו ש- F ⊢ A → C, לכן G+ = F+ ו- G הוא ה- F החדש F = {A → C, A → D, AC → B, B → D, BC → E}

48 דוגמה למציאת כיסוי חסר כפילויות (המשך)
נמשיך עם ה- F החדש F = {A → C, A → D, AC → B, B → D, BC → E} נראה ש- C הוא אטריביוט מיותר בת"פ AC → B תהי G = {A → C, A → D, A → B, B → D, BC → E} כדי להראות G+ = F+, מספיק להראות ש- F ⊢ A → B נחשב את A+ לפי F תחילה מוסיפים ל- A+ את C ו- D ואח"כ את B לפיכך, G+ = F+ ו- G הוא ה- F החדש: F = {A → C, A → D, A → B, B → D, BC → E}

49 דוגמה למציאת כיסוי חסר כפילויות (המשך)
נמשיך עם ה- F החדש F = {A → C, A → D, A → B, B → D, BC → E} נראה ש- A → D היא ת"פ מיותרת ב- F תהי G = {A → C, A → B, B → D, BC → E} כדי להראות G+ = F+, מספיק להראות ש- G ⊢ A → D נחשב את A+ לפי G תחילה מוסיפים ל- A+ את C ו- B ואח"כ את D לפיכך, G+ = F+ ו- G הוא ה- F החדש: F = {A → C, A → B, B → D, BC → E}

50 דוגמה למציאת כיסוי חסר כפילויות (המשך)
ב- F החדש: F = {A → C, A → B, B → D, BC → E} אין אף אטריביוט מיותר ואין אף ת"פ מיותרת לכן ה- F החדש הנו חסר כפילויות

51 F = {AD → C, A → D, AC → B, B → D, BC → E}
מה היה קורה אילו אילו היינו תחילה מנסים למצוא ת"פ מיותרת ב- F המקורי: F = {AD → C, A → D, AC → B, B → D, BC → E} היינו מגלים שאין ת"פ מיותרת ב- F המקורי אבל אחרי מחיקת אטריביוטים מיותרים, הת"פ A → D הופכת למיותרת

52 אלגוריתם משופר למציאת כיסוי חסר כפילויות

53 שיפור האלגוריתם כדי לשפר את האלגוריתם, צריך למצוא דרך שמאפשרת לבדוק כל אטריביוט וכל ת"פ פעם אחת בלבד שלב 1: עוברים על כל אחד מהאטריביוטים בצדי שמאל של הת"פ ובודקים אם הוא מיותר; אם כן מוחקים אותו שלב 2: עוברים על כל אחת מהת"פ ובודקים אם היא מיותרת; אם כן מוחקים אותה

54 נכונות האלגוריתם המשופר
צריך להראות שאטריביוט או ת"פ אינם יכולים להפוך למיותרים בהמשך האלגוריתם אם לא היו כאלה כאשר נבדקו

55 בדיקה האם אטריביוט הנו מיותר
הבדיקה האם אטריביוט B הנו מיותר היא מהצורה G ⊢ X - B → A כאשר G שקול ל- F המקורי ו- X → A שייכת ל- G

56 הוכחת נכונות – חלק 1 נניח שבודקים אם B מיותר בצעד מסוים והתוצאה שלילית, כלומר G ⊬ X - B → A חוזרים ובודקים בצעד מאוחר יותר ואז התוצאה חיובית, כלומר G1 ⊢ X1 - B → A G ו- G1 שקולות, כי הן שקולות ל- F המקורי כמו כן, X1 ⊆ X )כי אטריביוטים רק נמחקים) לכן, אם G1 ⊢ X1 - B → A אז G ⊢ X - B → A, בסתירה להנחה

57 בדיקה האם ת"פ הנה מיותרת כאשר G שקול ל- F המקורי ו- X → A שייכת ל- G
הבדיקה האם ת"פ הנה מיותרת היא מהצורה G – {X → A} ⊢ X → A כאשר G שקול ל- F המקורי ו- X → A שייכת ל- G

58 הוכחת נכונות – חלק 2 נניח שבודקים אם X → A מיותרת בצעד מסוים והתוצאה שלילית, כלומר G – {X → A} ⊬ X → A חוזרים ובודקים בצעד מאוחר יותר ואז התוצאה חיובית, כלומר G1 – {X → A} ⊢ X → A קבוצת הת"פ G – {X → A} איננה בהכרח שקולה ל- – {X → A} G1

59 הוכחת נכונות – חלק 2 (המשך)
אבל ⊆ G – {X → A} – {X → A} G1 )כי ת"פ רק נמחקות והשלב של מחיקת אטריביוטים הסתיים) לכן, אם G1 – {X → A} ⊢ X → A אז G – {X → A} ⊢ X → A, בסתירה להנחה


הורד את "ppt "תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 2

מצגות קשורות


מודעות Google