4 תומכס ןונכת תיירואית םייסחי םינותנ ידסמל קלח
Download
Report
Transcript 4 תומכס ןונכת תיירואית םייסחי םינותנ ידסמל קלח
תיאוריית תכנון סכמות
למסדי נתונים יחסיים
4 חלק
Design Theory for
Relational Databases
Part 4
1
דוגמה לסכמה בעייתית
Student
Course
Teacher
S
Cohen
Levy
Levy
C
DB
OS
DB
T
Smith
Jones
Smith
היחס
C → T ומתקיימת הת"פSCT הסכמה היא
2
אפיון סכמה בעייתית
נתונה לנו סכמה ( Rקבוצת אטריביוטים)
ונתונה קבוצה של ת"פ Fשהיחסים עבור R
צריכים לקיים
הסכמה בעייתית אם קימת ת"פ X → Yלא
טריוויאלית (קרי )Y ⊊ X ,כך ש-
F⊨X→Y
ו X -אינו מפתח-על
3
צורה נורמלית של Boyce-Codd
)Boyce-Codd Normal Form (BCNF
סכמה Rעם קבוצת ת"פ Fהיא בצורה
נורמלית של )BCNF( Boyce-Coddאם
לכל X → A ∈ F+מתקיים
X → Aהיא טריוויאלית ,כלומר ,A ∈ Xאו
Xהוא מפתח-על ,כלומר F ⊨ X →R
4
המטרה
בהינתן סכמה Rעם קבוצת ת"פ ,Fצריך
למצוא פירוק R1, R2,…,Rnכך
שמתקיימים הדברים הבאים:
הפירוק חסר אובדן
הפירוק משמר את התלויות
כל סכמה Riהנה בצורה נורמלית
5
מציאת פירוק המקיים BCNF
מתחילים עם הסכמה Rוקבוצת הת"פ F
מחפשים הפרה של ,BCNFכלומר ת"פ
,X → A ∈ F+כך ש-
A ∉ Xוגם
F ⊬ X →R
טענה :אם יש הפרה ב ,F+ -אז יש הפרה ב;F -
לכן ניתן למצוא הפרה (אם יש כזאת) בזמן
פולינומיאלי
6
אם יש הפרה ,נפרק לפי הדוגמה
נתונה הסכמה ABCעם }F = {A → B, B → C
B → Cהיא הפרה של BCNF
לכן נפרק לשתי סכמות:
סכמה שמורכבת מהאטריביוטים של הת"פ המפרה את
,BCNFכלומר בדוגמה הנתונה הסכמה היא ( BCבסכמה
זו פחות הפרות ופחות אטריביוטים מאשר בסכמה
המקורית)
וסכמה המורכבת מכל האטריביוטים של הסכמה
המקורית ,למעט האטריביוט המופיע בצד הימני של הת"פ
המפרה ,BCNFכלומר בדוגמה הנתונה הסכמה היא AB
(בסכמה זו פחות הפרות ופחות אטריביוטים מאשר
בסכמה המקורית)
7
מציאת פירוק ( BCNFהמשך)
עבור כל אחת מהסכמות החדשות נחשב כיסוי של
הת"פ ,כלומר אם Sסמכה חדשה נחשב את (S)F
נמשיך באופן רקורסיבי עם כל אחת מהסכמות
הקיימות
תמיד מחליפים סכמה בשתי סכמות ,שבכל אחת
פחות אטריביוטים
האלגוריתם מסתיים כי סכמה של שני אטריביוטים
תמיד מקיימת BCNF
8
דוגמה
R=ABCDוF = {A → B, B → C, C → D} -
B → Cהיא הפרה של BCNF
לכן נפרק את Rלשתי סכמות:
R1=BCוF1 = {B → C} -
R2=ABDוF2 = {A → B, B → D} -
הת"פ B → Dמפרה את BCNFב R2 -ולכן נפרק את
R2ל-
R2=BDוF2 = {B → D} -
R3=ABוF3 = {A → B} -
9
דוגמה (המשך)
הפירוק הסופי הוא:
R1=BCוF1 = {B → C} -
F = {A → B, B → C,
R2=BDוF2 = {B → D} -
}C → D
R3=ABוF3 = {A → B} -
הערה :לכל Fi ,iהוא כיסוי חסר כפילויות של ) Ri (F
והחישוב שלו דורש (במקרה הכללי) זמן אקספוננציאלי
איחוד ה Fi -אינו שקול ל F -המקורי ,ולפיכך אין שימור
של הת"פ
10
פירוק בדרך אחרת
של הדוגמה הקודמת
R=ABCDוF = {A → B, B → C, C → D} -
נפרק תחילה לפי ( C → Dולא לפי )B → C
לכן נפרק את Rלשתי סכמות:
R1=CDוF1 = {C → D} -
R2=ABCוF2 = {A → B, B → C} -
הת"פ B → Cמפרה את BCNFב R2 -ולכן נפרק את
R2ל-
R2=BCוF2 = {B → C} -
R3=ABוF3 = {A → B} -
11
פירוק בדרך אחרת (המשך)
הפירוק הסופי הוא:
R1=CDוF1 = {C → D} -
R2=BCוF2 = {B → C} -
R3=ABוF3 = {A → B} -
הפעם איחוד ה Fi -שקול ל F -המקורי
ולכן יש שימור של הת"פ
12
למה לגבי פירוק ללא אובדן
תהי Rסכמה עם קבוצת ת"פ F
למה :פירוק של Rלשתי סכמות R1ו R2 -הנו
ללא אובדן אם ורק אם מתקיים אחד משני
התנאים הבאים:
F ⊨ R1 ⋂ R2 → R1או
F ⊨ R1 ⋂ R2 → R2
מסקנה :פירוק לשתי סכמות לפי הפרה של
BCNFהוא תמיד ללא אובדן
13
תכונות הפירוק לBCNF -
הפירוק שהאלגוריתם מייצר הנו בעל התכונות
הבאות:
כל סמכה בפירוק הנה BCNF
הפירוק הנו ללא אובדן
הפירוק אינו בהכרח משמר את הת"פ
זמן הריצה של האלגוריתם הנו אקספוננציאלי
בגלל חישוב ) Ri (F
בתרגיל ניתן אלגוריתם פולינומיאלי
14
דוגמה
נתונה הסכמה ABCעם
}F = {AB → C, C → A
C → Aהיא ההפרה היחידה של ,BCNFולכן
צריך לפרק לפי ת"פ זו ומקבלים:
סכמה CAעם הת"פ C → A
וסכמה BCללא ת"פ
מסקנה :אין שום פירוק ל BCNF -של הסכמה
הנ"ל שמשמר את הת"פ
15
מה גרם לאי-שימור הת"פ?
כשפרקנו את ,ABCפיצלנו את המפתח AB
של הסכמה המקורית בין שתי הסכמות
החדשות
Aבסכמה אחת
Bבסכמה השניה
כתוצאה מכך הת"פ AB → Cהלכה לאיבוד
מסקנה :אסור לפצל מפתחות
16
צורה נורמלית שלישית
)Third Normal Form (3NF
סכמה Rעם קבוצת ת"פ Fהיא בצורה
נורמלית שלישית ( )3NFאם לכל
X → A ∈ F+מתקיים אחד הדברים
הבאים:
X → Aהיא טריוויאלית ,כלומר ,A ∈ X
Xהוא מפתח-על ,כלומר ,F ⊨ X →Rאו
האטריביוט Aשייך למפתח כלשהו של R
17
אלגוריתם למציאת
פירוק המקיים 3NF
מתחילים עם הסכמה Rוקבוצת
הת"פ F
מוצאים כיסוי חסר כפילויות Gשל F
מכל ת"פ X → A ∈ Gמייצרים סכמה
( XAשהמפתח שלה הוא )X
18
תכונות הפירוק שקבלנו
הפירוק שהאלגוריתם מייצר הנו בעל
התכונות הבאות:
כל סמכה בפירוק הנה ( 3NFצריך
להוכיח)
הפירוק משמר את הת"פ (ברור)
האם הפירוק בעל תכונת הצירוף ללא
אובדן?
19
דוגמה
נתונה הסכמה ABCעם
}F = {A → C, B → C
Fהוא כבר חסר כפילויות ,לכן מקבלים:
R1=ACוF1 = {A → C} -
R2=BCוF2 = {B → C} -
20
נבדוק האם הפירוק
הוא ללא אובדן
}F = {A → C, B → C
הפירוק הוא AC :וBC -
C
a3
B
b1,3
A
a1
a3
a2
b2,1
הפירוק אינו מקיים את
תכונת הצירוף ללא אובדן
21
אלגוריתם למציאת פירוק 3NF
(המשך)
אם בין הסכמות שקבלנו מהכיסוי חסר
הכפילויות ,אין אף סכמה שקבוצת
האטריביוטים שלה היא מפתח-על של
הסכמה המקורית ,אז
מוסיפים מפתח של הסכמה המקורית
כסכמה נוספת של הפירוק
22
הדוגמה הקודמת (שנית)
נתונה הסכמה R=ABCעם
}F = {A → C, B → C
Fהוא כבר חסר כפילויות ,לכן מקבלים:
R1=ACוF1 = {A → C} -
R2=BCוF2 = {B → C} -
אף סכמה בפירוק אינה מפתח-על של ABC
לכן ,מוסיפים לפירוק את הסכמה ,ABשהיא מפתח
של הסכמה המקורית ABC
R3=ABוF3 = ∅ -
23
דוגמה נוספת של מציאת פירוק
המקיים 3NF
R=ABCDוF = {A → B, B → C, C → D} -
Fכיסוי חסר כפילויות ,לכן נייצר את הסכמות:
R1=ABוF1 = {A → B} -
R2=BCוF2 = {B → C} -
R3=CDוF3 = {C → D} -
(R1)+F=Rולכן R1מפתח-על של Rואין צורך להוסיף
אף סכמה נוספת
הערה :במקרה זה הפירוק גם מקיים BCNF
24
עוד דוגמה
נתונה הסכמה R=ABCעם
}F = {AB → C, C → A
נייצר את הסכמות:
סכמה R1=ABCעם }F1 = {AB → C
סכמה R2=ACעם }F2 = {C → A
Fiמציין את
הת"פ שממנה
נוצר ,Riאבל
אינו בהכרח
כיסוי של כל
הת"פ
המתקיימים
בR i -
למעשה ב R1 -מתקיימת גם הת"פ C → Aאבל היא
לא ניתנת באופן מפורש ע"י האלגוריתם ,ואין צורך
לדעת זאת כדי להראות שימור הת"פ
25
שיפור נוסף לאלגוריתם למציאת
פירוק 3NF
אפשר לאחד סכמות עם אותו המפתח ,קרי סכמות
שהתקבלו מת"פ עם אותו צד שמאל
דוגמהF = {A → B, A → C} ,R=ABC :
מקבלים:
R1=ABוF1 = {A → B} -
R2=ACוF2 = {A → C} -
אפשר לאחד לסכמה אחת:
R1=ABCוF1 = {A → B, A → C} -
26
נוכיח שהפירוק המתקבל
אומנם מקיים 3NF
כזכור ,מייצרים סכמות מכיסוי חסר
כפילויות G
תהי S=XA1…Anסכמה שהתקבלה מכל
הת"פ מהצורה ,X → Aiקרי כל הת"פ
שצד שמאל שלהן הוא X
צריך להוכיח שב S -אין הפרה של 3NF
27
הת"פ המפרה V → Ak
נניח שהסכמה S=XA1…Anמפרה
3NFבגלל ת"פ V → B ∈ G+
לכן ,B ∉ Xכי Xמפתח של הסכמה
ואם B ∈ Xאז אין זו הפרה של 3NF
לפיכך B ,הוא אחד ה Ai -ונניח ש-
B=Ak
נסמן את הת"פ המפרה ע"י V → Ak
28
המשך ההוכחהX ⊈ V :
V → Akהיא הת"פ המפרה 3NF
( X ⊈ Vאחרת Vמכיל מפתח ולכן Vהינו
→V
מפתח-על של הסכמה Sוהת"פ
Akאיננה הפרה של ) 3NF
המשך ההוכחה דן בשני מקרים:
V⊆X
V⊈X
29
מקרה V ⊆ X :1
V → Ak ∈ G+היא הת"פ המפרה 3NF
כאמור X ⊈ Vולכן Vחלקית ממש לX -
X → Ak ∈ Gכי לפי ההנחה יצרנו סכמה
מת"פ זו
נובע שהאטריביוטים של X – Vהנם
מיותרים בצד שמאל של הת"פ ,X → Ak
בסתירה לכך ש G -כיסוי חסר כפילויות
30
מקרה V ⊈ X :2
V → Ak ∈ G+היא הת"פ המפרה 3NF
יש גזירה של V → Akמ ,G -שחייבת
להשתמש בת"פ של תת-קבוצה G1 ⊆ G
ב G1 -אין אף ת"פ שצידה השמאלי הוא X
(אחרת X ⊆ V+ולכן Vמפתח-על של S
והת"פ V → Akאינה הפרה של )3NF
מסקנה G1 ⊢ V → Ak :1וגם X → Ak ∉ G1
31
מקרה ( V ⊈ X :2המשך)
תהי G2 ⊆ Gקב' כל הת"פ X → Aiעבור
Ai ∈ V
מ G2 -אפשר לגזור את ( X → Vבעזרת
אקסיומת האיחוד)
( X → Ak ∉ G2אחרת Ak ∈ Vולכן
V → Akאינה הפרה של )3NF
מסקנה G2 ⊢ X → V :2וגם X → Ak ∉ G2
32
מקרה ( V ⊈ X :2סיכום)
מסקנה G1 ⊢ V → Ak :1וגם X → Ak ∉ G1
מסקנה G2 ⊢ X → V :2וגם X → Ak ∉ G2
לכן מ G1 ⋃ G2 -אפשר לגזור את X → Ak
ולפיכך X → Akהנה ת"פ מיותרת ב,G -
בסתירה לכך ש G -חסר כפילויות
בכל אחד משני המקרים ,הראנו שהסכמה
S=XA1…Anאינה מפרה 3NF
33
סיום ההוכחה
נשאר להוכיח שאם מוסיפים סכמה Sשהיא
מפתח של הסכמה המקורית ,Rאז Sמקיימת
3NF
בין האטריביוטים של מפתח של הסכמה
המקורית Rלא יכולות להתקיים שום ת"פ
(אחרת זה לא מפתח)
לכן בין האטריביוטים של מפתח אין שום הפרה
של 3NF
34
תכונות הפירוק שהאלגוריתם מייצר
הפירוק שהאלגוריתם מייצר הנו בעל
התכונות הבאות:
כל סמכה בפירוק הנה ( 3NFהוכחנו)
הפירוק משמר את הת"פ (ברור)
הפירוק הנו ללא אובדן (צריך להוכיח –
אפשר למצוא הוכחה בספר של אולמן)
לאלגוריתם זמן ריצה פולינומיאלי
35