View
235
Download
0
Embed Size (px)
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 -- ציון