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

33
236363 - DBMS, Design 1 תתתתת תתתתתתתתת ( תתתת תתתתתתתתNormal Form תתת) תתתתת תת תתתת תתתתתתתת, תתתתתת תת "תתת" תתתתת תתתתתת תתתתת תתתתתתתת. BCNF 3NF 4NF )תתתת תתתתתת(

Upload: ilana

Post on 05-Jan-2016

58 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: צורות נורמאליות

236363 - DBMS, Design 1

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

( צורה נורמאליתNormal Form היא תכונה של )סכמה רלציונית, המודדת את "טיב" הסכמה

מבחינת מניעת כפילויות. BCNF 3NF4NF)ילמד בהרצאה(

Page 2: צורות נורמאליות

236363 - DBMS, Design 2

BCNF – Boyce-Coddצורה נורמאלית

:הגדרה סכמה רלציונית Rתהי

.R קבוצת תלויות פונקציונאליות מעל Fותהי BCNF היא ב-Rהסכמה

אם לכל תלות פונקציונאליתX → Y∈F+ -כך ש Y⊄X ,

XX הוא על-מפתח של הוא על-מפתח של RR . .BCNF מבטאת את העובדה שתלות פונקציונאלית במשהו שאינו מפתח-על

היא "דבר רע". אם קיימת תלות לא טריוויאלית בקבוצת שדות שאיננה מפתחעל אזי תכנון הסכמות הרלציוניות הוא לקוי, ובמסד עלולות להיווצר כפילויות.

Page 3: צורות נורמאליות

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לחשב את הסגור של

Page 4: צורות נורמאליות

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אחת מהן נמצאת ב-

Page 5: צורות נורמאליות

236363 - DBMS, Design 5

BCNF – Boyce-Coddצורה נורמאלית

:הגדרה

סכמה רלציונית,Rתהי

,R קבוצת תלויות פונקציונאליות מעל Fתהי

.R פירוק של =R1, R2 ,.., Rn{ ρ{ויהי

ρ -הוא פירוק לBCNF

πRi בהינתן BCNF היא ב-Riאם כל תת-סכמה F.

)הערה: באופן דומה מגדירים פירוק לצורה הבאה שנראה 3NF.)

Page 6: צורות נורמאליות

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החיסרון של אלגוריתם זה הוא שמציאת תלויות.

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

Page 7: צורות נורמאליות

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 -- ציון

Page 8: צורות נורמאליות

המשך

:יש לבדוק האם קיימת תלות שצידה השמאלי אינו מפתח עבור התלות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((={={ ρ

Page 9: צורות נורמאליות

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{לפי הבנייה, הפירוק ל- •

Page 10: צורות נורמאליות

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אלגוריתם

Page 11: צורות נורמאליות

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}

דוגמה

Page 12: צורות נורמאליות

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}

Page 13: צורות נורמאליות

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{לפי הבנייה, הפירוק ל- •

Page 14: צורות נורמאליות

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אלגוריתם

Page 15: צורות נורמאליות

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אלגוריתם

Page 16: צורות נורמאליות

236363 - DBMS, Design 16

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

מידע אך לא בהכרח משמר תלויות.

לא כל פירוק בצורתBCNF משמר מידע. רק אם הפירוק נוצר תוך כדי שימור מידע כגון באלגוריתמים

האלה אז התוצאה הסופית היא משמרת מידע.

)בהינתן קבוצת -BCNF לRפירוק סכמה (Fתלויות

Page 17: צורות נורמאליות

236363 - DBMS, Design 17

-BCNF – Boyceצורה נורמאלית Codd

שמשמר מידע ,BCNFתמיד קיים פירוק ל-

תלויות. שמשמר BCNF אך לא תמיד קיים פירוק ל-:משפט

סכמה רלציונית Rקיימים R קבוצת תלויות פונקציונאליות מעל Fו-

עבורם לא קיים פירוק .BCNFמשמר מידע ומשמר תלויות ל-

Page 18: צורות נורמאליות

236363 - DBMS, Design 18

BCNFושימור תלויות

הוכחה ע"י דוגמה:

R)עיר, קידומת, טלפון(עבור הסכמה וקבוצת התלויות

F{עיר→)טלפון,קידומת(, קידומת→עיר}=, משמר מידע ומשמר תלויות.BCNFלא קיים פירוק

עיר→)טלפון,: על מנת לשמר את התלות הסיבהכל שלושת האטריביוטים חייבים להופיע קידומת(

בסכמה אחת.

Page 19: צורות נורמאליות

236363 - DBMS, Design 19

BCNFלעומת שימור תלויות

לעתים קרובות יש לבחור בין שימור תלויות לביןBCNF.

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

)מונע כפילויות(:BCNF פירוק ל-⇐)החלפת קידומת של עיר( .R1,)עיר, טלפון(R2)עיר, קידומת(

הרבה הוספות/עדכונים של שדות המופיעים בתלות שלא ⇐נשמרת בפירוק )למשל, מס' טלפון(

. Rללא פירוק )שימור תלויות(: )עיר, קידומת, טלפון(

3NFלשם כך נשתמש בצורה נורמלית

Page 20: צורות נורמאליות

236363 - DBMS, Design 20

3NFצורה נורמאלית

:הגדרה סכמה רלציוניתRתהי

.R קבוצת תלויות פונקציונאליות מעל Fותהי

R-3 היא בNF אם לכל תלות פונקציונאלית X→A∈F+ -כך ש A ∉ X ,

X הוא מפתח על של R אוA מוכל במפתח קביל של R.

Page 21: צורות נורמאליות

236363 - DBMS, Design 21

דוגמה

)הסכמה )עיר, קידומת, טלפוןR בהינתן התלויות :הפונקציונליות

F ={עיר→)טלפון,קידומת(, קידומת→עיר} 3NF.נמצאת ב-

:הסיבה של הסכמה הם הקביליםהקביליםהמפתחות

)קידומת,טלפון(. )עיר, טלפון( ו- כל תלות מתוךF-3 מקיימת את תנאי הNF.-כמו בBCNF גם כאן מספיק לבדוק רק את התלויות של F.

Page 22: צורות נורמאליות

236363 - DBMS, Design 22

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

-תמיד מתקיים: כל סכמה שהיא בBCNF היא גם 3NFב-

ההפך לא בהכרח

BCNF 3 מונעת יותר כפילויות בלתי רצויות מאשרNF

-3תמיד קיים פירוק לNFשהוא משמר מידע ותלויות אף על פי 3NF זה לא כך ולכן לעיתים נעדיף פירוק ל-BCNF)ב-

(BCNFשהוא מונע פחות כפילויות מ-

Page 23: צורות נורמאליות

236363 - DBMS, Design 23

3NF ל-Rאלגוריתם לפירוק סכמה

בהינתן כיסוי מינימלי של תלויות פונקציונליותF::

תלות פונקציונלית שכוללת את כל Fאם קיימת ב-1.} - עצור.R, התשובה היא {Rהתכונות ב-

לכל קבוצת תלויות פונקציונליות2.

X → An X → A2,…, X → A1, התלויות באותוX ,.XA1A2 ...An{ }צור סכמה

l אם אין אף סכמה המכילה מפתח קביל שלR ,.Rהוסף סכמה שהיא מפתח קביל כלשהו של

הפירוק שאלגוריתם זה מוצא הוא משמר מידע ותלויות.הפירוק שאלגוריתם זה מוצא הוא משמר מידע ותלויות.

Page 24: צורות נורמאליות

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}

Page 25: צורות נורמאליות

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) ,ולכן אין צורך להוסיף עוד סכמה.

Page 26: צורות נורמאליות

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(

Page 27: צורות נורמאליות

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

Page 28: צורות נורמאליות

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}

Page 29: צורות נורמאליות

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

Page 30: צורות נורמאליות

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

Page 31: צורות נורמאליות

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

Page 32: צורות נורמאליות

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

Page 33: צורות נורמאליות

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