Upload
ilana
View
59
Download
0
Embed Size (px)
DESCRIPTION
צורות נורמאליות. צורה נורמאלית ( Normal Form ) היא תכונה של סכמה רלציונית, המודדת את "טיב" הסכמה מבחינת מניעת כפילויות. BCNF 3NF 4NF (ילמד בהרצאה). צורה נורמאלית BCNF – Boyce-Codd. הגדרה: תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונאליות מעל R . הסכמה R היא ב- BCNF - PowerPoint PPT Presentation
Citation preview
236363 - DBMS, Design 1
צורות נורמאליות
( צורה נורמאליתNormal Form היא תכונה של )סכמה רלציונית, המודדת את "טיב" הסכמה
מבחינת מניעת כפילויות. BCNF 3NF4NF)ילמד בהרצאה(
236363 - DBMS, Design 2
BCNF – Boyce-Coddצורה נורמאלית
:הגדרה סכמה רלציונית Rתהי
.R קבוצת תלויות פונקציונאליות מעל Fותהי BCNF היא ב-Rהסכמה
אם לכל תלות פונקציונאליתX → Y∈F+ -כך ש Y⊄X ,
XX הוא על-מפתח של הוא על-מפתח של RR . .BCNF מבטאת את העובדה שתלות פונקציונאלית במשהו שאינו מפתח-על
היא "דבר רע". אם קיימת תלות לא טריוויאלית בקבוצת שדות שאיננה מפתחעל אזי תכנון הסכמות הרלציוניות הוא לקוי, ובמסד עלולות להיווצר כפילויות.
236363 - DBMS, Design 3
?BCNFאיך נבדוק אם סכמה ב-
:על פי ההגדרה יש לחשב אתF+
עבור כלX→Y∈ F + יש לבדוק אםX.הינו על-מפתח
.Rהוא אקספוננציאלי בגודל של +F: הגודל של הבעיה יחסית BCNF איננה ב-R: אם סכמה רלציונית משפט
שמפרה את +X→Y∈ F, כלומר קיימת תלותFל-תנאי
שמפרה את Z→W∈ F , אזי קיימת תלותBCNFה-.BCNFתנאי ה-
. אין צורך X→Y∈ F: מספיק לבדוק עבור כל מסקנה.Fלחשב את הסגור של
236363 - DBMS, Design 4
BCNFדוגמא – :דוגמה
R(Cust_Id, Track, Faculty, Book_Name)בהינתן הסכמה
וקבוצת התלויות הפונקציונליות
F={Cust_IdF={Cust_Id→→Track,Track Track,Track →→ Faculty} Faculty} ?BCNF ב-Rהאם
-בF קיימת התלות →Faculty Track אך ,Track אינו על-מפתח, משום .BCNF איננה ב-Rכך
-מאחר וR-אינה ב BCNF.קיימת כפילות במסד מופיע ברלציה פעמים רבות כמספר CSלמשל, שם הפקולטה
.CSהספרים שהוזמנו ע"י סטודנטים השייכים למסלולים של הפקולטה
פירוק ל-פתרון :BCNF פירוק של - R לתתי-סכמות כך שכל יחסית לתלויות הרלוונטיות לה.BCNFאחת מהן נמצאת ב-
236363 - DBMS, Design 5
BCNF – Boyce-Coddצורה נורמאלית
:הגדרה
סכמה רלציונית,Rתהי
,R קבוצת תלויות פונקציונאליות מעל Fתהי
.R פירוק של =R1, R2 ,.., Rn{ ρ{ויהי
ρ -הוא פירוק לBCNF
πRi בהינתן BCNF היא ב-Riאם כל תת-סכמה F.
)הערה: באופן דומה מגדירים פירוק לצורה הבאה שנראה 3NF.)
236363 - DBMS, Design 6
)בהינתן קבוצת -BCNF לRפירוק סכמה (Fתלויות
1אלגוריתם .1}R {ρ ←.
. עצור –BCNF הן ב-ρאם כל הסכמות ב- 2.
, BCNFשאינה ב- S ∈ ρ מצא סכמה3.
X→Y ∈ πsF כלומר שקיימת תלות פונקציונלית
. S אינו על-מפתח של X ו- Y ⊈ Xכך ש-
⋃ρ ← )ρ \ {S}( {S\)Y\X(} {XY}בצע: ⋃ .2חזור ל-1.
אך לא בהכרחהפירוק שאלגוריתם זה מוצא הוא משמר מידע משמר
נעשת בזמן אקספוננציאלי.πsFהחיסרון של אלגוריתם זה הוא שמציאת תלויות.
בשקפים הבאים נראה אלגוריתם פולינומיאלי אבל קצת פחות אינטואטיבי.
236363 - DBMS, Design 7
דוגמה
:F )ציונים של סטודנטים(, וקבוצת תלויות Rנתונה הסכמה R)sid , sname , cno , cname, grade(F = {sid → sname, cno → cname, )sid , cno ( → grade} sid -- מס' סטודנט sname -- שם סטודנט cno -- מס' קורס Cname -- שם קורס Grade -- ציון
המשך
:יש לבדוק האם קיימת תלות שצידה השמאלי אינו מפתח עבור התלותsid → sname מתקיים כי sid:אינו מפתח ולכן נפרק
}RR11)sid, sname(, R’))sid, sname(, R’)sid , cno , cname, grade((={={ ρ }cno → cname, )sid , cno ( → grade{ הואπR’Fמתקיים כי כיסוי מתקיים כי כיסוי
עבור התלותcno → cnameמתקיים כי cno :אינו מפתח ולכן נפרק }RR11)sid, sname(, R)sid, sname(, R22))cno , , cname(, R’)(, R’)sid , cno , grade((={={ ρ
}grade ( → sid , cno{ ) הואπR’Fמתקיים כי כיסוי מתקיים כי כיסוי
עבור התלות(sid , cno → ) grade מתקיים כי (sid , cno) הוא מפתח ולכן נקבל:
}RR11)sid, sname(, R)sid, sname(, R22))cno , , cname(, R(, R33))sid , cno , grade((={={ ρ
236363 - DBMS, Design 9
דוגמה - המשך
R)sid, sname, cno, cname, grade(
R’)sid, cno, cname, grade(
RR22)cno, cname()cno, cname(RR33)sid, cno, grade()sid, cno, grade(
RR11)sid, sname()sid, sname(
וכך יצא הפירוק:• F = {sid → sname, cno → cname, )sid, cno( → grade}
.BCNF הוא משמר מידע וב-}R1,R3,R4{לפי הבנייה, הפירוק ל- •
236363 - DBMS, Design 10
decompose(Z){
if you cannot find A and B such that ( \ { , }) return STOP
while Y contains A and B such that (Y \ { , })
\ { }
return {Z \ { },Y}
}
Z A B A
Y Z
A B A
Y Y B
A
decompose)Z( מחזירה פירוק משמר מידע של Z-כך ש Y-הוא ב BCNF ואת Z’ יש צורך .STOPלהמשיך לפרק עד שמוחזר
-לפעמים הוא יפרק "בטעות" גם רלציה שהיא כבר כן בBCNF.)תוך כדי שימור מידע(
.Z כאלה והאלגוריתם ימשיך לפרק את B ו-A ייתכן ועדיין נמצא BCNF ב-Z: אם שימו לב.BCNF היא ב-תת סכמהכרגע אין בידינו אלגוריתם יעיל להכרעה האם
)בהינתן קבוצת -BCNF לRפירוק סכמה (Fתלויות
2אלגוריתם
236363 - DBMS, Design 11
{sid,sname,cno,cname,grade}
{sid,sname,cno,grade}
{sid,sname,cno}
F = {sid → sname, cno → cname, )sid, cno( → grade}
R)sid, sname, cno, cname, grade(
ע"פ האלגוריתםR ל-decomposeנבצע
\{grade,cname} →grade
\{sname,grade} → sname
\{sname,cno} → sname
{sid,sname}
Z = {sid,sname,cno,cname,grade}\{sname} = {sid,cno,cname,grade}
Y = {sid,sname}
דוגמה
236363 - DBMS, Design 12
דוגמה - המשך
F = {sid → sname, cno → cname, )sid, cno( → grade}
Z = {sid,cno,cname,grade}
ע"פ האלגוריתםZ ל-decomposeנמשיך ונבצע
\{cname,sid} → cname
\{cname,grade} → cname
{cno,cname}
Z = {sid, cno,cname,grade}\{cname} = {sid,cno,grade}
Y = {cno,cname}
ולכן Z\AB →A כך ש- B ו-Aבשלב זה לא ניתן יותר למצוא decompose תחזיר STOP.
{sid,cno,cname,grade}
{cno,cname,grade}
236363 - DBMS, Design 13
דוגמה - המשך
R)sid, sname, cno, cname, grade(
R2)sid, cno, cname, grade(
RR44)cno, cname()cno, cname(RR33)sid, cno, grade()sid, cno, grade(
RR11)sid, sname()sid, sname(
וכך יצא הפירוק:• F = {sid → sname, cno → cname, )sid, cno( → grade}
.BCNF הוא משמר מידע וב-}R1,R3,R4{לפי הבנייה, הפירוק ל- •
236363 - DBMS, Design 14
אם 1טענה :Z-אינה ב BCNF אזי קיימים A-ו B -כך ש }Z\AB→{A.
אינו על-מפתח X כך ש-X→Y קיימת תלות BCNF אינה ב-Zאם . Y⊄Xו-
.X →B כך שלא מתקיים B אינו על מפתח קיים Xמאחר ו- X ⊆ {Z\B}מכך נובע
Y⊄X ולכן קייםA -כך ש A Y∈-ו A X∉ לכן גם .A≠B.X ⊆{Z\AB}מכך נובע Z\AB→ {Y{מכך נובע
.Z\AB→ {A{ כך נובע
)בהינתן קבוצת -BCNF לRפירוק סכמה (Fתלויות
2אלגוריתם
236363 - DBMS, Design 15
הפירוק 2טענה :}Z\A,Y{.הוא משמר מידע
A היא התכונה האחרונה כך ש (Y\AB→ )A..Y\B הופך להיות Yלאחר מכן
.A( →Y\A)לכן בסופו של דבר נקבל
⋂Z\A Y = Y\A מכיל את כל התכונות בסכמה אז Zמאחר ו- ))A=)Y\)Z\Aנבחין כי
( )Z\A(\Y)→( ⋂Z\A Y)ומכאן וזהו התנאי לשימור מידע.
)בהינתן קבוצת -BCNF לRפירוק סכמה (Fתלויות
2אלגוריתם
236363 - DBMS, Design 16
הערות הפירוק שהאלגוריתמים האלה מוצאים הוא משמר
מידע אך לא בהכרח משמר תלויות.
לא כל פירוק בצורתBCNF משמר מידע. רק אם הפירוק נוצר תוך כדי שימור מידע כגון באלגוריתמים
האלה אז התוצאה הסופית היא משמרת מידע.
)בהינתן קבוצת -BCNF לRפירוק סכמה (Fתלויות
236363 - DBMS, Design 17
-BCNF – Boyceצורה נורמאלית Codd
שמשמר מידע ,BCNFתמיד קיים פירוק ל-
תלויות. שמשמר BCNF אך לא תמיד קיים פירוק ל-:משפט
סכמה רלציונית Rקיימים R קבוצת תלויות פונקציונאליות מעל Fו-
עבורם לא קיים פירוק .BCNFמשמר מידע ומשמר תלויות ל-
236363 - DBMS, Design 18
BCNFושימור תלויות
הוכחה ע"י דוגמה:
R)עיר, קידומת, טלפון(עבור הסכמה וקבוצת התלויות
F{עיר→)טלפון,קידומת(, קידומת→עיר}=, משמר מידע ומשמר תלויות.BCNFלא קיים פירוק
עיר→)טלפון,: על מנת לשמר את התלות הסיבהכל שלושת האטריביוטים חייבים להופיע קידומת(
בסכמה אחת.
236363 - DBMS, Design 19
BCNFלעומת שימור תלויות
לעתים קרובות יש לבחור בין שימור תלויות לביןBCNF.
:קריטריון לבחירה: אופן השימוש הצפוי במסד הנתונים הרבה עדכונים של שדה עם כפילויות בסכמה המקורית
)מונע כפילויות(:BCNF פירוק ל-⇐)החלפת קידומת של עיר( .R1,)עיר, טלפון(R2)עיר, קידומת(
הרבה הוספות/עדכונים של שדות המופיעים בתלות שלא ⇐נשמרת בפירוק )למשל, מס' טלפון(
. Rללא פירוק )שימור תלויות(: )עיר, קידומת, טלפון(
3NFלשם כך נשתמש בצורה נורמלית
236363 - DBMS, Design 20
3NFצורה נורמאלית
:הגדרה סכמה רלציוניתRתהי
.R קבוצת תלויות פונקציונאליות מעל Fותהי
R-3 היא בNF אם לכל תלות פונקציונאלית X→A∈F+ -כך ש A ∉ X ,
X הוא מפתח על של R אוA מוכל במפתח קביל של R.
236363 - DBMS, Design 21
דוגמה
)הסכמה )עיר, קידומת, טלפוןR בהינתן התלויות :הפונקציונליות
F ={עיר→)טלפון,קידומת(, קידומת→עיר} 3NF.נמצאת ב-
:הסיבה של הסכמה הם הקביליםהקביליםהמפתחות
)קידומת,טלפון(. )עיר, טלפון( ו- כל תלות מתוךF-3 מקיימת את תנאי הNF.-כמו בBCNF גם כאן מספיק לבדוק רק את התלויות של F.
236363 - DBMS, Design 22
צורות נורמאליות
-תמיד מתקיים: כל סכמה שהיא בBCNF היא גם 3NFב-
ההפך לא בהכרח
BCNF 3 מונעת יותר כפילויות בלתי רצויות מאשרNF
-3תמיד קיים פירוק לNFשהוא משמר מידע ותלויות אף על פי 3NF זה לא כך ולכן לעיתים נעדיף פירוק ל-BCNF)ב-
(BCNFשהוא מונע פחות כפילויות מ-
236363 - DBMS, Design 23
3NF ל-Rאלגוריתם לפירוק סכמה
בהינתן כיסוי מינימלי של תלויות פונקציונליותF::
תלות פונקציונלית שכוללת את כל Fאם קיימת ב-1.} - עצור.R, התשובה היא {Rהתכונות ב-
לכל קבוצת תלויות פונקציונליות2.
X → An X → A2,…, X → A1, התלויות באותוX ,.XA1A2 ...An{ }צור סכמה
l אם אין אף סכמה המכילה מפתח קביל שלR ,.Rהוסף סכמה שהיא מפתח קביל כלשהו של
הפירוק שאלגוריתם זה מוצא הוא משמר מידע ותלויות.הפירוק שאלגוריתם זה מוצא הוא משמר מידע ותלויות.
236363 - DBMS, Design 24
– דוגמה3NFפירוק ל-
כאשר נתון:3NFפרק הסכמה הבאה ל-תרגיל: R)dname, daddr, id, pname, paddr, pres_no, date,
med_name, qnt(F = {dname → daddr,
id → pname, id → paddr, id → dname, pres_no → date, pres_no → id, )pres_no, med_name( → qnt}
236363 - DBMS, Design 25
– דוגמה3NFפירוק ל-
:פתרון תלות פונקציונלית המכילה את כל התכונות Fלא קיימת ב-1.
.Rב-ניצור סכמות לפי התלויות הפונקציונליות:2.
R1)dname, daddr(
R2)id, pname, paddr, dname(
R3)pres_no, date, id(
R4)pres_no, med_name, qnt(
.3 R4 כוללת את המפתח הקביל (pres_no, med_name) ,ולכן אין צורך להוסיף עוד סכמה.
236363 - DBMS, Design 26
3NFצורה נורמאלית
:3פרק הסכמה הבאה ל-תרגילNF :כאשר נתון R)sid , sname , cno , cname, grade(F = {sid → sname, cno → cname, )sid , cno ( → grade} sid -- מס' סטודנט sname -- שם סטודנט cno -- מס' קורס Cname -- שם קורס Grade -- ציון
R1)sid , sname(, R2)cno, cname(, R3)sid, cno, grade(
236363 - DBMS, Design 27
מועד א'08חורף
וקבוצת התלויות הפונקציונליות )R)A,B,C,D,E,Hנתונה הסכמה F={AB →H, E →BC, D →H, A →DE, C →E, D →BH}
F מצאו כיסוי מינימלי ל-:1סעיף מתקיימות שלוש הדרישות הבאות:X→Y ∈ F אם לכל תלות מינימאלית היא F: תזכורת
l|Y| = 1lF+ ≠ )F \ {X → Y}(+ -אין ב (F)."תלויות "מיותרות l לכלZ ⊂ X מתקיים F+ ≠ ))F \ {X → Y}( {Z → Y}(+
מכילה תכונות "מיותרות".(X שבה A → X תלות F)אין ב-
G ← {)X→ A( | Y ))X →Y( ∈ F A ∈ Y(};Repeat For each f = X → A ∈ G do
if A ∈ X+G\ {f} then G ← G\ {f};
For each f = X → A ∈ G and B ∈ X do if A∈)X\{B}(+
G then G←(G\{X → A}( {X\{B} → A};until no more changes to G
236363 - DBMS, Design 28
המשך
:אתחול G={AB →H, E →B, E →C D →H, A →D, A →E, C →E, D →B, D →H}
1שלב: נוריד את התלותAB → H מכיוון ומתקיים ,A ∈ BC+
G\{AB → H}
G={E →B, E →C D →H, A →D, A →E, C →E, D →B, D →H}קיבלנו נוריד את התלותD → H מכיוון ומתקיים ,H ∈ D+
G\{D → H}
G={E →B, E →C D →H, A →D, A →E, C →E, D →B}קיבלנו
אין תלות בעלת יותר מאיבר אחד בצד שמאל :2שלב
אין שינוי :1שלב
:קיבלנו G={E →B, E →C, D →H, A →D, A →E, C →E, D →B}
236363 - DBMS, Design 29
המשך
G={E →B, E →C, D →H, A →D, A →E, C →E, D →B}
ρ = {R1)A, B, D(, R2)A, C(, R3)C, D, E, H(}נתון הפירוק
?BCNF: האם הפירוק הוא ב-2סעיף :Gנבדוק כל תת סכמה יחסית להיטל על
R1 נמצאת ב-אינה BCNF מתקיים כי כיסוי .πR1Gהוא {A →B, A →D, D →B{ מתקיים כי D -אינו על מפתח ב R1
-הפירוק אינו נמצא בBCNF
236363 - DBMS, Design 30
המשך
ρ = {R1)A, B, D(, R2)A, C(, R3)C, D, E, H(}, G={E →B, E →C, D →H, A →D, A →E, C →E, D →B}
האם הפירוק משמר מידע?:3סעיף נפתור בעזרת האלגוריתם לבדיקת שימור מידע
ABCDEH
abc1de1h
ab2cd2e2h2
a3b3cdeh
ABCDEH
abc1de1h1
ab2cd2e2h2
a3b3cdeh
D→Ht1,t3
A→Dt1,t2
ABCDEH
abc1de1h
ab2cde2h2
a3b3cdeh
ABCDEH
abc1de1h
ab2cdeh2
a3b3cdeh
C→Et2,t3
D→Bt1,t3
ABCDEH
abc1de1h
abcdeh2
a3b3cdeh
236363 - DBMS, Design 31
המשך
G={E →B, E →C, D →H, A →D, A →E, C →E, D →B}
קיבלנו שורה ללא אינדקסים ולכן הפירוק משמר מידע
ABCDEH
abc1de1h
abcdeh2
a3bcdeh
ABCDEH
abc1de1h
abcdeh2
a3b3cdeh
E→Bt2,t3
D→Ht1,t2
ABCDEH
abc1de1h
abcdeh
a3bcdeh
236363 - DBMS, Design 32
המשך
ρ = {R1)A, B, D(, R2)A, C(, R3)C, D, E, H(}
G={E →B, E →C, D →H, A →D, A →E, C →E, D →B}
האם הפירוק משמר תלויות?:4סעיף }R1, R2 ,.., Rn{, ו- R קבוצת תלויות פונקציונאליות מעל F סכמה רלציונית,Rתזכורת:
ρ=
.Rפירוק של
f
f f f
f
f
for each f (X Y) F do begin
Z X;
repeat
for i 1 to n do
Z (( ) )
until no more change to Z
X Y is preserved iff Y Z
end;
ρ is
i F iZ Z R R
dependecy preserving iff all (X Y) F are preserved
236363 - DBMS, Design 33
המשך
ρ = {R1)A, B, D(, R2)A, C(, R3)C, D, E, H(} G={E →B, E →C, D →H, A →D, A →E, C →E, D →B}
אינה מוכלת באף סכמה ולכן נבדוק אם היא נשמרת לפי האלגוריתם:E →Bהתלות Zf = {E} Zf ⋂R1={} no change to Zf
Zf ⋂ R2 ={} no change to Zf
Zf ⋂ R3 = {E} {E}+
F ⋂R1= {C,E} Zf= {C,E}
Zf ⋂ R1={} no change to Zf
Zf ⋂ R2 ={} no change to Zf
קיבלנו כי Zf ={C,E} ואינו מכיל אתB לכן התלות ,E →B נשמרת בפירוק אינההפירוק אינו משמר תלויות