This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
אביב-תשס"ז 236363 - DBMS, Design 1
BCNFצורה נורמלית – Boyce-Codd Normal Form
תלות פונקציונלית בקבוצת אטריביוטים מוטיבציה :שאיננה מהווה על-מפתח יוצרת כפילויות.
תהי הגדרה :R סכמה רלציונית, ותהי F קבוצת BCNFהיא ב- R. Rתלויות פונקציונליות מעל
אם לכל תלות פונקציונלית לא Fבהינתן הוא על-מפתח F+, X הנמצאת ב-X→Yטריוויאלית
.Rשל אם קיימת תלות לא טריוויאלית בקבוצת
אטריביוטים שאיננה על-מפתח, תכנון הסכמה הוא לקוי ובמסד הנתונים עלולות להיווצר כפילויות.
אביב-תשס"ז 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) וקבוצת תלויות
.BCNF נמצאת ב-R,F כדי להסיק כי Fמספיק לבדוק רק את התלויות ב-
אביב-תשס"ז 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אחת מהן נמצאת ב-
(הגדרה מדויקת תינתן בהמשך).
אביב-תשס"ז 236363 - DBMS, Design 4
פירוקים של סכמות
תהי הגדרה :R.סכמה רלציונית
כך ρ = {R1, …,Rn} הוא קבוצת סכמות Rפירוק של iש-
n=1 Ri = R ⋃.
:דרישות מהפירוק המסד המפורק חייב לבטא את אותו המידע (תכונת
שימור מידע). אם כל אחת מתתי-סכמות מספקת את התלויות
הרלוונטיות אליה, אז המסד המפורק מספק את כל (תכונת שימור תלויות).Fהתלויות הפונקציונאליות של
אביב-תשס"ז 236363 - DBMS, Design 5
שימור מידע
נדרוש שהפירוק לא יאבד אינטואיציה :אינפורמציה, ונוכל לקבל בחזרה בדיוק את המידע
שהיה לנו בטבלה המקורית ע"י צרוף תתי-הטבלאות.
אם הפירוק אינו משמר מידע, בדרך-כלל הצירוף ייתןרשומות מיותרות, שלא היו בטבלה המקורית.
כשמפרקים סכמה לתתי-סכמות, חיוני לדאוגלשימור מידע.
אביב-תשס"ז 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 שמקיים את התלויות אך מפר את התנאי של שימור מידע:
אביב-תשס"ז 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)
אביב-תשס"ז 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(למשל)
אביב-תשס"ז 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.
אביב-תשס"ז 236363 - DBMS, Design 10
- הרעיוןBCNFפירוק משמר מידע ל-
תמיד קיים פירוק ל-משפט :BCNF.שמשמר מידע -נמצא סכמה אשר אינה נמצאת בBCNF ונפרק אותה
לשתי תתי-סכמות על-פי המשפט לפירוק משמר מידע לשתי תתי-סכמות. בפרט,
בהינתן סכמהR ותלות פונקציונלית X → Y נוכל לפרק את ,R R1[X{לשתי תתי-סכמות: Y],R⋃ 2[R\(Y\X)]{ ,לפי המשפט .
מובטח שהפירוק משמר מידע. נחזור על השלב הקודם כל עוד קיימות סכמות אשר אינן
.BCNFנמצאות ב- הערה: כיוון שבכל צעד מבצעים פירוק משמר מידע
(לשתי תתי-סכמות) , מובטח כי הפירוק המתקבל הוא גם משמר מידע.
אביב-תשס"ז 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חזור ל-•
אביב-תשס"ז 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 אלא כיסוי ,שלו (לאו דווקא מינימאלי).
אביב-תשס"ז 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 -- ציון
אביב-תשס"ז 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וב-
אביב-תשס"ז 236363 - DBMS, Design 15
)1 – הערה(BCNFפירוק ל-
יש לשים לב כי בפירוק של סכמה רלציוניתR אנחנו ע"י כך שבודקים שכל BCNFבודקים אם הפירוק הוא ב-
πRi מעל BCNF היא ב-Riתת-סכמה F ההיטל מחושב)
).+Fמעל לבדוק האם לא מספיקRi-מקיימת את תנאי ה BCNF
.Riב- שמכילות תכונותFמעל קבוצת התלויות ב-
ניתן לעשות בדיקה עבורπRiF ע"י כך שקודם מחשבים
πRiכיסוי של F עם אלגוריתם יעיל ואז משתמשים
ישירות מהכיסוי.BCNFבמשפט המאפשר לבדוק שיוך ל-
אביב-תשס"ז 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∈.(ההגדרה מתקיימת באופן ריק)
.ההערה רלוונטית לכל צורה נורמאלית
אביב-תשס"ז 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הפירוק משמר מידע אם ורק אם בסוף הריצה יש ב-•
כולה ערכים ללא אינדקסים.
אביב-תשס"ז 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
אביב-תשס"ז 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
אביב-תשס"ז 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
.מסקנה:• מידע משמר הפירוק
אביב-תשס"ז 236363 - DBMS, Design 21
שימור תלויות
אם כל אחת מתתי-רלציות אינטואיציה :ri מעל)
πRi) מספקת את Riהסכמות F אז מסד הנתונים כולו
. Fמספק את כאשר מעדכנים את אחת מתתי-הרלציות מטרה :
באופן חוקי, גם העדכון על מסד הנתונים כולו (ה- join.בין תתי-הרלציות) הוא חוקי
אם אין שימור תלויות אז כאשר נעדכן טבלה אחת, נצטרךלבדוק מול הטבלאות האחרות כדי לוודא שהעדכון חוקי.
.שימור תלויות איננו הכרחי, אם כי רצוי
אביב-תשס"ז 236363 - DBMS, Design 22
שימור תלויות – דוגמה
:דוגמה(עיר, קדומת, טלפון) נתונה הסכמהR והתלויות
עיר} (טלפון, קדומת), קדומת הפונקציונליות {עיר =F
אותה קדומת יכולה להיות משותפת לכמה ערים, אך לכל עיר יש קדומת אחת בלבד. אותו מספר טלפון יכול להופיע בערים שונות, אך לא בערים עם אותה קדומת.
(עיר, קדומת)} שימור מידע: הפירוקR2(עיר, טלפון) ,R1{ = ρ:משמר מידע
R1 ∪ R2 = עיר, R2 \ R1 = קדומת, F ⊧ עיר →קדומת ?שאלה: האם הפירוק משמר תלויות
אביב-תשס"ז 236363 - DBMS, Design 23
דוגמה - המשך
:הפירוק אינו משמר תלויות, כי
כל אחת מהרלציותr1, r2 מקיימת את F.
עירטלפון
חיפה1234
טבעון1234
עירקדומת
חיפה04
טבעון04
r1= r2=
אביב-תשס"ז 236363 - DBMS, Design 24
דוגמה - המשך
-אבל הjoin אינו מקיים את F :
-כאשר נרצה להוסיף או לשנות מספר טלפון בr1 נצטרך כדי לוודא שהשינוי הוא חוקי.r2לבדוק גם ב-
לא די שבאותה עיר לא יהיו שני טלפונים זהים - אסור שיהיוטלפונים זהים גם בערים שונות באותו אזור חיוג.
עירקדומתטלפון
חיפה123404
טבעון123404
אביב-תשס"ז 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המופיעים ב- אחרות שנשמרות בפירוק.
אביב-תשס"ז 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תלויות שכבר הראינו שהן נשמרות בפירוק, ונבדוק האם