Presentation is loading. Please wait.

Presentation is loading. Please wait.

5. תלויות פונקציונליות שקפים: אלדר פישר

Similar presentations


Presentation on theme: "5. תלויות פונקציונליות שקפים: אלדר פישר"— Presentation transcript:

1 5. תלויות פונקציונליות שקפים: אלדר פישר
מערכות מסדי נתונים 5. תלויות פונקציונליות שקפים: אלדר פישר

2 תהליך התכנון של מסד נתונים
נחזור עתה לרגע לנקודת המוצא של הקורס  איך ניגשים לתכנונו של מסד נתונים ? אם לא נשתמש בתרשימי ER (או בגישה אחרת הנוסבת סביב המודל של ישויות וקשרים, כגון ODL), אז קרוב לוודאי שנשתמש בתהליך הבא לניתוח המערכת הדרושה: ראשית, רושמים את כל התכונות העולות מניתוח הדרישות של המערכת. הכוונה היא לכל היחידות המינימליות של פריטי המידע המופיעים בה (למשל: שם סטודנט, מס' סטודנט, שם קורס,...).

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

4 סכימת פירוק לרלציות  תזכורת
ניזכר בדוגמא של מאגר מידע על סטודנטים וקורסים, שנלמדה בהקדמה של קורס זה: לכל סטודנט נרצה לשמור שם, מס' זהות, וכתובת. לכל קורס נרצה לשמור שם קורס, מס' קורס, ושם מרצה. לכל אירוע של לקיחת קורס ע"י סטודנט, נרצה לשמור את פרטי האירוע ואת הציון הסופי בקורס. כזכור, שמירת טבלא אחת גדולה של שם  מס' זהות  כתובת  שם קורס  מס' קורס  שם מרצה  ציון אינה יעילה ומובילה לבעיות בעדכונים. לכן אנו נעדיף לשמור מספר טבלאות מצומצמות יותר עבור מאגר הנתונים.

5 תזכורת  המשך השיטה העיקרית שלמדנו לתכנון פירוק של הנתונים לטבלאות היא ע"י שימוש בדיאגרמות ER. דיאגרמה זו מתארת את הפירוק ל-3 רלציות: Student[Name,Id,Address], Course[C_Name,Num,L_Name], Takes[Id,Num,Grade] בתחילת הקורס ראינו שגם פירוק זה מסתמך על הנחות פשטניות מדי בקשר לצרכים של מאגר הנתונים הנ"ל, אולם לצורך הדוגמא נשתמש בו. Course C_Name Num L_Name Student Name Id Address Takes Grade

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

7 שאלה למחשבה במרשם האוכלוסין אין אף תכונה "טבעית" שיכולה לשמש כמפתח עבור רלציות התושבים, ולכן המדינה הוסיפה באופן "מלאכותי" תכונה כזו, את מספר הזהות. מדוע אנו זקוקים לתכונה מעין זו במרשם ?

8 מה יש בתרשים ER תרשים ה-ER מכיל בתוכו את התהליך הבא:
בעת רישום טיפוסי הישות וטיפוסי היחס, אנו רושמים גם את תכונות המסד. שדות המפתח של טיפוסי הישות, והקשרים בין טיפוסי הישות לטיפוסי היחס, מגדירים עבורנו תלויות פונקציונליות שהמסד מקיים (אם תרשים ה-ER שבנינו אכן תואם את תמונת העולם האמיתית). עם זאת, יתכנו שיהיו תלויות שאותן תרשים ה-ER לא יוכל לבטא. למשל  קיומם של שני מפתחות לאותו טיפוס ישות.

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

10 הערה נוספת צורת ההתייחסות למערכת כאל "רלציה אחת גדולה" שאותה מפרקים במהלך התכנון גם היא אינה יכולה לייצג באופן טוב מקרים מסוימים בעולם האמיתי. דוגמא  נסתכל על התרשים הבא: תמונה ת.לידה שם ז'אנר שנה שם סרט כוכב כוכב-משנה סרט שחקן קולנוע

11 הערה נוספת  המשך אם ננסה לנתח את המערכת רק תוך כדי התייחסות לרשימת התכונות הכוללת, לא נוכל להבדיל בין יחסים מהטיפוס "כוכב" לבין יחסים מהטיפוס "כוכב-משנה". יתרה מזאת, ניתוח התלויות בין התכונות השונות יהיה שגוי. בנוסף לכך, בהרבה מקרים כאשר מנתחים מערכת ביחס לקבוצת התכונות הכוללת, לא ניתן יהיה להתעלם מניתוח מדויק של האפשרויות עבור ערכי Null בחלק מהתכונות. בהרצאה זו נתעלם מבעיות אלו. למעשה אנו נניח שבידינו כבר נמצא פירוק ראשוני סביר לרלציות, שאותו אנו רוצים לשפר.

12 אנומליות בתכנון רלציוני לקוי
ניזכר בבעיות שבמימוש מסד הנתונים של סטודנטים וקורסים ברלציה אחת "גדולה" הכוללת את כל התכונות: יתירות  חזרות מיותרות על מידע. למשל, אין טעם לרשום מחדש את כתובת הסטודנט עבור כל קורס שנלקח. קשיים בעדכון  שינוי בפריט מידע בודד (כגון מרצה בקורס) דורש עדכון של שורות רבות ברלציה. קשיים בייצוג (ובמחיקות)  ישנם מצבים בעולם האמיתי שאי אפשר לייצג עבורם את כל המידע כאן. למשל  סטודנט (בעל כתובת וכו') שלא לקח אף קורס. ניתן לפתור מצב כזה ע"י שימוש בערך המיוחד Null, אולם הדבר יגרום לסיבוכים נוספים ונעדיף להימנע ממנו.

13 תלויות ופירוקים  הרעיון הכללי
ראשית נלמד על תלויות בין התכונות שיכולות להתקיים ברלציה. הרעיון הכללי הוא שתלויות מסוימות ברלציות של סכימת הפירוק שלנו יכולות להעיד על חוסר יעילות בפירוק  בהמשך נראה איך במקרים מסוימים רלציה בעלת תלויות מתאימות יכולה להתפרק לרלציות קטנות יותר. לאחר הפרק על תלויות, נלמד על צורות נורמליות של רלציות ואיך מגיעים אליהן  הרעיון הכללי הוא שהיותן של רלציות המסד בצורה נורמלית מעיד על טיב התכנון של מסד הנתונים.

14 תלויות פונקציונליות תלויות פונקציונליות (עבור רלציה נתונה) מתגלות מתוך ניתוח דרישות המערכת. עבור רלציה R בעלת התכונות A ו-B, נגיד ש-B תלויה פונקציונלית ב-A, ונסמן AB, אם כל שתי שורות ברלציה המסכימות ביניהן בערכן עבור A, יקבלו ערך זהה גם עבור B. חשוב לציין שאנו לא מעוניינים בתלויות הנראות לעין עבור תוכן (קבוצת אובייקטים) ספציפי של R. אנו מעוניינים בתלויות המתקבלות מניתוח המערכת, ואשר מתקיימות לכל תוכן אפשרי של הרלציה R. הכינוי "תלות פונקציונלית" נובע מכך שכל תוכן אפשרי עבור R יגדיר פונקציה מקבוצת הערכים של A לקבוצת הערכים של B.

15 תלויות פונקציונליות  המשך
כאשר R היא רלציה עם התכונות A1,A2 ו-B, הסימון A1A2B מתאר את התלות הבאה: בכל תוכן אפשרי של R, כל שתי שורות המסכימות ביניהן גם בערכי A1 וגם בערכי A2, יסכימו ביניהן גם בערך של B. גם אם מתקיים A1A2B, יתכן ששתי שורות יסכימו ביניהן רק על A1 (או רק על A2) ולא יסכימו ביניהן על B. משמעות התלות היא שכל תוכן אפשרי של R מגדיר פונקציה מזוגות הערכים של A1A2 לערכים של B. כאשר מתקיימות מספר תלויות באותה קבוצת תכונות, נשתמש בסימון מקוצר: הסימון A1A2B1B2 פירושו שמתקיימת גם התלות A1A2B1 וגם התלות A1A2B2. באופן טבעי נכליל את הסימון A1,…,AkB1,…,Bl עבור קבוצות גדולות יותר של תכונות.

16 נביעה של תלויות בהינתן קבוצה של תלויות F={ X1Y1 , X2Y2 ,..., XkYk } (כאשר כל Xi ו-Yi הן קבוצות של תכונות של הרלציה R), אנו נגיד שהתלות XY נובעת מ-F, ונסמן F ⊨ XY, אם כל רלציה (מעל התכונות המתאימות) המקיימת את כל התלויות הפונקציונליות ב-F, תקיים בהכרח גם את התלות XY. כאשר אנו מתכננים מסד נתונים, חשוב לנו לדעת את כל התלויות במערכת  גם אלו המתקבלות ישירות מניתוח הדרישות של המערכת וגם אלו הנובעות מהן. עם זאת, לא נוכל לבדוק את הקבוצה האין-סופית של כל התכנים האפשריים של הרלציות. במקום זאת נלמד שיטה למציאת כל התלויות הנובעות מקבוצת התלויות F, אשר אינה כוללת סריקה של קבוצה אין-סופית.

17 תלויות פונקציונליות טריוויאליות
אם A הוא תכונה של רלציה R, אז ללא שום קשר לתוכן הרלציה הנוכחי במאגר הנתונים שלנו, תמיד תתקיים התלות הפונקציונלית AA, שהרי לא יתכנו שני אובייקטים r,sR שעבורם הערכים של A הם גם שונים וגם זהים. באופן כללי יותר, אם X={ A1,...,Ak } היא קבוצה של תכונות של R, אז התלות XAi תתקיים תמיד, לכל 1  i  k. מכאן, שלכל תת-קבוצה Y  X תתקיים גם התלות הפונקציונלית XY. לתופעה זו של התלויות יש שם  רפלקסיביות.

18 דוגמא לנביעה  כלל ההכללה
טענה: אם R היא רלציה שתוכנה מקיים את התלות XY, ו-Z היא קבוצה כל שהיא של תכונות של R, אז תוכן הרלציה מקיים גם את XZYZ. במילים אחרות: התלות XZYZ נובעת מהתלות XY. בספרות בד"כ מסמנים את איחודי קבוצות התכונות באמצעות כתיב מקוצר: "XZYZ". בהרצאה כאן נשמור על סימני האיחוד כדי להדגיש שמדובר בקבוצות ולא במחרוזות.

19 הוכחה עבור כלל ההכללה נניח בשלילה שקיימת רלציה R וקבוצות של תכונות Z,Y,X, כך שתוכן הרלציה מקיים את XY אך אינו מקיים את XZYZ. אם כך, אז קיימים r,sR בעלי ערכים זהים על כל התכונות ב- XZ, אשר נבדלים בערכם על לפחות תכונה אחת A מתוך YZ. אם AY, אז בפרט r ו-s מסכימים על כל תכונות X אולם אינם מסכימים על תכונה מ-Y, ולכן תוכן הרלציה R אינו מקיים את התלות XY  סתירה. אם AZ, אז לא יתכן ש-r ו-s לא יקבלו ערך זהה על A, מכיוון שהם מקבלים ערכים זהים על כל XZ  סתירה. בזאת כיסינו את כל המקרים האפשריים עבור A, ולכן לא תתכן רלציה R המקיימת את ההנחות  מ.ש.ל.

20 טרנזיטיביות אם Z,Y,X הן קבוצות של תכונות של R, אז התלות XY נובעת מקיום שתי התלויות XY ו- YZ יחדיו. רעיון ההוכחה: מראים שאם תוכן R מקיים את התלויות XY ו- YZ, אז לכל r,sR בעלות ערכים זהים עבור כל תכונות X, יהיו ערכים זהים גם עבור כל תכונות Z.

21 אקסיומות ארמסטרונג נסכם את האבחנות שהועלו:
רפלקסיביות: אם X קבוצת תכונות של R ו-YX, אז מתקיים XY. הכללה: אם R מקיימת XY לשתי קבוצות Y,X של תכונות של R, אז לכל קבוצת תכונות Z מתקיים גם XZYZ. טרנזיטיביות: אם מתקיים XY וכן YZ, אז מתקיים גם XZ. עבור קבוצה של תלויות F, ותלות נוספת XY, נגיד ש- XY ניתנת להסקה מ-F, ונסמן F ⊢ XY, אם ניתן להגיע מקיום התלויות ב-F לקיום התלות XY תוך כדי שימוש בשלוש אבחנות אלו בלבד. לאבחנות אלו נקרא אקסיומות ארמסטרונג.

22 הערה עבור הלוגיקאים במינוח מדויק יותר, במערכת של ארמסטרונג יש אקסיומה אחת, רפלקסיביות, ושני כללי היסק, הכללה וטרנזיטיביות. שלושת אלו ביחד מהווים מערכת הוכחה: הוכחה של תלות פונקציונלית XY מתוך קבוצת תלויות F תכיל בכל שלב או ציטוט של אקסיומה, או הפעלה של כלל היסק על איברי F ו/או תוצאות של שלבים קודמים. עלינו עוד להשתכנע שמערכת זו משקפת היטב את המציאות באשר לתלויות האפשריות שתכנים של רלציות יכולים לקיים.

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

24 דוגמת הוכחה נוכיח עתה את הטענה הבאה באמצעות המערכת של ארמסטרונג: אם מתקיים XY וכן XZ, אז מתקיים גם XYZ. מ- XY נובע ע"פ אקסיומת ההכללה XZYZ. מ- XZ נובע ע"פ אקסיומת ההכללה XXXZ, אולם נשים לב שמתקיים XX=X ולכן נובע מהנ"ל XXZ. מ- XXZ ומ-XZYZ נובע מכלל הטרנזיטיביות XYZ, כנדרש.

25 סגור של קבוצת תכונות עבור רלציה R, קבוצת תלויות F, וקבוצת תכונות X, נסמן ב-XF+ את הקבוצה המכילה כל תכונה A של R שעבורה מתקיים F⊢(XA). טענה: עבור כל קבוצה Y של תכונות של R, מתקיים F⊢(XY) אם ורק אם מתקיים YXF+. הוכחה: אם YXF+, אז לכל AY מתקיים F⊢(XA) ולכן (ע"י שימוש בטענת האיחוד מהשקף הקודם) מכל אלו נובע F⊢(XY). מצד שני, אם F⊢(XY), אז לכל AY מתקיים F⊢(XA) (ולכן AXF+), מכיוון שניתן לקחת את ההוכחה עבור XY, ולצרף לה שימוש באקסיומת הרפלקסיביות עבור YA ושימוש באקסיומת הטרנזיטיביות לקבלת ההוכחה של XA. כמסקנה מהטענה הקודמת ניתן עתה להוכיח גם את הטענה הבאה: לכל קבוצת תכונות X מתקיים (XF+)+ = XF+.

26 שלמות האקסיומות של ארמסטרונג
להוכחת השלמות, נניח שעבור קבוצת תלויות F מתקיים F ⊬ (XY), ונוכיח שמתקיים F ⊭ (XY) ע"י כך שנבנה תוכן אפשרי לרלציה R המקיים את כל תלויות F ואינו מקיים את XY. לפי הטענה הקודמת, אם F ⊬ (XY) אז לא יתכן שמתקיים YXF+, ולכן קיימת תכונה AY שאינה שייכת ל-XF+. עתה נבנה רלציה בת שני איברים בדיוק: האיבר הראשון יקבל את הערך "0" על כל תכונות הרלציה. האיבר השני יקבל את הערך "0" על כל תכונות XF+ ואת הערך "1" על כל שאר התכונות. זוג האיברים היחידי ברלציה זו מסכימים ביניהם על כל תכונות XF+ (ולכן גם על תכונות X), אולם הם אינם מסכימים ביניהם על A, ולכן R אינה מקיימת את XY. מצד שני, R כן מקיימת את F כי אחרת היינו מקבלים סתירה לטענה (XF+)+ = XF+. מ.ש.ל.

27 אלגוריתם פשוט לחישוב סגור
מושג הסגור של קבוצת תכונות משחק תפקיד חשוב בתכנון של סכמות רלציוניות, ולכן נרצה לחשב אותו באופן אלגוריתמי. האלגוריתם הפשוט הבא יחשב את הסגור XF+ עבור קבוצת תלויות F וקבוצת תכונות X נתונות. משפט: אלגוריתם זה יעצור תמיד ויחזיר את התשובה הנכונה. A_List := X Repeat For every YZF do If YA_List then A_List := A_ListZ Until no change to A_List Return A_List

28 דוגמת הרצה נחשב את הסגור של X={ A,B } עבור קבוצת התלויות F={ AC, BCA, ACD, CEF } אתחול: A_List = { A,B } מהתלות AC נקבל: A_List = { A,B,C } מהתלות ACD נקבל: A_List = { A,B,C,D } משתי התלויות הנותרות לא נקבל מאומה. התוצאה הסופית: XF+ = { A,B,C,D }

29 חישוב הסגור  אלגוריתם משופר
A_List := X F_List := F Repeat For every YZF_List do Y := Y \ A_List If Y= then A_List := A_ListZ Until no change to A_List Return A_List האלגוריתם הבא ניתן למימוש באופן שבו זמן הריצה יהיה לינארי באורך הקלט, ע"פ משפט של Beer-Bernstein:

30 סגור של קבוצות תלויות עבור קבוצת תלויות F מעל קבוצת התכונות U של רלציה R[U], נסמן ב-F+ את קבוצת כל התלויות הנובעות מ-F. קבוצה זו תיקרא הסגור של F. מושג הסגור הנ"ל, וכן מושג הסגור של קבוצת תכונות שהוגדר קודם, ישמשו אותנו כאשר ננסח קריטריונים לטיב של פירוק של רלציות. עם זאת, שימו לב שיתכנו מקרים שבהם גודל F+ הוא אקספוננציאלי בגודל הקבוצה המקורית F. אנו נצטרך להתחשב בכך כאשר נתכנן אלגוריתמים הקשורים במציאת פירוק.

31 השוואת סגור של קבוצות בהינתן קבוצת תלויות F ותלות נוספת XY, ניתן לבדוק האם XYF+ גם ללא חישוב מפורש של הסגור של F: מחשבים את XF+ (את זאת ניתן לעשות בזמן פולינומי), ובודקים האם YXF+. מכאן שבהינתן שתי קבוצות F ו-G של תלויות (מעל אותה קבוצת תכונות), ניתן בזמן פולינומי לבדוק האם מתקיים F+=G+: ראשית בודקים עבור כל תלות ב-G האם היא נובעת מ-F. אם כך הדבר, הרי שמתקיים G+(F+)+=F+. לאחר זאת ניתן לבדוק באופן דומה האם מתקיים F+G+.

32 כיסויים וכיסויים מינימלים
קבוצת תלויות G תיקרא כיסוי של F אם מתקיים G+ = F+. כפי שראינו, בהינתן שתי הקבוצות ניתן לבדוק האם G היא כיסוי של F בזמן פולינומי בגודל הייצוג שלהן. כיסוי G של F יקרא כיסוי מינימלי אם מתקיימים בנוסף התנאים הבאים: כל התלויות ב-G הן מהצורה XA (כאשר A היא תכונה בודדת). אף תלות ב-G אינה ניתנת להסקה מהתלויות אחרות ב-G. לא קיימת ב-G תלות XA שעבורה קיימת תת קבוצה ממש Y של X המקיימת YA  G+ = F+. יתכן שעבור אותו F יהיו מספר כיסויים מינימלים, אולם תמיד קיים לפחות כיסוי מינימלי אחד, וגודלו לא יהיה אקספוננציאלי בגודל F. אלגוריתם למציאת כיסוי כזה יינתן בתרגיל.

33 סוגי תלויות נוספים בסכימות רלציוניות יתכנו גם אילוצים אחרים מלבד תלויות פונקציונליות. למשל: תלויות רב ערכיות: מצב שבו יתכנו ערכים שונים ל-Y עבור שורות בעלות אותם ערכים ל-X, אולם שבו רק הערכים ל-X קובעים את קבוצת הערכים הקיימים עבור Y. בתלויות אלו ניגע מעט בהמשך. תלויות הכלה: סוג זה של תלויות מקשר בין ערכי תכונות עבור שתי רלציות בסכימה. למשל (בדוגמת מפעיל הרכבות): S_Name (Serves)  S_Name (Station) בקורס זה נתמקד בעיקר בשיקולי תכנון הנובעים אך ורק מהתלויות הפונקציונליות.


Download ppt "5. תלויות פונקציונליות שקפים: אלדר פישר"

Similar presentations


Ads by Google