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

Post on 24-Jan-2016

236 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

נושאים

תזכורת

סכימה )תבנית(•

יחס )טבלה(•

תכונות=אטריביוטים•

תכנון מסדי נתוניםמטרה: ליצור מסדי נתונים עם מבנה "נכון"•

StudIDStudNameStudDept.DeptBudgetDeptManager

10123MosheMath200000Prof. Shamir

22458MickeyComputers900000Prof. Navot

33453EliMath200000Prof. Shamir

88966AnatBiology390000Prof. Parnas

55611MenahemMath200000Prof. Shamir

מסד נתונים עם מבנה נכון:

מונע כפילות מידע 1.

מאפשר לייצג מידע2.

קונסיסטנטי3.

StudIDStudNameStudDept.

10123MosheMath

22458MickeyComputers

33453EliMath

88966AnatBiology

55611MenahemMath

StudIDStudNameStudDept.DptBdgetDptMgr

10123MosheMath200000Prof. Shamir

22458MickeyComputers900000Prof. Navot

33453EliMath200000Prof. Shamir

88966AnatBiology390000Prof. Parnas

55611MenahemMath200000Prof. Shamir

StudDept.DptBdgetDptMgr

Math200000Prof.

Shamir

Computers900000Prof. Navot

Biology390000Prof.

Parnas

תלות פונקציונלית

תלות פונקציונלית היא אילוץ על טבלה•

ת"פ מאפשרות לבטא אילוצים כגון: "לכל •מחלקה יש מנהל יחיד"

במילים אחרות: בכל הרשומות עם אותה •מחלקה, יופיע אותו מנהל

סימון: מחלקה-<מנהל•

מחלקה מסוימת "קובעת" מנהל מסוים•

StudIDStudNameStudDept.DeptBudgetDeptManager

10123MosheMath200000Prof. Shamir

22458MickeyComputers900000Prof. Navot

33453EliMath200000Prof. Shamir

88966MosheBiology390000Prof. Parnas

55611MenahemMath200000Prof. Shamir

StudDept.-> DeptBudget

StudDept.-> DeptManager

DeptBudget-> DeptManager

StudDept.-> StudName

StudName-> StudDept

ABCD

1238

3382

2347

1258

2347

A->B

A->D

A->BD

AC->D

A->A

ועוד...

B->A

A->C

A->BC

תלות אם קיימת תלות פונקציונלית )פורמלית(:•, אזי לכל שתי Rעל היחס פונקציונאלית

יש גם בעלות ערכים זהים ב- t2 ו- t1שורות . ערכים זהים ב-

t1[] = t2 [] t1[ ] = t2 [ ]ז"א

יכולות להיות תכונות בודדות או , נשים לב ש •קבוצות של תכונות

,..A,B,C כקבוצות אטריביוטים ו X,Y,Zנהוג לסמן •כאטריביוטים בודדים

XY כ Y ו Xנהוג לסמן איחוד של קבוצות •

שימוש בתלויות פונקציונליותמשמשות ככלי בתהליך בניית יחסים "נכונים"•

התהליך:•קביעת העמודות של היחס )מנהל, מחלקה, 1.

תלמיד,..(

קביעת הת"פ הרצויות )מחלקה-<מנהל,..(2.

ע"י שימוש בעמודות ובת"פ שנקבעו, בודקים האם יש 3.שכפול מידע

אם כן- מפרקים את היחס לתת יחסים 4.

ת"פ היא טריוויאלית אם היא מתקיימת בכל •יחס

•X->Y טריוויאלית אמ"מ Y Xלמשל:•

– A->A– AC->C

ת"פ טריוויאלית

סגור של קבוצת אטריביוטים

ואוסף אטריביוטים, סגור Fבהנתן אוסף ת"פ • הוא אוסף כל Xשל קבוצת אטריביוטים

מ- X->A כך שניתן לגזור את Aהאטריביוטים F

+Xסימון: •F

F גזירה מ X->Yהלמה של הסגור: •+Y Xאמ"מ

F

דוגמא למציאת סגורדוגמא: •

אז:F={A->B, B->C}, עם )R)ABCיהי – A=+

ABC B=+

BCC=+

CAC=+

ABC

אלגוריתם למציאת סגור של קבוצת תכונות

:X, וקבוצת תכונות F, קבוצת ת"פ Rעבור יחס •Xסגור_זמני=–כל עוד סגור_זמני מתעדכן:–

לא, Z מוכל בסגור_זמני ו Y: אם Y->Zעבור על כל ת"פ • לסגור זמניZאז הוסף את

לאחר סיום העידכונים, סגור_זמני הוא הסגור –Xהמלא של

דוגמא למציאת סגור של קבוצת תכונות

F={A->BD, C->B, BC->E} עם )R)ABCDEיהי •? Cמהו הסגור של ••CBE?Aמהו הסגור של ••ABD

:X, וקבוצת תכונות F, קבוצת ת"פ Rעבור יחס •

Xסגור_זמני=–

כל עוד סגור_זמני מתעדכן:–

לא, אז Z מוכל בסגור_זמני ו Y: אם Y->Zעבור על כל ת"פ • לסגור זמניZהוסף את

Xלאחר סיום העידכונים, סגור_זמני הוא הסגור המלא של –

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

•X הוא מפתח אם הוא מפתח על ולא ניתן להוריד ממנו אטריביוט והוא עדיין יישאר

מפתח על

הוא מפתח על יש לחשב את Xכדי לדעת אם •הסגור שלו

הוא מפתח יש לבדוק ראשית Xכדי לדעת אם •שהוא מפתח על ואז לבדוק האם יש לו תת

קבוצה שגם היא מפתח על

הסגור של אוסף תלויות פונקציונליות

בהנתן אוסף ת"פ, רוצים לבדוק מהן כל •הת"פ הנובעות מהן

R אוסף תלויות פונקציונליות עבור יחס Fיהי •F={A->B, A->C, C->D}למשל: •אוסף כל התלויות הפונקציונליות שנובעות •

. +F. מסומן ב-F של הסגור היא Fלוגית מ-

מציאת הסגור של קבוצת ת"פניתן למצוא את הסגור של קבוצת ת"פ ע"י •

שימוש באקסיומות הבאות:. אזי רפלקסיביות: אם – אז אוגמנטציה: אם –. אז וגם טרנזיטיביות: אם –

דוגמא

)R)A,B,C,Dיהי יחס •

R אוסף ת"פ עבור היחס Fיהי •

•F={A->B, B->D, C->D}

אך היא נובעת מ F אינה מופיעה ב A->Dהת"פ •F)?מדוע(

+F תהיה שייכת ל }A->D{מכאן, ש •

היא בעיה קשה- זמן ריצה +Fמציאת •אקספוננציאלי

+Fבדיקת שייכות של ת"פ לסגור לכאורה, כדי לבדוק האם ת"פ מסוימת נובעת •

ולראות אם היא +F, צריך לחשב את Fמ כלולה

הוא קשה+Fאך חישוב •

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

, F תחת Xנחשב את הסגור של קבוצת התכונות כלולהYונראה אם

דוגמא•R)ABCD(, F={AB->D,C->B,CD->A, AD->C}

?+F נמצאת ב AC->Dהאם •

:+ACנחשב את •–}AC{–}ACB{–}ACBD{–D נמצא בסגור ולכן AC->D חלה על R

כיסוי מינימלי )קנוני( של קבוצת ת"פ- אינטואיציה

)R)ABCDנניח שהיינו רוצים לבדוק האם יחס •-F={Aמקיים את אוסף הת"פ הבא:

>B, B->C, A->C, AB->C}

-AB ו A->Cניתן לראות כי "מיותר" לבדוק את •>C

כל שאין בו ת"פ Fאז מהו הייצוג של •"מיותרות"?

Fהכיסוי המינימלי של זה בדיוק •

כיסוי מינימלי )קנוני( של קבוצת ת"פ

Fc הוא קבוצת ת"פ Fכיסוי מינימלי של •

)מצומצמת יותר(, המקיימת:.1Fc+=F+

יש אטריביוט בודד בצד ימין Fcלכל ת"פ ב 2.

אין אטריביוט מיותר בצד שמאל של אף ת"פ3.

ת"פ עודפת Fcאין ב 4.

דוגמא לתכונה עודפת

• F = { AB C, C B, A B }

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

אלגוריתם למציאת כיסוי מינימליFc =Fאתחול •

צור ת"פ עם אטריביוט בודד בצד ימין ע"י פירוק•

תכונות עודפות )בצד שמאל(Fcמחק מ •

ת"פ עודפותFcמחק מ •

מחיקת תכונות עודפות

צריך לבדוק אם מחיקה של אטריביוט משנה את הסגור.

במקום זאת, מספיק לבדוק אם הת"פ החדשה )ה"מקוצצת"(, נגזרת .Fמ

.F נגזר מ X\B->A, בדוק האם X ב B, ולכל X->Aלכל

אם כן- החלף את הת"פ בת"פ ה"מקוצצת".

מצא כיסוי מינימלי לקבוצות הת"פ הבאות:

.1F={A->B, CE->A, B->C, AC->D}

.2F={AB->C, A->B, C->B}

.3F = { A G, B D, GD C, AB C}

תזכורת לסכימה בעייתיתNamePositionSalary

10מזכיריוסי300מנכלמיכל100שיווקדני100שיווקענת100שיווקמשה80תוכנהנורית

: כפילות מידע1בעיה

בזבוז מקום•

סיכון בעדכון שגוי•

: ייצוג לא טבעי של נתונים חלקיים2בעיה

שמירת משכורת של תפקיד שאינו מאויש•

פתרון: פירוק לתת-סכימות

NamePosition

מזכיריוסי

מנכלמיכל

שיווקדני

שיווקענת

שיווקמשה

תוכנהנורית

PositionSalary

10מזכיר

300מנכל

100שיווק

80תוכנה

הגדרה של פירוק

פירוק נקראות }R1, R2, ... Rn{קבוצת סכמות •(decomposition של הסכמה )Rאם מתקיים

R=R1UR2U…URn

:R=NPSפירוקים לדוגמא של •–R1=NP, R2=PS–R1=NP, R2=NS–R1=N, R2=PS–…

אבל, רק חלק מהפירוקים הללו "טובים"...•

פירוק לא "טוב" עם התלויות:R = NPSנתבונן שוב בתבנית •

F = {N P, P S}

R1=NS, R2=PSונתבונן על הפירוק: •

NS

100דני100נורית200טלי

PS

100שיווק100תוכנה200ניהול

NPS

100שיווקדני

100תוכנהנורית

200ניהולטלי

לאחר הפירוק, האם ניתן לדעת מה תפקידה של טלי?

ומה תפקידו של דני?

זה נקרא "פירוק המאבד מידע"

שמירת מידע של פירוק מוגדרים על הסכמות, ללא קשר /חשוב: איבודלתוכן היחסים!

פירוק ללא אובדן )משמר מידע(

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

המקיים את ( R )שתבניתו r)משמר מידע( אם עבור כל יחס , מתקייםFכל האילוצים ב-

r = R1)r( R2)r( R3)r( ... Rn)r(

דוגמא עם התלויות:R = ABCנתבונן בתבנית •

F = {A C, C B}

R1=AB, R2=BCונתבונן על הפירוק: •

AB

x1y2z3

BC

1t

2s

3r

ABC

x1t

y2s

z3r

? R1)r( R2)r( = rהאם

האם ניתן לקבוע מכך שהפירוק משמר ABמידע?

x1y1z3

BC

1t

1s

3r

ABC

x1t

y1s

z3r

? R1)r( R2)r( = rהאם

כן!

לא! הפירוק אינו משמר מידע. למשל:

לא!!

כיצד אם כן נבדוק אם פירוק הינו ללא אובדן?•כדי להפריך- מספיקה דוגמה נגדית–כדי להוכיח- לכאורה צריך להראות שהצירוף –

לכל הטבעי של תתי-היחסים שווה ליחס המקורי, יחס עם הסכימה הנתונה המקיים את הת"פ

הנתונותכמובן שלא ניתן לבצע זאת–

בשיעור הוצג אלגוריתם לבדיקה אם פירוק הוא •ללא אובדן

ת"פ של תת-סכימה. מהן R תת סכימה של Ri ו- F סכימה עם אוסף ת"פ Rתהי •

?Riהת"פ של "Ri על העמודות של F הן "ההטלה של הת"פ Riהת"פ של • F. תהי R פירוק של התבנית }R1, R2, ... Rn{הגדרה: יהי •

ההטלה . אז Rקבוצה של תלויות פונקציונליות החלה על היא קבוצת כל התלויות )Ri )n 1 i לתבנית Fשל

. סימון: Ri המכילות רק תכונות שנמצאות ב- F של בסגורFi.

דוגמא:••R = )A, B, C( F = {A B, B C}•R1 = )A, C( R2 = )B, C(אז:••F1={A C}, F2={B C}

פירוק משמר ת"פפירוק משמר ת"פ הינו פירוק אשר מבטיח שהת"פ בסכימה המקורית •

נאכפות גם לאחר הפירוק קבוצת F. תהי R פירוק של התבנית }R1, R2 ... Rn{ יהי הגדרה•

Ri )1 i לתבניות F ההטלות של Fi ותהיינה Rתלויות החלה על n( פירוק משמר תלויות. אז הפירוק הזה יקרא( dependency

preserving decompositionאם מתקיים ) (F1 F2 ... Fn = +)F+

הערות:+ F(+ F1 F2 ... Fn)עבור כל פירוק מתקיים •כאשר הפירוק הוא משמר תלויות מתקיימת גם ההכלה בכיוון ההפוך •

ואז יש שיוויון. כדי לבדוק האם פירוק הוא משמר תלויות מספיק לבדוק אם מתקיים•

(F1 F2 ... Fn +) Fקיים אלגוריתם יעיל לבדיקה האם ת"פ נשמרת )בהמשך( •

דוגמא

•R = )A, B, C( F = {A B, B C}

•R1 = )A, C( R2 = )B, C(

אז:•

•F1={A C}, F2={B C}

ולכן (+F1 F2) לא נמצאת ב A Bהת"פ •הפירוק אינו משמר ת"פ

'דוגמא ב

•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בסגור של מסתבר שכן ולכן הפירוק משמר ת"פ•

מה לגבי הפירוק הבא?

SC

CohenDB

LevyOS

LevyDB

ST

CohenSmith

LevyJones

LevySmith

SCT

CohenDBSmith

LevyOSJones

LevyDBSmith

F = {C T}

אינו משמר מידע ואינו משמר ת"פ

וזה?

ST

CohenSmith

KatzSmith

LevyJones

CT

DBSmith

OSJones

AlgoSmith

SCT

CohenDBSmith

KatzAlgoSmith

LevyOSJones

F = {C T}

אינו משמר מידע אך כן משמר ת"פ

וזה?

SC

CohenDB

KatzAlgo

LevyOS

CT

DBSmith

OSJones

AlgoSmith

SCT

CohenDBSmith

KatzAlgoSmith

LevyOSJones

F = {C T}

משמר מידע )אלגוריתם מהשיעור( ומשמר ת"פ

X->Yאלגוריתם לבדיקה האם ת"פ נשמרת בפירוק

/* check if X->Y is preserved */IsPreserved(X,Y,R1…k)Z:=Xwhile changes to Z occur do for i=1 to k do Z:= Z ((Z Ri)+ Ri) if YZ return trueelse return false

IsDependencyPreserving(F,R1…k)for each X->Y in F do

if not IsPreserved(X,Y,R1…k)return false

return true

X->Yאלגוריתם לבדיקה האם ת"פ (2נשמרת בפירוק )

דוגמא

•R=ABCD

•F = {A -> B, B -> C, C -> D, D -> A}

•R1=AB, R2=BC, R3=CD

האם הפירוק הנ"ל משמר ת"פ?•

לא!•

BCNF החלה עליה היא F עם קבוצת תלויות Rסכימה •

F אם כל תלות בסגור של BCNFבצורה נורמלית מקיימת לפחות אחד משני התנאים הבאים:

התלות היא טריוויאלית, או:–מפתח עלצד שמאל שלה הוא –

דוגמא:• R = )A, B, C( F = { A B, B C, C A}•R -היא ב BCNF -כי לכל התלויות בF יש מפתח

על בצד שמאל )כלומר אלו תלויות במפתח על(. )אם יש Fהערה: מספיק לבדוק עבור התלויות ב •

(F אז יש הפרה ב +Fהפרה ב

?BCNFמדוע רצוי שסכימה תהיה כאשר על סכימה חלה תלות לא טריוויאלית שאינה תלות •

במפתח על, יש חשש להיווצרות כפילות בנתונים. ( אינו מפתח על, ערך נתון של pמאחר וצד שמאל של התלות )•

P למשל "שיווק"( יכול להופיע במספר רב של שורות. בגלל( S( 100התלות האמורה, הוא תמיד יופיע עם אותו הערך של

בדוגמא( וכאן הכפילות. לא נוצרת בעיה זו BCNFכאשר תבנית היא ב-•

NPS

10מזכיריוסי300מנכלמיכל100שיווקדני100שיווקענת100שיווקמשה80תוכנהנורית

N PP S

BCNFפירוק לתת סכמות שהן , ניתן לפרקה לתת BCNFבהנתן סכמה שאינה •

.BCNFסכמות שהן

ניתן לעשות זאת באופן טריוויאלי ע"י פירוק • אטריביוטים )ואז הן 2לתת-סכמות שלכל אחת

BCNF)

אך לא מובטח שזהו פירוק ללא אובדן•

המטרה: אלגוריתם המפרק סכמה לתת סכמות •, והפירוק הוא ללא אובדן BCNFשהן

BCNFאלגוריתם פירוק ל

:F וקבוצת ת"פ Rבהנתן סכמה •

קבוצת תתי הסכמות בתוצאהSתהי •

•S מאותחלת להכיל את R

:S ב Kלכל סכמה • כך X A, כלומר ת"פ BCNFמחפשים הפרה של –

X+!=K וגם A Xש , אז מפרקים K היא הפרה של סכמה X Aאם –

K-A ול XA ל Kאת

דוגמא להרצת האלגוריתם• R = )A, B, C, D, E(

• F = {A BD, D AE, C A}

האלגוריתם מייצר:

BCNFתת סכמות שכולן בצורת •

פירוק ללא אובדן )משמר מידע(•

באופן כללי, הפירוק אינו משמר ת"פ•

3NF החלה עליה F עם קבוצת תלויות Rתבנית •

X A אם כל תלות 3NFהיא בצורה נורמלית מקיימת לפחות אחד משלושת Fבסגור של

התנאים הבאים:–X A( היא טריוויאלית A מוכל ב X)–Xמפתח על –A היא חלק ממפתח של R

נשים לב שמכאן נובע שכל תבנית שהיא ב •BCNF 3 היא גם בNFאך לא בהכרח להיפך

דוגמא

•R = )A, B, C( F = { AB C, C A} הוא מפתח-עלAB Cצד שמאל של התלות •תלות זו מקיימת את התנאי השני בהגדרה של •

3NF ושל( BCNF.) אינה R ולכן C Aלא כן הדבר לגבי התלות •

.BCNFב- כן מקיימת את התנאי C Aאבל התלות •

:3NFהשלישי בהגדרה של •A היא חלק מהמפתח AB לכן .R -3 היא בNF.

3NFאלגוריתם לפירוק ל-

F עם קבוצת תלויות R תבנית קלט•

R פירוק משמר מידע ומשמר תלויות של פלט•3NFלתבניות שכולן ב-

F של G. חשב כיסוי חסר כפילויות 1

אלא אם XA, צור סכמה G ב- X A. עבור כל תלות 2XA מוכל בסכמה שכבר נוצרה

. אם אף אחת מהסכמות שנוצרו אינה מכילה מפתח 3 אז הוסף סכמה המכילה את התכונות Rכלשהו של

של מפתח כזה.

דוגמא•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(

האלגוריתם מייצר:

3NFתת סכמות שכולן בצורת •

פירוק ללא אובדן )משמר מידע(•

פירוק משמר ת"פ•

top related