צורות נורמאליות

Post on 05-Jan-2016

58 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

צורות נורמאליות. צורה נורמאלית ( Normal Form ) היא תכונה של סכמה רלציונית, המודדת את "טיב" הסכמה מבחינת מניעת כפילויות. BCNF 3NF 4NF (ילמד בהרצאה). צורה נורמאלית BCNF – Boyce-Codd. הגדרה: תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונאליות מעל R . הסכמה R היא ב- BCNF - PowerPoint PPT Presentation

TRANSCRIPT

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 נשמרת בפירוק אינההפירוק אינו משמר תלויות

top related