236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות...

Preview:

Citation preview

236363 - DBMS, Design 1

נרמול מסד הנתונים

236363 - DBMS, Design 2

Functionalתלויות פונקציונאליות Dependencies

הגדרה

סכמה רלציונית, R(A1,A2,..An)תהי , R רלציה מעל הסכמה rתהי קבוצות אטריבוטים.X,Y⊆Rויהיו

r מקיימת את התלות הפונקציונאלית X→Y t1,t2∈r-יות nאם לכל שני

. πy(t2)=πy(t1) מתקיים ש- πx(t2)=πx(t1)כך ש-). r ╞ X→Y(סימון:

236363 - DBMS, Design 3

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

1הערה: ) ניתן לבדוק תמיד האם R רלציה (מופע של rבהינתן

כלשהי, אך מקרה הפוך אינו נכון.FDהיא מקיימת

2הערה: של רלציה מקיים: Kמתוך ההגדרה נובע כי מפתח

K→R K.לא בהכרח מינימאלי אםK.מינימאלי אזי הוא מפתח קביל

236363 - DBMS, Design 4

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

:תהי הגדרהR,סכמה רלציונית ,R רלציה מעל הסכמה rתהי .R קבוצה של תלויות פונקציונאליות מעל Fותהי

r מקיימת את F סימון) r ⊧ F (.r ⊧ f מתקיים: F ב-fאם לכל תלות פונקציונאלית

:תהי הגדרהR,סכמה רלציונית ,R רלציה מעל הסכמה rתהי .R תלות פונקציונאלית מעל fותהי

f-נובעת מ F :סימון) F ⊧ f ( ⊧ r ⊧ F⇒ r מתקיים: R מעל הסכמה rאם לכל רלציה

f .

236363 - DBMS, Design 5

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

:תהי הגדרה F.קבוצת תלויות פונקציונאליות .{ X→Y | F ⊧ X→Y} ) הוא:+F (סימון: Fהסגור של

דוגמא :.}F=}A →B,B →C של +Fמצא

תהיינה בין היתר התלויות הפונקציונאליות +F ב הבאות:

A →C, AB →C, AC →C, B →B, A →B, ∅ → ∅, C → ∅

236363 - DBMS, Design 6

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

אקסיומות ארמסטרונג : :+Fאילו הן שלושה כללי היסק שעוזרים בחישוב

X,Y,Z,W ⊆Rאם רפלקסיביות :X⊆Y אז Y→X. אם הכללה :X →Y אז XZ →YZ. אם טרנזיטיביות :X →Y -ו Y →Z אז X →Z.

:כללי היסק נוספים:אם איחוד X →Y -ו X →Z אז X →YZ. :אם פירוקX →Y -ו Z⊆Y אז X →Z. :אם טרנזיטיביות למחצה X →Y -ו WY →Z אז WX →Z.

236363 - DBMS, Design 7

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

תרגיל

. F=}A →B,B →C{ , R(A,B,C)נתון (כלומר ניתן להסיק).├ A →BC Fהראו כי

236363 - DBMS, Design 8

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

:הגדרה קבוצת אטריבוטים Xתהי קבוצת תלויות פונקציונאליות. Fותהי

+X (סימון: F בהינתן Xהסגור של F (

. {A | F├ X→A}הוא: )A (הוא אטריביוט

236363 - DBMS, Design 9

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

אלגוריתם לחישוב X+F :

S ← X

Repeat

For each (Y→ Z) in F

If Y⊆S then S←S⋃Z until no more changes to S.

return S

236363 - DBMS, Design 10

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

:תרגיל .F=}A →B,B →C{ , R(A,B,C)נתון

+Aחשבו את F.

:הערה +X אם Rשל מפתח על הואXניתן לשים לב ש-

F=R.

236363 - DBMS, Design 11

פירוק

:הגדרה R) של decompositionפירוק (

=ρ {R1, R2 ,.., Rn}הוא קבוצת סכמות

.i=1..nRi=R⋃כך ש-

:תכונות של הפירוק( התכונה החיונית) שימור מידע(.איננו הכרחי , אם כי הוא רצוי) .שימור תלויות

236363 - DBMS, Design 12

שימור מידע

הגדרה: סכמה רלציונית,Rתהי קבוצת תלויות פונקציונאליות ,Fתהי .R פירוק של =ρ {R1, R2 ,.., Rn}ויהי

ρ) הוא משמר מידע lossless join בהינתן (F r ╞ F המקיימת R מעל r אם לכל רלציה

πRi(r)=r ⋈ i=1..nמתקיים

236363 - DBMS, Design 13

שימור מידע

דוגמה:R(ID, NAME, ADDR),

F = }ID → NAME, ID → ADDR{האם הפירוק ρ = }R1(ID, NAME), R2(NAME, ADDR){

משמר מידע?

236363 - DBMS, Design 14

שימור מידע

IDNAMEADDR

ת"אראובן1

חיפהראובן2

r =

IDNAMEADDR

ת"אראובן1

חיפהראובן1

ת"אראובן2

חיפהראובן2NAMEADDR

ת"אראובן

חיפהראובן

IDNAME

ראובן1

ראובן2

πR1(r) πR2

(r)

πR1(r) π⋈ R2

(r)

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

236363 - DBMS, Design 15

שימור מידע

לעומת זאת, הפירוק ρ’ = }R’1(ID, NAME), R’2(ID, ADDR){

πR’1משמר מידע: (r) π⋈ R’2

(r) = r

r= πR’1(r) πR’2

(r)IDNAMEADDR

ת"אראובן1

חיפהראובן2

IDNAME

ראובן1

ראובן2

IDADDR

ת"א1

חיפה2

236363 - DBMS, Design 16

שימור מידע בפירוק לשתי סכמות

משפט :

}ρ = }R1, R2פירוק לשתי סכמות הוא משמר מידע אם ורק אם

F (R⊧ 1⋂R2) → (R1\ R2)

או

F (R⊧ 1⋂R2) → (R2\ R1)

236363 - DBMS, Design 17

שימור מידע בפירוק לשתי סכמות

R(ID, NAME, ADDR)בדוגמה האחרונה F = }ID → NAME, ID → ADDR{

הפירוקρ = }R1(ID, NAME), R2(NAME, ADDR){ , F אינה נובעת מ-NAME→ ID התלות , NAME → ADDRוגם לא

.Rולכן אינו משמר מידע לכל תוכן אפשרי של

,לעומת זאת }ρ = }R1(ID, NAME), R2(ID, ADDR)הפירוק

ID → NAMEכן מקיים (למשל) ולכן, לפי המשפט, כן משמר מידע.

236363 - DBMS, Design 18

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

אתחול:. R מעל הסכמה r צור רלציה

ti שורה אחת r נקצה ברלציה Ri לכל תת-סכמה

ti מקבלת את הערך a לכל עמודה A∈Ri ואת הערך ai לכל עמודה A∉Ri.

. Bלכל עמודה bi או b(הערך וכו'...)C לכל עמודה ci או c הערך

236363 - DBMS, Design 19

משמעות הצעד

, שורה שכולה ללא אינדקסיםrכל עוד אין ב-

ti[X]=tj[X] כך ש- ti, tj שתי שורות rויש ב-, X → Y (∈ F(עבור תלות פונקציונלית כלשהי

,ti[Y] וב-tj[Y]השווה את הערכים ב-

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

236363 - DBMS, Design 20

הפעלת הצעד: X → Y (∈ F(עבור תלות פונקציונאלית כלשהי

,A∈ Y בצע לכל עמודה ti[X]=tj[X]ושורות בהן

(ללא אינדקס), a הוא ti[A], tj[A] אחד משני הערכים אם, a החלף את הערך האחר ב-

ואחרת, tj[A] ב-ti[A] או את ti[A] ב-tj[A] החלף את

כרצונך.

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

236363 - DBMS, Design 21

תוצאה

אם ורק אם בסוף הריצה הפירוק משמר מידע שורה שהיא כולה ערכים ללא אינדקסיםrיש ב-

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

236363 - DBMS, Design 22

שימור מידע

תרגיל :

R(A, B, C, D, E, F)נתונה הסכמה

. }F = }A → B, C → D, B → EFוקבוצת תלויות האם הפירוק

ρ = }R1(A, B), R2(A, C, D), R3(B, E, F){

הוא משמר מידע?

236363 - DBMS, Design 23

שימור מידע - תרגיל

ABCDEF

abc1d1e1f1

ab2cde2f2

a3bc3d3ef

t1

t2

t3

:rפתרון: נבנה את הרלציה

236363 - DBMS, Design 24

שימור מידע - תרגיל

ABCDEF

abc1d1e1f1

ab2cde2f2

a3bc3d3ef

t1

t2

t3

ABCDEF

abc1d1e1f1

abcde2f2

a3bc3d3ef

t1

t2

t3

ABCDEF

abc1d1e1f1

abcdef

a3bc3d3ef

t1

t2

t3

A → B(t1,t2)

B → EF(t2,t3)

1

2

קיבלנוt2.ללא אינדקסים, ולכן הפירוק משמר מידע

236363 - DBMS, Design 25

שימור מידע - דוגמה נוספת

נתון דוגמא :R(A,B,C,D,E), F = }A→B, B→C, C→D , DE→BC{ . הוא משמר מידע?}ρ = }R1(A,D), R2(A,E), R3(B,C,D,E)האם הפירוק

:הפירוק משמר מידע.מסקנה

ABCDE

ab1c1de1

ab2c2d2e

a3bcde

t1

t2

t3

ABCDE

ab1c1de1

ab1c2d2e

a3bcde

t1

t2

t3

ABCDE

ab1c1de1

ab1c1d2e

a3bcde

t1

t2

t3

ABCDE

ab1c1de1

ab1c1de

a3bcde

t1

t2

t3

ABCDE

ab1c1de1

abcde

a3bcde

t1

t2

t3

A→Bt1,t2

B→Ct1,t2

C→Dt1,t2

DE→BCt3,t2

236363 - DBMS, Design 26

שימור תלויות

אם כל אחת מתתי-רלציות אינטואיציה :ri

πRi) מספקת את Ri(מעל הסכמות F

. Fאז מסד הנתונים כולו מספק את כאשר מעדכנים את אחת מתתי-הרלציות מטרה :

באופן חוקי, גם העדכון על מסד הנתונים כולו (ה- join.בין תתי-הרלציות) הוא חוקי

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

.שימור תלויות איננו הכרחי, אם כי רצוי

236363 - DBMS, Design 27

שימור תלויות – דוגמה

:דוגמה(עיר, קדומת, טלפון) :נתוןR

F עיר{ = (טלפון, קדומת), קדומת }עיר

ρ = {R1, (עיר, טלפון)R2 }(עיר, קדומת)

:משמר מידע

R1 ⋂ R2 = עיר, R2 \ R1 = קדומת,

F ⊧ קידומת עיר?שאלה: האם הפירוק משמר תלויות

236363 - DBMS, Design 28

שימור תלויות - דוגמה - המשך

:הפירוק אינו משמר תלויות, כי

כל אחת מהרלציותr1, r2 מקיימת את F.

עירטלפון

חיפה1234

טבעון1234

r1= r2= קידומת

עיר

חיפה04

טבעון04

236363 - DBMS, Design 29

שימור תלויות - דוגמה - המשך

-אבל הjoin אינו מקיים את F :

-כאשר נרצה להוסיף או לשנות מספר טלפון בr1 כדי לוודא שהשינוי הוא חוקי.r2נצטרך לבדוק גם ב-

לא די שבאותה עיר לא יהיו שני טלפונים זהים - אסורשיהיו טלפונים זהים גם בערים שונות באותו אזור חיוג.

עירקידומתטלפון

חיפה123404

טבעון123404

236363 - DBMS, Design 30

שימור תלויות )היטל(

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

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

S⊆Rותהי

) πSF (סימון: S על תת הסכמה F של ההיטל

. {X→Y | X → Y∈F+ ∧ X⋃Y ⊆ S} הוא:

236363 - DBMS, Design 31

שימור תלויות

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

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

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

) dependency preserving (משמר תלויותהפירוק הוא {r1,r2,…,rn} אם לכל קבוצת רלציות Fבהינתן

) {R1, R2 ,.., Rn} (מעל סכמות:

πRiכך ש- F ╞ri לכל i=1,…,n :מתקיים ⋈i=1..n ri╞ F

236363 - DBMS, Design 32

שימור תלויות

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

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

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

F בהינתן משמר תלויותהפירוק הוא F ⊆ (⋃nאם

i =1 πRiF)+

236363 - DBMS, Design 33

שימור תלויות

נשמרת בפירוק fתלות פונקציונאלית

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

או

תלויות אחרות שנשמרות מתוך fניתן להסיק את אם .בפירוק

236363 - DBMS, Design 34

אלגוריתם לבדיקת שימור שימור תלויות

תלויות

FY)(Xfeach for Z Y iff preserving dependecy is

;

Z tochange more no until

))(( Z

don to1ifor

repeat

; Z

begin do F Y)(Xfeach for

f

f

fff

f

end

RRZZ

X

iFi

R,סכמה רלציונית F קבוצת תלויות פונקציונאליות מעל R,.R פירוק של =ρ {R1, R2 ,.., Rn}ו-

236363 - DBMS, Design 35

שימור תלויות

:תרגיל

משמר תלויות?ρהאם הפירוק

כאשר נתון:

R(A, B, C, D)

F = }A → B, AC → D, BC → D{

ρ = }R1(A, B), R2(B, C, D){

236363 - DBMS, Design 36

אלגוריתם לבדיקת שימור תלויות – דוגמה

דוגמה: נתונה הסכמהR(A, B, C, D)קבוצת תלויות ,

F = }A → B, AC → D, BC → D{האם הפירוק . ρ = }R1(A, B), R2(B, C, D){?משמר תלויות

.נבדוק לכל תלות האם היא נשמרת בפירוק התלותA → B נשמרת כי AB R⊆ 1 ,

התלותBC → D נשמרות כי BCD R⊆ 2

נותר לוודא שהתלותAC → D:(לפי האלגוריתם) נשמרת

236363 - DBMS, Design 37

אלגוריתם לבדיקת שימור תלויות – דוגמה

Zf ← }A,C{

Zf ← }A,C{ ⋃( (}A,C{⋂R1)+F ⋂ R1) =

}A,C{ ⋃ (}A{+F ⋂ }A,B{) =

}A,C{ ⋃(}A,B{ ⋂ }A,B{) = }A,B,C{ Zf ← }A,B,C{ ⋃( (}A,B,C{ ⋂ R2)+

F ⋂ R2) =

}A,B,C{ ⋃( (}B,C{+F ⋂ }B,C,D{) =

}A,B,C{ ⋃(}B,C,D{ ⋂ }B,C,D{) = }A,B,C,D{ קיבלנו כי{ D = }Yf Z⊆ f =}A,B,C,D{ לכן התלותAC→D

נשמרת בפירוק.

236363 - DBMS, Design 38

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

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

מבחינת מניעת כפילויות. BCNF 3NF

236363 - DBMS, Design 39

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

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

.R קבוצת תלויות פונקציונאליות מעל Fותהי BCNF היא ב-Rאומרים ש-

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

XX הוא על-מפתח של הוא על-מפתח של RR . .

236363 - DBMS, Design 40

BCNFדוגמא –

דוגמה :

הסכמה

(Cust_Id, Track, Faculty, Book_Name)R

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

F=}F=}Cust_IdCust_Id→→Track,Track Track,Track →→ Faculty Faculty{{

?BCNFהאם בהינתן קבוצת תלויות זו סכמה ב

236363 - DBMS, Design 41

BCNFדוגמא –

בהינתן קבוצת התלויות הפונקציונליותדוגמה :

F=}F=}Cust_IdCust_Id→→Track,Track Track,Track →→ Faculty Faculty{{ R(Cust_Id, Track, Faculty, Book_Name)הסכמה

:BCNFאיננה ב--בF קיימת התלות →Faculty Track אך ,Track.אינו על-מפתח הסבר: ניתן להיעזר במשפט כדי לבדוק האםR,F-ב BCNF. כפילויות במסד: למשל, שם הפקולטהCS מופיע ברלציה פעמים

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

פירוק ל-פתרון :BCNF פירוק של - R לתתי-סכמות כך שכל יחסית לתלויות הרלוונטיות לה BCNFאחת מהן נמצאת ב-

(הגדרה מדויקת תינתן בשקף הבא).

236363 - DBMS, Design 42

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

:הגדרה

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

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

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

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

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

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

236363 - DBMS, Design 43

BCNFצורה נורמאלית )בהינתן קבוצת BCNF ל Rאלגוריתם לפירוק סכמה

(Fתלויות

{ }

repeat

{ , } decompose( )

{ }

until decompose(Z) returns STOP

{ }

Z R

Z Y Z

Y

Z

decompose(Z) תחזיר לנו פירוק משמר מידע של Z-כך ש Y

(תוצאת הפירוק) נמשיך לפרק.Z ואת BCNFהוא ב-

236363 - DBMS, Design 44

BCNFצורה נורמאלית )בהינתן קבוצת BCNF ל Rאלגוריתם לפירוק סכמה

(Fתלויות 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

בסכמה המוחזרתZ\A השימוש הוא בתכונה A.האחרונה שנבחרה בלולאה מציאת התלותZ\AB →A היא עבור A,B ∈ Z -ובהתחשב ב F.המקורית אם טענה :Z-אינה ב BCNF אזי קיימים A-ו B -כך ש Z\AB →A.

.BCNF אינה ניתנת לפירוק והיא ב-Z כאלה אז B ו- Aמכך שאם לא ניתן למצוא .Z כאלה והאלגוריתם ימשיך לפרק את B ו-A ייתכן ועדיין נמצא BCNF ב-Z: אם שימו לב

.BCNFכרגע אין בידינו אלגוריתם יעיל להכרעה האם תת סכמה היא ב-הפירוק טענה :{Z\A,Y}.הוא משמר מידע

236363 - DBMS, Design 45

דוגמה

:F (ציונים של סטודנטים), וקבוצת תלויות Rנתונה הסכמה R(sid , sname , cno , cname, grade)F = }sid → sname, cno → cname, (sid , cno ) → grade{ sid -- מס' סטודנט sname -- שם סטודנט cno -- מס' קורס Cname -- שם קורס Grade -- ציון

236363 - DBMS, Design 46

דוגמה - המשך

F = }sid → sname, cno → cname, (sid, cno) → grade{

R(sid, sname, cno, cname, grade)

ע"פ האלגוריתםR ל-decomposeנבצע

}sid,sname,cno,cname,grade{\}sname,grade{ → sname

}sid,sname,cno,cname{\}sname,cno{ → sname

}sid,sname,cname{\}sname,cname{ → sname

}sid,sname{

Z = }sid,sname,cno,cname,grade{\}sname{ = }sid,cno,cname,grade{

Y = }sid,sname{

236363 - DBMS, Design 47

דוגמה - המשך

F = }sid → sname, cno → cname, (sid, cno) → grade{

Z = }sid,cno,cname,grade{

ע"פ האלגוריתםZ ל-decomposeנמשיך ונבצע

}sid,cno,cname,grade{\}cname,sid{ → cname

}cno,cname,grade{\}cname,grade{ → cname

}cno,cname{

Z = }sid, cno,cname,grade{\}cname{ = }sid,cno,grade{

Y = }cno,cname{

ולכן Z\AB →A כך ש- B ו-Aבשלב זה לא ניתן יותר למצוא decompose תחזיר STOP.

236363 - DBMS, Design 48

דוגמה - המשך

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 49

אם טענה :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∉.⊇}X }Z\ABמכך נובע Y{ →Z\AB}מכך נובע

.A{ →Z\AB} כך נובע

BCNFצורה נורמאלית )בהינתן קבוצת BCNF ל Rאלגוריתם לפירוק סכמה

(Fתלויות

236363 - DBMS, Design 50

הפירוק טענה :{Z\A,Y}.הוא משמר מידע

A היא התכונה האחרונה כך ש )Y\AB→ (A..Y\B הופך להיות Yלאחר מכן

.Y\A→ (A(לכן בסופו של דבר נקבל

⋂Z\A Y = Y\A מכיל את כל התכונות בסכמה אז Zמאחר ו- A=(Y\(Z\A))נבחין כי

) Z\A Y⋂ (→)Y\(Z\A)(ומכאן וזהו התנאי לשימור מידע.

BCNFצורה נורמאלית )בהינתן קבוצת BCNF ל Rאלגוריתם לפירוק סכמה

(Fתלויות

July 2007 4חורף תשס"ח 236363 - DBMS, Design 51

BCNFצורה נורמאלית )בהינתן קבוצת BCNF ל Rאלגוריתם לפירוק סכמה

(Fתלויות

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

בהכרח משמר תלויות.

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

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

236363 - DBMS, Design 52

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

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

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

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

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

236363 - DBMS, Design 53

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

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

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

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

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

בסכמה אחת.

236363 - DBMS, Design 54

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

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

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

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

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

. Rללא פירוק (שימור תלויות): (עיר, קידומת, טלפון) 3NFלשם כך נשתמש בצורה נורמלית

236363 - DBMS, Design 55

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

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

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

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

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

236363 - DBMS, Design 56

דוגמה

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

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

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

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

236363 - DBMS, Design 57

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

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

ההפך לא בהכרח

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

-3תמיד קיים פירוק לNFשהוא משמר מידע ותלויות

236363 - DBMS, Design 58

כיסוי מינימלי

בקבוצת תלויות פונקציונליות יכול להיות מידע עםחזרות.

דוגמה :}G=}AB, BC,AC{ F=}AB,BC,שתי הקבוצות

.+F+ = G הן "שקולות", במובן ש-

מטרה: להביא את כל קבוצות התלויות פונקציונליותלצורה אחידה.

236363 - DBMS, Design 59

(Minimal Coverכיסוי מינימאלי )

הגדרה : קבוצת תלויות פונקציונליות. Fתהי

F של ) minimal cover( כיסוי מינימאלי

FCהוא קבוצת תלויות פונקציונליות

F+ = FC מינימלית ו- FCכך ש-+.

הכיסוי המינימאלי אינו בהכרח יחיד

236363 - DBMS, Design 60

(Minimal Coverכיסוי מינימלי )

הגדרה : קבוצת תלויות פונקציונליות.Fתהי

F אם לכל תלות מינימלית היא X→ Y ∈ F מתקיימות שלוש הדרישות הבאות:

l|Y| = 1lF+ ≠ (F \ }X → Y{)+ -אין ב )F(."תלויות "מיותרות l לכלZ ⊊ X מתקיים F+ ≠ (F \ }X → Y{ }Z →

Y{)+

מכילה תכונות "מיותרות".)X שבה A → X תלות F( אין ב-

236363 - DBMS, Design 61

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

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 62

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

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

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

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

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

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

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

236363 - DBMS, Design 63

– דוגמה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 64

– דוגמה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 65

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

:3פרק הסכמה הבאה ל-תרגילNF :כאשר נתון R(sid , sname , cno , cname, grade)F = }sid → sname, cno → cname, (sid , cno ) → grade{ sid -- מס' סטודנט sname -- שם סטודנט cno -- מס' קורס Cname -- שם קורס Grade -- ציון