Presentation is loading. Please wait.

Presentation is loading. Please wait.

אביב-תשס"ה236363- DBMS, Design1 פרוקים של רלציות מוטיבציה: פרוק סכמה לסכמות יותר קטנות על מנת למנוע כפילויות. הגדרה: תהי R סכמה רלציונית. פרוק של R הוא.

Similar presentations


Presentation on theme: "אביב-תשס"ה236363- DBMS, Design1 פרוקים של רלציות מוטיבציה: פרוק סכמה לסכמות יותר קטנות על מנת למנוע כפילויות. הגדרה: תהי R סכמה רלציונית. פרוק של R הוא."— Presentation transcript:

1 אביב-תשס"ה236363- DBMS, Design1 פרוקים של רלציות מוטיבציה: פרוק סכמה לסכמות יותר קטנות על מנת למנוע כפילויות. הגדרה: תהי R סכמה רלציונית. פרוק של R הוא קבוצת סכמות  = {R 1, …,R n } כך ש-  i n =1 R i = R. תכונות חשובות: שימור מידע ושימור תלויות.

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

3 אביב-תשס"ה236363- DBMS, Design3 פרוק - המשך כשמפרקים סכמה לתת סכמות, חיוני לדאוג לשימור מידע. שימור תלויות איננו הכרחי, אם כי רצוי. לעיתים צריך להתפשר בין שימור תלויות לבין מניעה של כפילויות מסוימות.

4 אביב-תשס"ה236363- DBMS, Design4 שימור מידע הגדרה: תהי R סכימה רלציונית, ותהי F קבוצת תלויות פונקציונלית, ויהי  = {R 1, …,R n } פרוק של R.  הוא משמר מידע בהינתן F אם לכל רלציה r מעל R המקיימת r  F מתקיים : ⋈ i n = 1  R i (r) = r דוגמה: R(ID, NAME, ADDR), F = {ID  NAME, ID  ADDR} הפרוק  = {R 1 (ID, NAME), R 2 (NAME, ADDR)} אינו משמר מידע. נראה תוכן של R שמפר את התנאי של שימור מידע:

5 אביב-תשס"ה236363- DBMS, Design5 דוגמה – המשך לעומת זאת, הפירוק  ’ = {R 1 ’ (ID, NAME), R 2 ’ (ID, ADDR)} משמר מידע :  R 1 ’ (r) ⋈  R 2 ’ (r) = r ADDRNAMEID ת"אראובן1 חיפהראובן2 ADDRNAME ת"אראובן חיפהראובן NAMEID ראובן1 2 ADDRNAMEID ת"אראובן1 חיפהראובן1 ת"אראובן2 חיפהראובן2 r =  R 1 (r)  R 2 (r)  R 1 (r) ⋈  R 2 (r)

6 אביב-תשס"ה236363- DBMS, Design6 שימור מידע בפירוק לשתי סכמות משפט: פירוק לשתי סכמות  = {R 1, R 2 } הוא משמר מידע אם ורק אם F  (R 1  R 2 )  (R 1 \ R 2 ) או F  (R 1  R 2 )  (R 2 \ R 1 ) בדוגמה האחרונה (עבור סכמה R(ID, NAME, ADDR)): הפירוק  = {R 1 (ID, NAME), R 2 (NAME, ADDR)} לא מקיים NAME  ID, וגם לא NAME  ADDR, ולכן אינו משמר מידע. לעומת זאת, הפירוק  = {R 1 (ID, NAME), R 2 (ID, ADDR)} כן מקיים (למשל) ID  NAME, ולכן לפי המשפט, כן משמר מידע.

7 אביב-תשס"ה236363- DBMS, Design7 פרוק ליותר משתי תתי-סכמות פרוק של סכמה למספר תתי-סכמות הוא משמר מידע אם הוא מתבצע בשלבים, כאשר בכל שלב מתפרקת סכמה אחת לשתיים בפרוק משמר מידע: בהינתן סכמה R ותלות פונקציונלית X  Y, נוכל לפרק את R לשתי תתי-סכמות: {R 1 [XY],R 2 [R\(Y\X)]}. לפי המשפט, מובטח שהפירוק משמר מידע. נחזור על הצעד הנ"ל מספר פעמים כרצוננו, ונקבל בסוף פרוק למספר תתי-סכמות שהוא משמר מידע.

8 אביב-תשס"ה236363- DBMS, Design8 דוגמה דוגמה: נתונה הסכמה R (ציונים של סטודנטים), וקבוצת תלויות F: R(snumber, sname, cnumber, cname, grade) F = {snumber  sname, cnumber  cname, (snumber, cnumber)  grade} Snumber -- מס' סטודנט Sname -- שם סטודנט Cnumber -- מס' קורס Cname -- שם קורס Grade -- ציון מטרה: לפרק את R למספר סכמות, כך שהפירוק יהיה משמר מידע.

9 אביב-תשס"ה236363- DBMS, Design9 דוגמה - המשך R(snumber, sname, cnumber, cname, grade) R 2 (snumber, cnumber, cname, grade) R 4 (cnumber, cname)R 3 (snumber, cnumber, grade) R 1 (snumber, sname) snumber  sname cnumber  cname פירוק בשלבים: F = {snumber  sname, cnumber  cname, (snumber, cnumber)  grade} לפי הבנייה, הפירוק ל- {R 1,R 3,R 4 } הוא משמר מידע.

10 אביב-תשס"ה236363- DBMS, Design10 פרוק משמר מידע - המשך אלגוריתם כללי לבדיקת שימור מידע בפירוק נתון (מס' תתי-סכמות כלשהו): 1. צור רלציה r מעל הסכמה R. לכל תת-סכמה R i נקצה ברלציה r שורה אחת t i t i מקבלת את הערך a לכל עמודה A  R i ואת הערך b i לכל עמודה B  R i. 2. כל עוד אין ב-r שורה שכולה ללא אינדקסים, ויש ב-r שתי שורות t i, t j כך ש- t i [X]=t j [X] עבור תלות פונקציונלית כלשהי (X  Y)  F, השווה את הערכים ב-t j [Y] וב-t i [Y], באופן הבא: לכל עמודה A  Y, אם אחד משני הערכים t i [A], t j [A] הוא a (ללא אינדקס), החלף את הערך האחר ב-a, ואחרת החלף את t j [A] ב-t i [A] או את t i [A] ב-t j [A], כרצונך. 3. הפרוק משמר מידע אם ורק אם בסוף הריצה יש ב-r שורה שהיא כולה ערכים ללא אינדקסים.

11 אביב-תשס"ה236363- DBMS, Design11 דוגמה דוגמה: נתונה הסכמה R(A, B, C, D, E, F) וקבוצת תלויות F = {A  B, C  D, B  EF}. האם הפירוק  = {R 1 (A, B), R 2 (A, C, D), R 3 (B, E, F)} הוא משמר מידע? פתרון: נבנה את הרלציה r: FEDCBA f1f1 e1e1 d1d1 c1c1 ba f2f2 e2e2 dcb2b2 a fed3d3 c3c3 ba3a3 t1t1 t2t2 t3t3

12 אביב-תשס"ה236363- DBMS, Design12 דוגמה - המשך קיבלנו t 2 ללא אינדקסים, ולכן הפרוק משמר מידע. FEDCBA f1f1 e1e1 d1d1 c1c1 ba f2f2 e2e2 dcb2b2 a fed3d3 c3c3 ba3a3 t1t1 t2t2 t3t3 A  B (t 1,t 2 ) B  EF (t 3,t 2 ) FEDCBA f1f1 e1e1 d1d1 c1c1 ba f2f2 e2e2 dcba fed3d3 c3c3 ba3a3 t1t1 t2t2 t3t3 FEDCBA f1f1 e1e1 d1d1 c1c1 ba fedcba fed3d3 c3c3 ba3a3 t1t1 t2t2 t3t3 1 2

13 אביב-תשס"ה236363- DBMS, Design13 דוגמה נוספת דוגמה: נתון R(A,B,C,D,E), F = {A  B, B  C, C  D, DE  BC}. האם הפירוק  = {R 1 (A,D), R 2 (A,E), R 3 (B,C,D,E)} הוא משמר מידע? EDCBA e1e1 dc1c1 b1b1 a ed2d2 c2c2 b2b2 a edcba3a3 t1t1 t2t2 t3t3 EDCBA e1e1 dc1c1 b1b1 a ed2d2 c1c1 b1b1 a edcba3a3 t1t1 t2t2 t3t3 EDCBA e1e1 dc1c1 b1b1 a ed2d2 c2c2 b1b1 a edcba3a3 t1t1 t2t2 t3t3 A  B t 1,t 2 B  C t 1,t 2 EDCBA e1e1 dc1c1 b1b1 a edc1c1 b1b1 a edcba3a3 t1t1 t2t2 t3t3 C  D t 1,t 2 EDCBA e1e1 dc1c1 b1b1 a edcba edcba3a3 t1t1 t2t2 t3t3 DE  BC t 3,t 2 מסקנה : הפירוק משמר מידע.

14 אביב-תשס"ה236363- DBMS, Design14 שימור תלויות אינטואיציה: כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה: כאשר מעדכנים את אחת מתתי-הרלציות באופן חוקי, גם העדכון על מסד הנתונים כולו (ה- join בין תת- הרלציות) הוא חוקי. אם אין שימור תלויות אז כאשר נעדכן טבלה אחת, נצטרך לבדוק מול הטבלאות האחרות כדי לוודא שהעדכון חוקי.

15 אביב-תשס"ה236363- DBMS, Design15 שימור תלויות – דוגמה דוגמה: נתונה הסכמה (עיר, קדומת, טלפון)R והתלויות הפונקציונליות {עיר  (טלפון, קדומת), קדומת  עיר} =F אותה קדומת יכולה להיות משותפת לכמה ערים, אך לכל עיר יש קדומת אחת בלבד. אותו מספר טלפון יכול להופיע בערים שונות, אך לא בערים עם אותה קדומת. שימור מידע: הפרוק {(עיר, קדומת)R 2, (עיר, טלפון)R 1 }=  משמר מידע: R1  R2 = עיר, R2 \ R1 = קדומת, F  עיר  קדומת שאלה: האם הפירוק משמר תלויות?

16 אביב-תשס"ה236363- DBMS, Design16 דוגמה - המשך הפרוק אינו משמר תלויות, כי: כל אחת מהרלציות r 1, r 2 מקיימת את F. עירטלפון חיפה1234 טבעון1234 עירקדומת חיפה04 טבעון04 r1=r1=r2=r2=

17 אביב-תשס"ה236363- DBMS, Design17 דוגמה - המשך אבל ה-join אינו מקיים את F : כאשר נרצה להוסיף או לשנות מספר טלפון ב- r 1 נצטרך לבדוק גם ב- r 2 כדי לוודא שהשינוי הוא חוקי. לא די שבאותה עיר לא יהיו שני טלפונים זהים - אסור שיהיו טלפונים זהים גם בערים שונות באותו אזור חיוג. עירקדומתטלפון חיפה041234 טבעון041234

18 אביב-תשס"ה236363- DBMS, Design18 שימור תלויות – המשך אינטואיטיבית: תלות פונקציונלית f נשמרת בפרוק אם קיימת תת-סכמה שמכילה את כל האטריביוטים המופיעים ב- f, או אם ניתן להסיק את f מתוך תלויות אחרות שנשמרות בפרוק. הגדרה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונליות מעל R, ותהי S  R. ההיטל של F על תת-הסכמה S (סימון :  s F) הוא:  s F = {X  Y | X  Y  F +  X  Y  S} יש לשים לב לכך שהתלויות בהיטל נלקחות מתוך F + ולא רק F.

19 אביב-תשס"ה236363- DBMS, Design19 שימור תלויות – המשך הגדרה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונליות מעל R, ויהי  = {R 1,…,R n }.  הוא משמר תלויות (dependency preserving) בהינתן F אם לכל קבוצת רלציות {r 1,…,r n } (מעל הסכמות {R 1,…,R n } בהתאמה) כך ש-r i   Ri F לכל i = 1,…,n מתקיים ⋈ n i=1 r i  F.

20 אביב-תשס"ה236363- DBMS, Design20 אלגוריתם לבדיקת שימור תלויות בהינתן סכמה R, קבוצת תלויות פונקציונליות F ופרוק  = {R 1, …,R n }, האלגוריתם הבא בודק האם  משמר תלויות: For each f = ( X  Y) in F do begin Z f  X Repeat For i = 1 to n do Z f  Z f  ((Z f  R i ) + F  R i ) Until no more changes to Z f End  is dependency-preserving iff Y  Z f for each f in F. אינטואיציה: לכל תלות X  Y, נבנה מעין "סגור" של X, באמצעות תלויות שכבר הראינו שהן נשמרות בפירוק, ונבדוק האם Y מוכל בו.

21 אביב-תשס"ה236363- DBMS, Design21 אלגוריתם לבדיקת שימור תלויות – דוגמה בפרוק {(עיר, קדומת) R 2, (עיר, טלפון){R 1 = , התלות עיר  (טלפון, קדומת) = f אינה נשמרת: {טלפון, קדומת} = Z f דוגמה: נתונה הסכמה R(A, B, C, D), קבוצת תלויות F = {A  B, AC  D, BC  D}. האם הפירוק  = {R 1 (A, B), R 2 (B, C, D)} משמר תלויות? נבדוק לכל תלות האם היא נשמרת בפירוק. התלות A  B נשמרת כי AB  R 1, התלות BC  D נשמרות כי BCD  R 2 נותר לוודא שהתלות AC  D נשמרת (לפי האלגוריתם): R 1,A  B {AC} {ABC} R 2, BC  D {ABCD}  {D}


Download ppt "אביב-תשס"ה236363- DBMS, Design1 פרוקים של רלציות מוטיבציה: פרוק סכמה לסכמות יותר קטנות על מנת למנוע כפילויות. הגדרה: תהי R סכמה רלציונית. פרוק של R הוא."

Similar presentations


Ads by Google