65
236363 - DBMS, Design 1 דדדדד דדד דדדדדדד

236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

  • View
    235

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 1

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

Page 2: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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(סימון:

Page 3: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 3

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

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

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

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

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

Page 4: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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 .

Page 5: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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 → ∅

Page 6: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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.

Page 7: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 7

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

תרגיל

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

Page 8: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 8

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

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

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

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

Page 9: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 10: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 10

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

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

+Aחשבו את F.

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

F=R.

Page 11: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 11

פירוק

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

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

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

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

Page 12: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 12

שימור מידע

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

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

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

Page 13: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 13

שימור מידע

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

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

משמר מידע?

Page 14: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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 של התוכןמידע שימור של התנאי את מפר הפירוק אך

Page 15: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 16: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 16

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

משפט :

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

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

או

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

Page 17: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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כן מקיים (למשל) ולכן, לפי המשפט, כן משמר מידע.

Page 18: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 18

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

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

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

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

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

Page 19: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 19

משמעות הצעד

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

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

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

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

Page 20: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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] החלף את

כרצונך.

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

Page 21: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 21

תוצאה

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

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

Page 22: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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){

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

Page 23: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 23

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

ABCDEF

abc1d1e1f1

ab2cde2f2

a3bc3d3ef

t1

t2

t3

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

Page 24: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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.ללא אינדקסים, ולכן הפירוק משמר מידע

Page 25: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 26: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 26

שימור תלויות

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

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

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

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

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

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

Page 27: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 27

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

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

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

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

:משמר מידע

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

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

Page 28: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 28

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

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

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

עירטלפון

חיפה1234

טבעון1234

r1= r2= קידומת

עיר

חיפה04

טבעון04

Page 29: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 29

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

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

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

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

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

חיפה123404

טבעון123404

Page 30: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 30

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

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

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

S⊆Rותהי

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

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

Page 31: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 32: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 32

שימור תלויות

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

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

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

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

i =1 πRiF)+

Page 33: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 33

שימור תלויות

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

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

או

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

Page 34: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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}ו-

Page 35: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 35

שימור תלויות

:תרגיל

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

כאשר נתון:

R(A, B, C, D)

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

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

Page 36: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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:(לפי האלגוריתם) נשמרת

Page 37: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

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

Page 38: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 38

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

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

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

Page 39: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 39

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

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

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

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

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

Page 40: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 40

BCNFדוגמא –

דוגמה :

הסכמה

(Cust_Id, Track, Faculty, Book_Name)R

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

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

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

Page 41: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

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

Page 42: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 42

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

:הגדרה

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

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

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

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

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

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

Page 43: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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הוא ב-

Page 44: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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}.הוא משמר מידע

Page 45: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 46: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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{

Page 47: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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.

Page 48: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 49: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 50: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 51: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

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

(Fתלויות

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

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

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

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

Page 52: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 52

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

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

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

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

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

Page 53: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 53

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

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

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

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

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

בסכמה אחת.

Page 54: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 54

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

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

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

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

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

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

Page 55: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 55

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

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

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

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

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

Page 56: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 56

דוגמה

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

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

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

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

Page 57: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 57

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

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

ההפך לא בהכרח

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

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

Page 58: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 58

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

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

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

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

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

Page 59: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 59

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

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

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

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

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

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

Page 60: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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( אין ב-

Page 61: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 62: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

236363 - DBMS, Design 62

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

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

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

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

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

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

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

Page 63: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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{

Page 64: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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

Page 65: 236363 - DBMS, Design1 נרמול מסד הנתונים. 236363 - DBMS, Design2 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A 1,A 2,..A n )

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