Transcript
Page 1: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 1

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

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

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

אם לכל תלות פונקציונלית לא Fבהינתן הוא על-מפתח F+, X הנמצאת ב-X→Yטריוויאלית

.Rשל אם קיימת תלות לא טריוויאלית בקבוצת

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

Page 2: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 2

?BCNFאיך נבדוק שהסכמה ב-

:על פי ההגדרה יש לחשב אתF+

עבור כלX→Y∈ F + יש לבדוק כיX.הינו על-מפתח

.Rהוא אקספוננציאלי בגודל של +F: הגודל של הבעיה

, כלומר BCNF איננה ב-R,F: אם סכמה רלציונית משפט, אזי BCNFשמפרה את תנאי ה- +X→Y∈ Fקיימת תלות.BCNFשמפרה את תנאי ה- Z→W∈ F קיימת תלות

למשל, עבורR(Cust_Id, Cust_Name,Room_Num) וקבוצת תלויות

F={Cust_Id→Cust_Name, Cust_Id→Room_Num, Room_Num→Cust_Id}

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

Page 3: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 3

BCNFדוגמא –

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

F={Cust_Id→Track,Track → Faculty}:BCNF איננה ב-Cust_Id, Track, Faculty, Book_Name(Rהסכמה (

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

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

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

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

Page 4: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 4

פירוקים של סכמות

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

כך ρ = {R1, …,Rn} הוא קבוצת סכמות Rפירוק של iש-

n=1 Ri = R ⋃.

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

שימור מידע). אם כל אחת מתתי-סכמות מספקת את התלויות

הרלוונטיות אליה, אז המסד המפורק מספק את כל (תכונת שימור תלויות).Fהתלויות הפונקציונאליות של

Page 5: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 5

שימור מידע

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

שהיה לנו בטבלה המקורית ע"י צרוף תתי-הטבלאות.

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

כשמפרקים סכמה לתתי-סכמות, חיוני לדאוגלשימור מידע.

Page 6: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 6

שימור מידע

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

ρ משמר מידע בהינתן הואF אם לכל רלציה r מעל R המקיימת r ⊧ F :מתקיים ⋈i

n= 1 πRi

(r) = rדוגמה:

R(ID, NAME, ADDR), F = {ID → NAME, ID → ADDR}

הפירוק ρ = {R1(ID, NAME), R2(NAME, ADDR)} אינו משמרמידע.

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

Page 7: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 7

דוגמה – המשך

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

’(ID, ADDR)}

⋈πR1’(r) πמשמר מידע: R2’(r) = r

IDNAMEADDR

ת"אראובן1

חיפהראובן2

NAMEADDR

ת"אראובן

חיפהראובן

IDNAME

ראובן1

ראובן2

IDNAMEADDR

ת"אראובן1

חיפהראובן1

ת"אראובן2

חיפהראובן2

r= πR1(r) πR2

(r)

πR1(r) π⋈ R2

(r)

Page 8: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 8

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

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

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

או

F (R⊧ 1 R∪ 2) → (R2 \ R1) בדוגמה האחרונה (עבור סכמהR(ID, NAME, ADDR):(

הפירוקρ = {R1(ID, NAME), R2(NAME, ADDR)} לא מקיים NAME→ ID וגם לא ,NAME → ADDR ולכן אינו משמר מידע לכל ,

.Rתוכן אפשרי של לעומת זאת, הפירוקρ = {R1(ID, NAME), R2(ID, ADDR)} כן מקיים

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

Page 9: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 9

BCNFפירוק ל-

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

אם כל BCNFפירוק ל- הוא R. ρפירוק של πRi בהינתן BCNF היא ב-Riתת-סכמה

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

על F של היטל. הS ⊆ R, ותהי Rפונקציונליות מעל

) הוא:πsF (סימון: Sתת-הסכמה πsF = {X → Y | X → Y F⊆ + X Y S}⋃ ⊆

יש לשים לב לכך שהתלויות בהיטל נלקחות מתוךF+ ולא רקF.

Page 10: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 10

- הרעיוןBCNFפירוק משמר מידע ל-

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

לשתי תתי-סכמות על-פי המשפט לפירוק משמר מידע לשתי תתי-סכמות. בפרט,

בהינתן סכמהR ותלות פונקציונלית X → Y נוכל לפרק את ,R R1[X{לשתי תתי-סכמות: Y],R⋃ 2[R\(Y\X)]{ ,לפי המשפט .

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

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

(לשתי תתי-סכמות) , מובטח כי הפירוק המתקבל הוא גם משמר מידע.

Page 11: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 11

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

תהיF:קבוצת תלויות פונקציונליות .1}R {ρ ←.

– עצור.BCNF הן ב-ρאם כל הסכמות ב- 2.

, כלומר שקיימת BCNFשאינה ב- ⊇S ρ מצא סכמה3.

Xכך ש- X→Y ∈ πsF תלות פונקציונלית Y S⋃ ⊆ , Y ⊈

X -ו X אינו על-מפתח של S .⋃ ρ (ρ \ {S}) {S\(Y\X)} {Xבצע: ⋃ ⋃ Y}

. 3חזור ל-•

Page 12: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 12

אלגוריתם יעיל למציאת כיסוי של πsF

האלגוריתם הפשוט לחישובπsF דורש חישוב שלF+. למציאת כיסוי של להלן אלגוריתםπsF מצריך אשר אינו

+F:חישוב של

Fs← ∅ for each X→Y∈F such that X⊆S do

Z ← (X+F ∪ S)\X

if Z ∅ then

Fs ← Fs ⋃ {X →Z} Return Fs

הערה: האלגוריתם אינו מחזיר אתπsF אלא כיסוי ,שלו (לאו דווקא מינימאלי).

Page 13: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 13

- דוגמהBCNFפירוק משמר מידע ל-

נתונה הסכמה דוגמה :R (ציונים של סטודנטים), וקבוצת :Fתלויות

R(snumber, sname, cnumber, cname, grade)

F = {snumber →sname, cnumber →

cname, (snumber, cnumber) → grade} Snumber -- מס' סטודנט Sname -- שם סטודנט Cnumber -- מס' קורס Cname -- שם קורס Grade -- ציון

Page 14: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 14

דוגמה - המשך

R(snumber, sname, cnumber, cname, grade)

R2(snumber, cnumber, cname, grade)

R4(cnumber, cname)R3(snumber, cnumber, grade)

R1(snumber, sname)

snumber → sname

cnumber → cname

פירוק בשלבים:• F = {snumber → sname, cnumber → cname, (snumber, cnumber) → grade}

הוא משמר מידע }R1,R3,R4{לפי הבנייה, הפירוק ל- •.BCNFוב-

Page 15: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 15

)1 – הערה(BCNFפירוק ל-

יש לשים לב כי בפירוק של סכמה רלציוניתR אנחנו ע"י כך שבודקים שכל BCNFבודקים אם הפירוק הוא ב-

πRi מעל BCNF היא ב-Riתת-סכמה F ההיטל מחושב)

).+Fמעל לבדוק האם לא מספיקRi-מקיימת את תנאי ה BCNF

.Riב- שמכילות תכונותFמעל קבוצת התלויות ב-

ניתן לעשות בדיקה עבורπRiF ע"י כך שקודם מחשבים

πRiכיסוי של F עם אלגוריתם יעיל ואז משתמשים

ישירות מהכיסוי.BCNFבמשפט המאפשר לבדוק שיוך ל-

Page 16: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 16

)2 – הערה(BCNFפירוק ל-

דוגמא:R=(A,B,C,D), → C, C→ D} F={B, ρ = {(A,B,D), (B,C)}:הפירוק איננו ב-טענה BCNF.:הסבר R1 BCNF∉ כי D ∈ πR1

F → B אולם Bאיננו R1על-מפתח של

אולם: אם היינו בודקים אתR1-מעל קבוצת התלויות ב F (אשר שווה לקבוצה ריקה), אזי היינו R1שמכילות תכונות ב-

R1מקבלים כי BCNF∈.(ההגדרה מתקיימת באופן ריק)

.ההערה רלוונטית לכל צורה נורמאלית

Page 17: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 17

בדיקת קיום שימור מידע

(מס' תתי-סכמות אלגוריתם כללי לבדיקת שימור מידע בפירוק נתוןכלשהו):

.R מעל הסכמה rצור רלציה 1. לכל תת-סכמהRi נקצה ברלציה r שורה אחת titi מקבלת את הערך a לכל עמודה A R⊆ i ואת הערך bi

.B∉Riלכל עמודה ,ti שתי שורות r שורה שכולה ללא אינדקסים, ויש ב-rכל עוד אין ב-•

tj -כך ש ti[X]=tj[X] עבור תלות פונקציונלית כלשהי )X → Y (⊆F ,, באופן הבא:ti[Y] וב-tj[Y]השווה את הערכים ב-

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

, כרצונך.tj[A] ב-ti[A] או את ti[A] ב-tj[A]את שורה שהיא rהפירוק משמר מידע אם ורק אם בסוף הריצה יש ב-•

כולה ערכים ללא אינדקסים.

Page 18: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 18

דוגמה

נתונה הסכמה דוגמה :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)} הוא משמר מידע?

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

abc1d1e1f1

ab2cde2f2

a3bc3d3ef

t1

t2

t3

Page 19: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 19

דוגמה - המשך

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

ABCDEF

abc1d1e1f1

ab2cde2f2

a3bc3d3ef

t1

t2

t3

A → B (t1,t2)

B → EF (t3,t2)

ABCDEF

abc1d1e1f1

abcde2f2

a3bc3d3ef

t1

t2

t3ABCDEF

abc1d1e1f1

abcdef

a3bc3d3ef

t1

t2

t3

1

2

Page 20: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 20

דוגמה נוספת

נתון דוגמה :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

ab1c1d2e

a3bcde

t1

t2

t3

ABCDE

ab1c1de1

ab1c2d2e

a3bcde

t1

t2

t3

A→Bt1,t2

B→Ct1,t2

ABCDE

ab1c1de1

ab1c1de

a3bcde

t1

t2

t3

C→Dt1,t2

ABCDE

ab1c1de1

abcde

a3bcde

t1

t2

t3

DE→BCt3,t2

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

Page 21: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 21

שימור תלויות

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

πRi) מספקת את Riהסכמות F אז מסד הנתונים כולו

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

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

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

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

Page 22: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 22

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

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

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

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

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

R1 ∪ R2 = עיר, R2 \ R1 = קדומת, F ⊧ עיר →קדומת ?שאלה: האם הפירוק משמר תלויות

Page 23: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 23

דוגמה - המשך

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

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

עירטלפון

חיפה1234

טבעון1234

עירקדומת

חיפה04

טבעון04

r1= r2=

Page 24: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 24

דוגמה - המשך

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

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

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

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

חיפה123404

טבעון123404

Page 25: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 25

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

.ρ = {R1,…,Rn}, ויהי Rפונקציונליות מעל

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

…,Rn {-בהתאמה) כך שri π⊧ RiF לכל i = 1,…,nמתקיים

⋈ ni=1 ri F.⊧

אםF בהינתן משמר תלויותהוא ρהגדרה שקולה:

F (⊆ ⋃ni =1 πRiF)+

בפירוק אם נשמרת f: תלות פונקציונלית אינטואיטיביתקיימת תת-סכמה שמכילה את כל האטריביוטים

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

Page 26: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 26

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

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

• For each f = ( Xf → Yf) in F do• Zf ← Xf

• Repeat

• For i = 1 to n do• Zf ← Zf ((Z⋃ f R∪ i)+

F R∪ i)• Until no more changes to Zf

• ρ is dependency-preserving iff Yf Z⊆ f for every f in F.לכל תלות אינטואיציה :Xf → Yf נבנה מעין "סגור" של ,Xf באמצעות ,

מוכל בו.Yfתלויות שכבר הראינו שהן נשמרות בפירוק, ונבדוק האם

Page 27: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 27

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

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

Zf אינה נשמרת: {טלפון, קדומת} = f= (טלפון, קדומת) → עיר

דוגמה: נתונה הסכמה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 28: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 28

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

Zf ← {A,C}

Zf ← {A,C} ( ({A,C} R⋃ ∪ 1)+F R∪ 1) =

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

{A,C} ({A,B} {A,B}) = {A,B,C}⋃ ∪ Zf ← {A,B,C}⋃( ({A,B,C} R∪ 2)+

F R∪ 2) =

{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 29: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 29

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

משפט: קיימת סכמהR,F עבורה לא קיים פירוק .BCNFמשמר מידע ומשמר תלויות ל-

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

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

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

בסכמה אחת.

Page 30: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 30

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

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

הרבה עדכונים של שדה עם כפילויות בסכמה המקורית (החלפת (מונע כפילויות):BCNF פירוק ל-⇐קידומת של עיר)

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

ללא פירוק (שימור תלויות): (עיר, ⇐בפירוק (למשל, מס' טלפון) Rקידומת, טלפון)

3אלטרנטיבה אחרת: צורה נורמליתNF

Page 31: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 31

3NFצורה נורמלית שלישית -

תהי הגדרה :R סכמה רלציונית ותהי F קבוצת בהינתן 3NFב- היא R. Rתלויות פונקציונליות מעל

F אם לכל תלות פונקציונלית לא טריוויאלית X → A F∈+ -מתקיים או שX-הינו על-מפתח או ש A שייך

.R,Fלמפתח קביל של תהי משפט :F קבוצת תלויות פונקציונאליות שכולן

בצד ימין. אם סכמה אחדבעלות אטריביוט , כלומר קיימת 3NF איננה ב-R,Fרלציונית

, אזי 3NFשמפרה את תנאי ה- +X→A∈ Fתלותשמפרה את תנאי Y→B∈ F קיימת תלות

.3NFה-

Page 32: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 32

?3NFאיך נבדוק שהסכמה ב-

:על פי המשפט אםFלא מהצורה הנדרשת, ניצור F '-כך ש

F'= { X → A | X → Y F ∈ A Y}∈עבור כלX→A∈ F’ נבדוק כיX-הינו על-מפתח או ש A

.R,Fמוכל במפתח קביל של -אם אין תלות בF’ 3 המפרה אתNF נסיק כי ,R,F

.3NFנמצאת ב-

R,F מבטיח כי גם 3NF ב-’R,Fשאלה: מדוע היותה של ?3NFב-

Page 33: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 33

דוגמה

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

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

3NF.נמצאת ב- :הסיבה

-קידומת, המפתחות הקבילים של הסכמה הם (עיר, טלפון) ו)טלפון).

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

Page 34: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 34

3NF לעומתBCNF

3NF-היא דרישה חלשה יותר מ BCNF כל סכמה :, אך 3NF היא אוטומטית גם ב-BCNFשנמצאת ב-

מונעת יותר BCNFההפך אינו בהכרח נכון. לכן .3NFכפילויות בלתי רצויות מאשר

-3פירוק לNF מוגדר באופן דומה לפירוק .BCNFל-

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

Page 35: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 35

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

בהינתן כיסוי מינימלי של תלויות פונקציונליותF:, R תלות פונקציונלית שכוללת את כל התכונות ב-Fאם קיימת ב-1.

} - עצור.Rהתשובה היא {

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

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

{ X ⋃ { A1A2 ...An.

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

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

Page 36: אביב-תשס"ז236363 - DBMS, Design1 צורה נורמלית – BCNF Boyce-Codd Normal Form מוטיבציה: תלות פונקציונלית בקבוצת אטריביוטים

אביב-תשס"ז 236363 - DBMS, Design 36

– דוגמה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}.R תלות פונקציונלית המכילה את כל התכונות ב-Fלא קיימת ב-1.ניצור סכמות לפי התלויות הפונקציונליות:2.

R1(dname, daddr)

R2(id, pname, paddr, dname)

R3(pres_no, date, id)

R4(pres_no, med_name, qnt).3R4 כוללת את המפתח הקביל )pres_no, med_name( ולכן אין צורך ,

להוסיף עוד סכמה.