La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

תיאורית תכנון סכמות למסדי נתונים Database design theory

Presentaciones similares


Presentación del tema: "תיאורית תכנון סכמות למסדי נתונים Database design theory"— Transcripción de la presentación:

1 תיאורית תכנון סכמות למסדי נתונים Database design theory

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

3 תזכורת סכימה (תבנית) יחס (טבלה) תכונות=אטריביוטים

4 תכנון מסדי נתונים מטרה: ליצור מסדי נתונים עם מבנה "נכון"
StudID StudName StudDept. DeptBudget DeptManager 10123 Moshe Math 200000 Prof. Shamir 22458 Mickey Computers 900000 Prof. Navot 33453 Eli 88966 Anat Biology 390000 Prof. Parnas 55611 Menahem מסד נתונים עם מבנה נכון: מונע כפילות מידע מאפשר לייצג מידע קונסיסטנטי

5 StudID StudName StudDept. DptBdget DptMgr 10123 Moshe Math 200000 Prof. Shamir 22458 Mickey Computers 900000 Prof. Navot 33453 Eli 88966 Anat Biology 390000 Prof. Parnas 55611 Menahem StudDept. DptBdget DptMgr Math 200000 Prof. Shamir Computers 900000 Prof. Navot Biology 390000 Prof. Parnas StudID StudName StudDept. 10123 Moshe Math 22458 Mickey Computers 33453 Eli 88966 Anat Biology 55611 Menahem

6 תלות פונקציונלית תלות פונקציונלית היא אילוץ על טבלה
ת"פ מאפשרות לבטא אילוצים כגון: "לכל מחלקה יש מנהל יחיד" במילים אחרות: בכל הרשומות עם אותה מחלקה, יופיע אותו מנהל סימון: מחלקה->מנהל מחלקה מסוימת "קובעת" מנהל מסוים

7 StudID StudName StudDept. DeptBudget DeptManager
10123 Moshe Math 200000 Prof. Shamir 22458 Mickey Computers 900000 Prof. Navot 33453 Eli 88966 Biology 390000 Prof. Parnas 55611 Menahem StudDept.-> StudName StudDept.-> DeptBudget StudDept.-> DeptManager StudName-> StudDept DeptBudget-> DeptManager

8 D C B A 8 3 2 1 7 4 5 A->B A->D A->BD AC->D A->A
ועוד... B->A A->C A->BC

9 תלות פונקציונלית (פורמלית): אם קיימת תלות פונקציונאלית    על היחס R, אזי לכל שתי שורות t1 ו- t2 בעלות ערכים זהים ב-  יש גם ערכים זהים ב- . ז"א t1[] = t2 []  t1[ ] = t2 [ ] נשים לב ש ,  יכולות להיות תכונות בודדות או קבוצות של תכונות נהוג לסמן X,Y,Z כקבוצות אטריביוטים ו A,B,C,.. כאטריביוטים בודדים נהוג לסמן איחוד של קבוצות X ו Y כ XY

10 שימוש בתלויות פונקציונליות
משמשות ככלי בתהליך בניית יחסים "נכונים" התהליך: קביעת העמודות של היחס (מנהל, מחלקה, תלמיד,..) קביעת הת"פ הרצויות (מחלקה->מנהל,..) ע"י שימוש בעמודות ובת"פ שנקבעו, בודקים האם יש שכפול מידע אם כן- מפרקים את היחס לתת יחסים

11 ת"פ טריוויאלית ת"פ היא טריוויאלית אם היא מתקיימת בכל יחס
X->Y טריוויאלית אמ"מ Y  X למשל: A->A AC->C

12 סגור של קבוצת אטריביוטים
בהנתן אוסף ת"פ F ואוסף אטריביוטים, סגור של קבוצת אטריביוטים X הוא אוסף כל האטריביוטים A כך שניתן לגזור את X->A מ- F סימון: X+F הלמה של הסגור: X->Y גזירה מ F אמ"מ Y  X+F

13 דוגמא למציאת סגור דוגמא: יהי R(ABC), עם F={A->B, B->C} אז: A+=
AC+=

14 אלגוריתם למציאת סגור של קבוצת תכונות
עבור יחס R, קבוצת ת"פ F, וקבוצת תכונות X: סגור_זמני=X כל עוד סגור_זמני מתעדכן: עבור על כל ת"פ Y->Z: אם Y מוכל בסגור_זמני ו Z לא, אז הוסף את Z לסגור זמני לאחר סיום העידכונים, סגור_זמני הוא הסגור המלא של X

15 דוגמא למציאת סגור של קבוצת תכונות
עבור יחס R, קבוצת ת"פ F, וקבוצת תכונות X: סגור_זמני=X כל עוד סגור_זמני מתעדכן: עבור על כל ת"פ Y->Z: אם Y מוכל בסגור_זמני ו Z לא, אז הוסף את Z לסגור זמני לאחר סיום העידכונים, סגור_זמני הוא הסגור המלא של X יהי R(ABCDE) עם F={A->BD, C->B, BC->E} מהו הסגור של C? CBE מהו הסגור של A? ABD

16 ת"פ ומפתחות X הוא מפתח על של יחס R אם X+=R תחת F

17 הסגור של אוסף תלויות פונקציונליות
בהנתן אוסף ת"פ, רוצים לבדוק מהן כל הת"פ הנובעות מהן יהי F אוסף תלויות פונקציונליות עבור יחס R למשל: F={A->B, A->C, C->D} אוסף כל התלויות הפונקציונליות שנובעות לוגית מ-F היא הסגור של F. מסומן ב-F+.

18 מציאת הסגור של קבוצת ת"פ ניתן למצוא את הסגור של קבוצת ת"פ ע"י שימוש באקסיומות הבאות: רפלקסיביות: אם  אזי . אוגמנטציה: אם  אז  טרנזיטיביות: אם  וגם  אז .

19 דוגמא יהי יחס R(A,B,C,D) יהי F אוסף ת"פ עבור היחס R
F={A->B, B->D, C->D} הת"פ A->D אינה מופיעה ב F אך היא נובעת מ F (מדוע?) מכאן, ש {A->D} תהיה שייכת ל F+ מציאת F+ היא בעיה קשה- זמן ריצה אקספוננציאלי

20 בדיקת שייכות של ת"פ לסגור F+
לכאורה, כדי לבדוק האם ת"פ מסוימת נובעת מ F, צריך לחשב את F+ ולראות אם היא כלולה אך חישוב F+ הוא קשה בעזרת סגור של קבוצת תכונות אפשר לקצר: בהנתן R ו F, כדי לדעת אם X->Y נמצא ב F+, נחשב את הסגור של קבוצת התכונות X תחת F, ונראה אם Y כלולה

21 דוגמא R(ABCD), F={AB->D,C->B,CD->A, AD->C}
האם AC->D נמצאת ב F+? נחשב את AC+: {AC} {ACB} {ACBD} D נמצא בסגור ולכן AC->D חלה על R

22 כיסוי מינימלי (קנוני) של קבוצת ת"פ- אינטואיציה
נניח שהיינו רוצים לבדוק האם יחס R(ABCD) מקיים את אוסף הת"פ הבא: F={A->B, B->C, A->C, AB->C} ניתן לראות כי "מיותר" לבדוק את A->C ו AB->C אז מהו הייצוג של F כל שאין בו ת"פ "מיותרות"? זה בדיוק הכיסוי המינימלי של F

23 כיסוי מינימלי (קנוני) של קבוצת ת"פ
כיסוי מינימלי של F הוא קבוצת ת"פ Fc (מצומצמת יותר), המקיימת: Fc+=F+ לכל ת"פ ב Fc יש אטריביוט בודד בצד ימין אין אטריביוט מיותר בצד שמאל של אף ת"פ אין ב Fc ת"פ עודפת

24 דוגמא לתכונה עודפת F = { AB  C, C  B, A  B }
נבדוק אם B עודף ב AB->C: F’ = { A  C, C  B, A  B } נבדוק שכל ת"פ ב F נגררת מ F’ ולהיפך אכן, לכן B באמת הייתה עודפת

25 אלגוריתם למציאת כיסוי מינימלי
אתחול Fc =F צור ת"פ עם אטריביוט בודד בצד ימין ע"י פירוק מחק מ Fc תכונות עודפות (בצד שמאל) מחק מ Fc ת"פ עודפות מחיקת תכונות עודפות צריך לבדוק אם מחיקה של אטריביוט משנה את הסגור. במקום זאת, מספיק לבדוק אם הת"פ החדשה (ה"מקוצצת"), נגזרת מ F. לכל X->A, ולכל B ב X, בדוק האם X\B->A נגזר מ F. אם כן- החלף את הת"פ בת"פ ה"מקוצצת".

26 מצא כיסוי מינימלי לקבוצות הת"פ הבאות:
F={A->B, CE->A, B->C, AC->D} F={AB->C, A->B, C->B} F = { A  G, B  D, GD  C, AB  C}

27 תזכורת לסכימה בעייתית Salary Position Name 10 מזכיר יוסי 300 מנכל מיכל
100 שיווק דני ענת משה 80 תוכנה נורית בעיה 1: כפילות מידע בזבוז מקום סיכון בעדכון שגוי בעיה 2: ייצוג לא טבעי של נתונים חלקיים שמירת משכורת של תפקיד שאינו מאויש

28 פתרון: פירוק לתת-סכימות
Position Name מזכיר יוסי מנכל מיכל שיווק דני ענת משה תוכנה נורית Salary Position 10 מזכיר 300 מנכל 100 שיווק 80 תוכנה

29 הגדרה של פירוק קבוצת סכמות {R1, R2, ... Rn} נקראות פירוק (decomposition) של הסכמה R אם מתקיים R=R1UR2U…URn פירוקים לדוגמא של R=NPS: R1=NP, R2=PS R1=NP, R2=NS R1=N, R2=PS אבל, רק חלק מהפירוקים הללו "טובים"...

30 פירוק לא "טוב" נתבונן שוב בתבנית R = NPS עם התלויות:
F = {N  P, P  S} ונתבונן על הפירוק: R1=NS, R2=PS S P N 100 שיווק דני תוכנה נורית 200 ניהול טלי S N 100 דני נורית 200 טלי S P 100 שיווק תוכנה 200 ניהול לאחר הפירוק, האם ניתן לדעת מה תפקידה של טלי? ומה תפקידו של דני? זה נקרא "פירוק המאבד מידע" חשוב: איבוד/שמירת מידע של פירוק מוגדרים על הסכמות, ללא קשר לתוכן היחסים!

31 פירוק ללא אובדן (משמר מידע)
תהי R סכמה ו- F קבוצת אילוצים החלה על R. אז הפירוק של R לקבוצת התבניות {R1, R2, R3 ... Rn} יקרא פירוק ללא אובדן (משמר מידע) אם עבור כל יחס r (שתבניתו R) המקיים את כל האילוצים ב- F, מתקיים r = R1(r) R2(r) R3(r) Rn(r)

32 דוגמא נתבונן בתבנית R = ABC עם התלויות: F = {A  C, C  B}
ונתבונן על הפירוק: R1=AB, R2=BC C B A t 1 x s 2 y r 3 z B A 1 x 2 y 3 z C B t 1 s 2 r 3 האם R1(r) R2(r) = r ? האם ניתן לקבוע מכך שהפירוק משמר מידע? כן! לא! הפירוק אינו משמר מידע. למשל: C B A t 1 x s y r 3 z B A 1 x y 3 z C B t 1 s r 3 האם R1(r) R2(r) = r ? לא!!

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

34 ת"פ של תת-סכימה תהי R סכימה עם אוסף ת"פ F ו- Ri תת סכימה של R. מהן הת"פ של Ri? הת"פ של Ri הן "ההטלה של הת"פ F על העמודות של Ri" הגדרה: יהי {R1, R2, ... Rn} פירוק של התבנית R. תהי F קבוצה של תלויות פונקציונליות החלה על R. אז ההטלה של F לתבנית Ri (n 1  i ) היא קבוצת כל התלויות בסגור של F המכילות רק תכונות שנמצאות ב- Ri. סימון: Fi. דוגמא: R = (A, B, C) F = {A  B, B  C} R1 = (A, C) R2 = (B, C) אז: F1={A  C}, F2={B  C}

35 פירוק משמר ת"פ פירוק משמר ת"פ הינו פירוק אשר מבטיח שהת"פ בסכימה המקורית נאכפות גם לאחר הפירוק הגדרה יהי {R1, R2 ... Rn} פירוק של התבנית R. תהי F קבוצת תלויות החלה על R ותהיינה Fi ההטלות של F לתבניות Ri (1  i  n). אז הפירוק הזה יקרא פירוק משמר תלויות (dependency preserving decomposition) אם מתקיים (F1  F2  ...  Fn)+ = F+ הערות: עבור כל פירוק מתקיים (F1  F2  ...  Fn)+  F+ כאשר הפירוק הוא משמר תלויות מתקיימת גם ההכלה בכיוון ההפוך ואז יש שיוויון. כדי לבדוק האם פירוק הוא משמר תלויות מספיק לבדוק אם מתקיים (F1  F2  ...  Fn)+  F קיים אלגוריתם יעיל לבדיקה האם ת"פ נשמרת (בהמשך)

36 דוגמא R = (A, B, C) F = {A  B, B  C} R1 = (A, C) R2 = (B, C) אז:
F1={A  C}, F2={B  C} הת"פ A  B לא נמצאת ב (F1  F2)+ ולכן הפירוק אינו משמר ת"פ

37 דוגמא ב' R = (A, B, C), F = { A  B, B  C, C  A}
R מפורקת ל: R1 = (A, B) R2 = (B, C) האם הפירוק משמר ת"פ? F1 = {A B, B  A} F2 = {B  C, C  B) צריך לבדוק אם כל התלויות ב- Fנמצאות בסגור של F1  F2 מסתבר שכן ולכן הפירוק משמר ת"פ

38 מה לגבי הפירוק הבא? T C S Smith DB Cohen Jones OS Levy F = {C  T} C S
אינו משמר מידע ואינו משמר ת"פ

39 וזה? T C S Smith DB Cohen Algo Katz Jones OS Levy F = {C  T} T S
אינו משמר מידע אך כן משמר ת"פ

40 וזה? T C S Smith DB Cohen Algo Katz Jones OS Levy F = {C  T} T C
משמר מידע (אלגוריתם מהשיעור) ומשמר ת"פ

41 אלגוריתם לבדיקה האם ת"פ X->Y נשמרת בפירוק
/* check if X->Y is preserved */ IsPreserved(X,Y,R1…k) Z:=X while changes to Z occur do for i=1 to k do Z:= Z  ((Z  Ri)+  Ri) if YZ return true else return false

42 אלגוריתם לבדיקה האם ת"פ X->Y נשמרת בפירוק (2)
IsDependencyPreserving(F,R1…k) for each X->Y in F do if not IsPreserved(X,Y,R1…k) return false return true

43 דוגמא R=ABCD F = {A -> B, B -> C, C -> D, D -> A}
R1=AB, R2=BC, R3=CD האם הפירוק הנ"ל משמר ת"פ? לא!

44 BCNF סכימה R עם קבוצת תלויות F החלה עליה היא בצורה נורמלית BCNF אם כל תלות בסגור של F מקיימת לפחות אחד משני התנאים הבאים: התלות היא טריוויאלית, או: צד שמאל שלה הוא מפתח על דוגמא: R = (A, B, C) F = { A  B, B  C, C  A} R היא ב- BCNFכי לכל התלויות ב- F יש מפתח על בצד שמאל (כלומר אלו תלויות במפתח על). הערה: מספיק לבדוק עבור התלויות ב F (אם יש הפרה ב F+ אז יש הפרה ב F)

45 מדוע רצוי שסכימה תהיה BCNF?
כאשר על סכימה חלה תלות לא טריוויאלית שאינה תלות במפתח על, יש חשש להיווצרות כפילות בנתונים. מאחר וצד שמאל של התלות (p) אינו מפתח על, ערך נתון של P (למשל "שיווק") יכול להופיע במספר רב של שורות. בגלל התלות האמורה, הוא תמיד יופיע עם אותו הערך של S (100 בדוגמא) וכאן הכפילות. כאשר תבנית היא ב-BCNF לא נוצרת בעיה זו S P N 10 מזכיר יוסי 300 מנכל מיכל 100 שיווק דני ענת משה 80 תוכנה נורית N  P P  S

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

47 אלגוריתם פירוק ל BCNF בהנתן סכמה R וקבוצת ת"פ F:
תהי S קבוצת תתי הסכמות בתוצאה S מאותחלת להכיל את R לכל סכמה K ב S: מחפשים הפרה של BCNF, כלומר ת"פ X  A כך ש A  X וגם X+!=K אם X  A היא הפרה של סכמה K, אז מפרקים את K ל XA ול K-A

48 דוגמא להרצת האלגוריתם R = (A, B, C, D, E) F = {A  BD, D  AE, C  A}

49 האלגוריתם מייצר: תת סכמות שכולן בצורת BCNF פירוק ללא אובדן (משמר מידע)
באופן כללי, הפירוק אינו משמר ת"פ

50 3NF תבנית R עם קבוצת תלויות F החלה עליה היא בצורה נורמלית 3NF אם כל תלות X  A בסגור של F מקיימת לפחות אחד משלושת התנאים הבאים: X  A היא טריוויאלית (A מוכל ב X) X מפתח על A היא חלק ממפתח של R נשים לב שמכאן נובע שכל תבנית שהיא ב BCNF היא גם ב 3NF אך לא בהכרח להיפך

51 דוגמא R = (A, B, C) F = { AB  C, C  A}
תלות זו מקיימת את התנאי השני בהגדרה של 3NF (ושל BCNF). לא כן הדבר לגבי התלות C  A ולכן R אינה ב- BCNF. אבל התלות C  A כן מקיימת את התנאי השלישי בהגדרה של 3NF: A היא חלק מהמפתח AB. לכן R היא ב- 3NF.

52 אלגוריתם לפירוק ל- 3NF קלט תבנית R עם קבוצת תלויות F
פלט פירוק משמר מידע ומשמר תלויות של R לתבניות שכולן ב- 3NF 1. חשב כיסוי חסר כפילויות G של F 2. עבור כל תלות X  A ב- G, צור סכמה XA אלא אם XA מוכל בסכמה שכבר נוצרה 3. אם אף אחת מהסכמות שנוצרו אינה מכילה מפתח כלשהו של R אז הוסף סכמה המכילה את התכונות של מפתח כזה.

53 דוגמא R = (A, B, C, D, E) F = { AB  C, C  B, DE  CB } ADE מפתח יחיד
כל התלויות מפרות 3NF שלב א': נמצא כיסוי קנוני עבור F FC = { AB  C, C  B, DE  C} שלב ב': יצירת תבנית עבור כל תלות: מהתלות הראשונה נקבל: R1 = (A, B, C) עבור התלות השניה אין צורך ליצור תבנית כי כל תכונותיה (B, C) נמצאות בתבנית R1. מהתלות השלישית נקבל: R2 = (C, D, E) שלב ג': אף אחת מהתבניות שקיבלנו אינה מכילה מפתח של R. לכן עלינו להוסיף את התבנית R3 = (A, D, E). בסך הכל הפירוק שהתקבל הוא: R1 = (A, B, C) R2 = (C, D, E) R3 = (A, D, E)

54 האלגוריתם מייצר: תת סכמות שכולן בצורת 3NF פירוק ללא אובדן (משמר מידע)
פירוק משמר ת"פ


Descargar ppt "תיאורית תכנון סכמות למסדי נתונים Database design theory"

Presentaciones similares


Anuncios Google