תיאורית תכנון סכמות למסדי נתונים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תת סכמות שכולן בצורת •
פירוק ללא אובדן )משמר מידע(•
פירוק משמר ת"פ•