4 July 2007 נרמול מסד הנתונים כאשר מסד הנתונים עובר את שלב התכנון הראשוני יכולים להיווצר מספר בעיות בתכנון הנובעות מיתירות: אחת הבעיות הנפוצות ביותר במסדי.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
Number Theory and Algebra Advisor …………… Dr. Shpilka Amir Presented by …… Cohen Gil..………
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Robust Characterization of Polynomials 1 Robust Characterization of polynomials “IT DOES NOT MAKE SENCE!” מרצים : אורי גרסטן יניב עזריה Ronitt Rubinfeld.
משפט ההרכבה Composition Theorem תהי C מחלקה של פונקציות בוליניות תהי נגדיר סדרת פונקציות שניתנות לחישוב בזמן פולינומיאלי.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
סמינר במדעי המחשב 3 עודד פרץ משפט הנורמליזציה החזקה.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
צביעת גרפים: הגדרה: G=(V,E) גרף בלתי מכוון. צביעת G ב-K צבעים 1
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
צורות נורמליות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 10.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
תחשיב הפסוקים חלק ג'. צורות נורמליות א. DF – Disjunctive Form – סכום של מכפלות. דוגמא: (P  ~Q  R)  (R  P)  (R  ~Q  ~P) הגדרה: נוסחה השקולה לנוסחה.
אביב תשס"ה DBMS, צורות נורמליות1 צורות נורמליות: 3NF,BCNF צורה נורמלית (Normal Form) היא תכונה של סכמה רלציונית, המודדת את "טיב" הסכמה מבחינת מניעת.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
5. תלויות פונקציונליות שקפים: אלדר פישר
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
הקיבול איננו תלוי במטען ובפוטנציאל
שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
צורה נורמלית – BCNF Boyce-Codd Normal Form
Ray 7 דוגמא אלגוריתם 1.קבל דוגמאות 2. פלט f a עבור הדוגמה a המינימלית החיובית ?
תחשיב הפסוקים חלק ד'. תורת ההיסק של תחשיב הפסוקים.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
אביב-תשס"ה DBMS, Design1 פרוקים של רלציות מוטיבציה: פרוק סכמה לסכמות יותר קטנות על מנת למנוע כפילויות. הגדרה: תהי R סכמה רלציונית. פרוק של R הוא.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תחשיב היחסים (הפרדיקטים)
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 5
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
File Systems Motivation SQL (Structured Query Language) MapReduce 1 תרגול 1.
2003B Q5 Suppliers(sid, sname, city) Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
Tirgul 12 Trees 1.
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
Present simple הווה פשוט
4 July 2007 נרמול מסד הנתונים.
SQL בסיסי – הגדרה אינדוקטיבית
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
ממשקים - interfaces איך לאפשר "הורשה מרובה".
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
נרמול מסד הנתונים אביב July 2007
Marina Kogan Sadetsky –
תיכון בסיס-נתונים יחסי
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

4 July 2007 נרמול מסד הנתונים כאשר מסד הנתונים עובר את שלב התכנון הראשוני יכולים להיווצר מספר בעיות בתכנון הנובעות מיתירות: אחת הבעיות הנפוצות ביותר במסדי נתונים רלציוניים. יתירות יכולה להתאפיין ביתירות של אחסון המידע או יתירות בשעת פעולות עדכון (לפעמים אנו נאלץ לעדכן יותר ממה שחשבנו). ע"י שימוש באילוצי העקביות אשר תלויים בסמנטיקה של האפליקציות ניתן להגדיר קבוצת תלויות פונקציונאליות ולהשתמש בטכניקות פירוק (Decomposition) ע"מ לשפר (אולי) את התכנון. לצערנו, ישנם פירוקים הגורמים ליותר נזק מאשר תועלת, למשל פירוקים שאינם משמרים תלויות או מידע. על כן ברצוננו למצוא את אותם פירוקים שייהנו מתכונות "טובות" בשעת שיפור התכנון של המסד הראשוני. 236363 - DBMS, Design

תלויות פונקציונאליות Functional Dependencies 4 July 2007 תלויות פונקציונאליות Functional Dependencies הגדרה תהי R(A1,A2,..An) סכמה רלציונית, תהי r רלציה מעל הסכמה R, ויהיו X,Y⊆R קבוצות אטריבוטים. r מקיימת את התלות הפונקציונאלית X→Y אם לכל שני n-יות t1,t2∈r כך ש-πx(t2)=πx(t1) מתקיים ש- πy(t2)=πy(t1). (סימון: r ╞ X→Y ). הכלי הבסיסי בתכנון סכמות רלציוניות הוא התלות. תלויות מבטאות את העובדה שלא כל צירוף של ערכים הוא חוקי והגיוני במסד הנתונים. לדוגמא, אם קיים יחס של אחד לרבים בין מחלקה לעובדים (כלומר כל עובד שייך למחלקה אחת בלבד) אז לא יתכנו בטבלה EMP שתי רשומות עם ערכים זהים בעמודה EMPNO וערכים שונים ב- DEPNO. במילים אחרות , EMPNO קובעת באופן פונקציונאלי (חד-ערכי) את DEPNO. ניתן להציג את העובדה הזאת בצורה: EMPNO->DEPNO 236363 - DBMS, Design

4 July 2007 תלויות פונקציונאליות הערה 1: בהינתן r רלציה (מופע של R) ניתן לבדוק תמיד האם היא מקיימת FD כלשהי, אך מקרה הפוך אינו נכון. הערה 2: מתוך ההגדרה נובע כי מפתח K של רלציה מקיים: K→R K לא בהכרח מינימאלי. אם K מינימאלי אזי הוא מפתח קביל. 236363 - DBMS, Design

4 July 2007 תלויות פונקציונאליות הגדרה: תהי R סכמה רלציונית, תהי r רלציה מעל הסכמה R , ותהי F קבוצה של תלויות פונקציונאליות מעל R. r מקיימת את F (סימון r ⊧ F) אם לכל תלות פונקציונאלית f ב-F מתקיים: r ⊧ f. הגדרה: תהי R סכמה רלציונית, תהי r רלציה מעל הסכמה R, ותהי f תלות פונקציונאלית מעל R. f נובעת מ-F (סימון: F ⊧ f) אם לכל רלציה r מעל הסכמה R מתקיים: r ⊧ F⇒ r ⊧ f . 236363 - DBMS, Design

4 July 2007 תלויות פונקציונאליות הגדרה: תהי F קבוצת תלויות פונקציונאליות. הסגור של F (סימון: F+) הוא: {X→Y | F ⊧ X→Y }. דוגמא: מצא F+ של F={A →B,B →C}. ב F+ תהיינה בין היתר התלויות הפונקציונאליות הבאות: A →C, AB →C, AC →C, B →B, A →B, ∅ → ∅, C → ∅ 236363 - DBMS, Design

4 July 2007 תלויות פונקציונאליות אקסיומות ארמסטרונג: אילו הן שלושה כללי היסק שעוזרים בחישוב 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

תלויות פונקציונאליות תרגיל 4 July 2007 תלויות פונקציונאליות תרגיל נתון F={A →B,B →C} , R(A,B,C). הראו כי A →BC F ├ (כלומר ניתן להסיק). 236363 - DBMS, Design

4 July 2007 תלויות פונקציונאליות הגדרה: תהי X קבוצת אטריבוטים ותהי F קבוצת תלויות פונקציונאליות. הסגור של X בהינתן F (סימון: X+F ) הוא: {A | F├ X→A}. (A הוא אטריביוט) 236363 - DBMS, Design

תלויות פונקציונאליות אלגוריתם לחישוב X+F : S ← X Repeat 4 July 2007 תלויות פונקציונאליות אלגוריתם לחישוב 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

4 July 2007 תלויות פונקציונאליות תרגיל: נתון F={A →B,B →C} , R(A,B,C). חשבו את A+F. הערה: ניתן לשים לב ש-X הוא על מפתח של R אם X+F=R. 236363 - DBMS, Design

4 July 2007 פירוק הגדרה: פירוק (decomposition) של R הוא קבוצת סכמות {R1, R2 ,.., Rn} ρ= כך ש- ⋃i=1..nRi=R . תכונות של הפירוק: שימור מידע (התכונה החיונית ) שימור תלויות. (איננו הכרחי , אם כי הוא רצוי.) כפי שנאמר לפעמים צריך לפרק סכמה רלציונית לכמה סכמות קטנות יותר כדי למנוע כפילויות. כאשר מפרקים סכמה רלציונית יש לשים לב לשתי תכונות של הפירוק: שימור מידע ושימור תלויות. התכונה החיונית היא שימור המידע. לעומת זאת, שימור תלויות איננו הכרחי , אם כי הוא רצוי. 236363 - DBMS, Design

4 July 2007 שימור מידע הגדרה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונאליות , ויהי {R1, R2 ,.., Rn} ρ= פירוק של R. ρ הוא משמר מידע (lossless join) בהינתן F אם לכל רלציה r מעל R המקיימת r ╞ F מתקיים πRi(r)=r ⋈ i=1..n שימור מידע משמעו שהפירוק אינו מאבד אינפורמציה, ונוכל לקבל בחזרה בדיוק את מידע שהיה לנו בטבלה המקורית ע"י פעולות צירוף (join) בין תת הטבלאות. אם הפירוק אינו משמר מידע , בד"כ הצירוף ייתן רשומות מיותרות שלא היו בטבלה המקורית. 236363 - DBMS, Design

שימור מידע דוגמה: R(ID, NAME, ADDR), F = {ID → NAME, ID → ADDR} 4 July 2007 שימור מידע דוגמה: R(ID, NAME, ADDR), F = {ID → NAME, ID → ADDR} האם הפירוק ρ = {R1(ID, NAME), R2(NAME, ADDR)} משמר מידע? 236363 - DBMS, Design

שימור מידע πR1(r) ⋈ πR2(r) πR1(r) πR2(r) 4 July 2007 שימור מידע r = ADDR NAME ID ת"א ראובן 1 חיפה 2 πR1(r) ⋈ πR2(r) ADDR NAME ID ת"א ראובן 1 חיפה 2 πR1(r) πR2(r) NAME ID ראובן 1 2 ADDR NAME ת"א ראובן חיפה הפירוק אינו משמר מידע התוכן של r מקיים את התלויות אך הפירוק מפר את התנאי של שימור מידע 236363 - DBMS, Design

שימור מידע πR’1(r) πR’2(r) 4 July 2007 שימור מידע לעומת זאת, הפירוק ρ’ = {R’1(ID, NAME), R’2(ID, ADDR)} משמר מידע: πR’1(r) ⋈ πR’2(r) = r πR’1(r) πR’2(r) r = ADDR NAME ID ת"א ראובן 1 חיפה 2 NAME ID ראובן 1 2 ADDR ID ת"א 1 חיפה 2 236363 - DBMS, Design

שימור מידע בפירוק לשתי סכמות 4 July 2007 שימור מידע בפירוק לשתי סכמות משפט: פירוק לשתי סכמות ρ = {R1, R2} הוא משמר מידע אם ורק אם F ⊧ (R1⋂R2) → (R1\ R2) או F ⊧ (R1⋂R2) → (R2\ R1) 236363 - DBMS, Design

שימור מידע בפירוק לשתי סכמות 4 July 2007 שימור מידע בפירוק לשתי סכמות בדוגמה האחרונה R(ID, NAME, ADDR) F = {ID → NAME, ID → ADDR} הפירוק ρ = {R1(ID, NAME), R2(NAME, ADDR)} התלות NAME→ ID אינה נובעת מ-F, וגם לא NAME → ADDR, ולכן אינו משמר מידע לכל תוכן אפשרי של R. לעומת זאת, הפירוק ρ = {R1(ID, NAME), R2(ID, ADDR)} כן מקיים (למשל) ID → NAME ולכן, לפי המשפט, כן משמר מידע. 236363 - DBMS, Design

שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע 4 July 2007 שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע אתחול: צור רלציה r מעל הסכמה R. לכל תת-סכמה Ri נקצה ברלציה r שורה אחת ti ti מקבלת את הערך a לכל עמודה A∈Ri ואת הערך ai לכל עמודה A∉Ri. (הערך b או bi לכל עמודה B. הערך c או ci לכל עמודה C וכו'...) 236363 - DBMS, Design

שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע 4 July 2007 שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע משמעות הצעד כל עוד אין ב-r שורה שכולה ללא אינדקסים, ויש ב-r שתי שורות ti, tj כך ש- ti[X]=tj[X] עבור תלות פונקציונלית כלשהי (X → Y) ∈ F, השווה את הערכים ב-tj[Y] וב-ti[Y], 236363 - DBMS, Design

שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע 4 July 2007 שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע הפעלת הצעד: עבור תלות פונקציונאלית כלשהי (X → Y) ∈ F ושורות בהן ti[X]=tj[X] בצע לכל עמודה A∈ Y, אם אחד משני הערכים ti[A], tj[A] הוא a (ללא אינדקס), החלף את הערך האחר ב-a, ואחרת החלף את tj[A] ב-ti[A] או את ti[A] ב-tj[A], כרצונך. 236363 - DBMS, Design

שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע 4 July 2007 שימור מידע אלגוריתם לבדיקה אם פירוק משמר מידע תוצאה הפירוק משמר מידע אם ורק אם בסוף הריצה יש ב-r שורה שהיא כולה ערכים ללא אינדקסים 236363 - DBMS, Design

שימור מידע תרגיל: נתונה הסכמה R(A, B, C, D, E, F) 4 July 2007 שימור מידע תרגיל: נתונה הסכמה 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

שימור מידע - תרגיל פתרון: נבנה את הרלציה r: F E D C B A f1 e1 d1 c1 b 4 July 2007 שימור מידע - תרגיל פתרון: נבנה את הרלציה r: F E D C B A f1 e1 d1 c1 b a f2 e2 d c b2 f e d3 c3 a3 t1 t2 t3 236363 - DBMS, Design

שימור מידע - תרגיל A → B(t1,t2) B → EF(t2,t3) F E D C B A f1 e1 d1 c1 4 July 2007 שימור מידע - תרגיל F E D C B A f1 e1 d1 c1 b a f2 e2 d c b2 f e d3 c3 a3 A → B(t1,t2) t1 1 t2 F E D C B A f1 e1 d1 c1 b a f2 e2 d c f e d3 c3 a3 t3 t1 t2 F E D C B A f1 e1 d1 c1 b a f e d c d3 c3 a3 t3 t1 2 t2 B → EF(t2,t3) t3 קיבלנו t2 ללא אינדקסים, ולכן הפירוק משמר מידע. 236363 - DBMS, Design

שימור מידע - דוגמה נוספת 4 July 2007 שימור מידע - דוגמה נוספת דוגמא: נתון 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)} הוא משמר מידע? E D C B A e1 d c1 b1 a e d2 c2 b2 c b a3 E D C B A e1 d c1 b1 a e d2 c2 c b a3 E D C B A e1 d c1 b1 a e d2 c b a3 t1 t1 t1 A→B t1,t2 B→C t1,t2 t2 t2 t2 t3 t3 t3 E D C B A e1 d c1 b1 a e c b a3 E D C B A e1 d c1 b1 a e c b a3 t1 t1 C→D t1,t2 DE→BC t3,t2 t2 t2 t3 t3 מסקנה: הפירוק משמר מידע. 236363 - DBMS, Design

שימור תלויות אינטואיציה: אם כל אחת מתתי-רלציות ri (מעל הסכמות Ri) מספקת את πRiF אז מסד הנתונים כולו מספק את F. מטרה: כאשר מעדכנים את אחת מתתי-הרלציות באופן חוקי, גם העדכון על מסד הנתונים כולו (ה- join בין תתי-הרלציות) הוא חוקי. אם אין שימור תלויות אז כאשר נעדכן טבלה אחת, נצטרך לבדוק מול הטבלאות האחרות כדי לוודא שהעדכון חוקי. שימור תלויות איננו הכרחי, אם כי רצוי. 236363 - DBMS, Design

שימור תלויות – דוגמה דוגמה: 4 July 2007 שימור תלויות – דוגמה דוגמה: נתון: (עיר, קדומת, טלפון)R {עיר  (טלפון, קדומת), קדומת  עיר} =F {(עיר, קדומת)R2, (עיר, טלפון)R1}= ρ משמר מידע: R1 ⋂ R2 = עיר, R2 \ R1 = קדומת, F ⊧ עיר  קידומת שאלה: האם הפירוק משמר תלויות? אותה קדומת יכולה להיות משותפת לכמה ערים, אך לכל עיר יש קדומת אחת בלבד. אותו מספר טלפון יכול להופיע בערים שונות, אך לא בערים עם אותה קדומת. 236363 - DBMS, Design

שימור תלויות - דוגמה - המשך 4 July 2007 שימור תלויות - דוגמה - המשך הפירוק אינו משמר תלויות, כי: כל אחת מהרלציות r1, r2 מקיימת את F. r1= עיר טלפון חיפה 1234 טבעון r2= עיר קידומת חיפה 04 טבעון 236363 - DBMS, Design

שימור תלויות - דוגמה - המשך 4 July 2007 שימור תלויות - דוגמה - המשך אבל ה-join אינו מקיים את F : כאשר נרצה להוסיף או לשנות מספר טלפון ב- r1 נצטרך לבדוק גם ב- r2 כדי לוודא שהשינוי הוא חוקי. לא די שבאותה עיר לא יהיו שני טלפונים זהים - אסור שיהיו טלפונים זהים גם בערים שונות באותו אזור חיוג. עיר קידומת טלפון חיפה 04 1234 טבעון 236363 - DBMS, Design

הוא: { X→Y | X → Y∈F+ ∧ X⋃Y ⊆ S }. 4 July 2007 שימור תלויות (היטל) הגדרה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונאליות מעל R, ותהי S⊆R ההיטל של F על תת הסכמה S (סימון: πSF) הוא: { X→Y | X → Y∈F+ ∧ X⋃Y ⊆ S }. בכדי להגדיר זאת פורמאלית יש להגדיר תחילה את המושג של היטל של קבוצת תלויות על תת-סכמה כלומר אותן תלויות שהן רלוונטיות לתת - הסכמה. 236363 - DBMS, Design

4 July 2007 שימור תלויות הגדרה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונאליות מעל R, ויהי {R1, R2 ,.., Rn} ρ= פירוק של R. הפירוק הוא משמר תלויות (dependency preserving) בהינתן F אם לכל קבוצת רלציות {r1,r2,…,rn} (מעל סכמות: {R1, R2 ,.., Rn} ) כך ש- πRiF ╞ri לכל i=1,…,n מתקיים: ⋈i=1..n ri╞ F 236363 - DBMS, Design

הפירוק הוא משמר תלויות בהינתן F אם F ⊆ (⋃ni =1 πRiF)+ 4 July 2007 שימור תלויות הגדרה שקולה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונאליות מעל R, ויהי {R1, R2 ,.., Rn} ρ= פירוק של R. הפירוק הוא משמר תלויות בהינתן F אם F ⊆ (⋃ni =1 πRiF)+ אינטואיטיבית: תלות פונקציונלית f נשמרת בפירוק אם קיימת תת-סכמה שמכילה את כל האטריביוטים המופיעים ב- f, או אם ניתן להסיק את f מתוך תלויות אחרות שנשמרות בפירוק. 236363 - DBMS, Design

4 July 2007 שימור תלויות תלות פונקציונאלית f נשמרת בפירוק אם קיימת תת-סכמה שמכילה את כל האטריבוטים המופיעים ב-f , או אם ניתן להסיק את f מתוך תלויות אחרות שנשמרות בפירוק. שימור תלויות משמעו שכאשר מעדכנים את מסד הנתונים, אם מוודאים שכל תת טבלה בפני עצמה נשארת עקבית אז מובטח שגם המסד כולו הוא עקבי (כלומר אינו מפר את התלויות הפונקציונאליות). תלות פונקציונאלית f נשמרת בפירוק אם קיימת תת-סכמה שמכילה את כל האטריבוטים המופיעים ב-f , או אם ניתן להסיק את f מתוך תלויות אחרות שנשמרות בפירוק. 236363 - DBMS, Design

שימור תלויות אלגוריתם לבדיקת שימור תלויות 4 July 2007 שימור תלויות אלגוריתם לבדיקת שימור תלויות R סכמה רלציונית,F קבוצת תלויות פונקציונאליות מעל R, ו- {R1, R2 ,.., Rn} ρ= פירוק של R. בהינתן סכמה R , קבוצת תלויות פונקציונאליות F ופירוק {R1, R2 ,.., Rn} ρ= , האלגוריתם הבא בודק האם הפירוק משמר תלויות: 236363 - DBMS, Design

שימור תלויות תרגיל: האם הפירוק ρ משמר תלויות? כאשר נתון: R(A, B, C, D) 4 July 2007 שימור תלויות תרגיל: האם הפירוק ρ משמר תלויות? כאשר נתון: R(A, B, C, D) F = {A → B, AC → D, BC → D} ρ = {R1(A, B), R2(B, C, D)} 236363 - DBMS, Design

אלגוריתם לבדיקת שימור תלויות – דוגמה דוגמה: נתונה הסכמה R(A, B, C, D), קבוצת תלויות F = {A → B, AC → D, BC → D}. האם הפירוק ρ = {R1(A, B), R2(B, C, D)} משמר תלויות? נבדוק לכל תלות האם היא נשמרת בפירוק. התלות A → B נשמרת כי AB ⊆ R1, התלות BC → D נשמרות כי BCD ⊆ R2 נותר לוודא שהתלות AC → D נשמרת (לפי האלגוריתם): 236363 - DBMS, Design

אלגוריתם לבדיקת שימור תלויות – דוגמה 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 ⊆ Zf ={A,B,C,D}לכן התלות AC→D נשמרת בפירוק. 236363 - DBMS, Design

4 July 2007 צורות נורמאליות צורה נורמאלית (Normal Form) היא תכונה של סכמה רלציונית, המודדת את "טיב" הסכמה מבחינת מניעת כפילויות. BCNF 3NF צורה נורמאלית (Normal Form) היא תכונה של סכמה רלציונית, המודדת את "טיב" הסכמה מבחינת מניעת כפילויות. אנו נעסוק שבני צורות נורמאליות שונות: BCNF ו- 3NF , כאשר BCNF נחשבת לצורה נורמאלית יותר חזקה. 236363 - DBMS, Design

צורה נורמאליתBCNF – Boyce-Codd 4 July 2007 צורה נורמאליתBCNF – Boyce-Codd הגדרה: תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונאליות מעל R. אומרים ש-R היא ב-BCNF אם לכל תלות פונקציונאלית X → Y∈F+ כך ש- Y⊄X, X הוא על-מפתח של R. BCNF מבטאת את העובדה שתלות פונקציונאלית במשהו שאינו מפתח-על היא "דבר רע"; אם קיימת תלות לא טריוויאלית בקבוצת שדות שאיננה מפתח על אזי תכנון הסכמות הרלציוניות הוא לקוי, ובמסד עלולות להיווצר כפילויות. 236363 - DBMS, Design

BCNF – דוגמא דוגמה: הסכמה קבוצת התלויות הפונקציונליות (Cust_Id, Track, Faculty, Book_Name)R קבוצת התלויות הפונקציונליות F={Cust_Id→Track,Track → Faculty} האם בהינתן קבוצת תלויות זו סכמה בBCNF? 236363 - DBMS, Design

BCNF – דוגמא דוגמה: בהינתן קבוצת התלויות הפונקציונליות F={Cust_Id→Track,Track → Faculty} הסכמה (Cust_Id, Track, Faculty, Book_Name)R איננה ב-BCNF: ב-F קיימת התלות → Faculty Track, אך Track אינו על-מפתח. הסבר: ניתן להיעזר במשפט כדי לבדוק האם R,F ב-BCNF. כפילויות במסד: למשל, שם הפקולטה CS מופיע ברלציה פעמים רבות, כמספר הספרים שהוזמנו ע"י סטודנטים השייכים למסלולים של הפקולטה CS. פתרון: פירוק ל-BCNF - פירוק של R לתתי-סכמות כך שכל אחת מהן נמצאת ב-BCNF יחסית לתלויות הרלוונטיות לה (הגדרה מדויקת תינתן בשקף הבא). 236363 - DBMS, Design

צורה נורמאלית BCNF – Boyce-Codd 4 July 2007 צורה נורמאלית BCNF – Boyce-Codd הגדרה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונאליות מעל R, ויהי {R1, R2 ,.., Rn} ρ= פירוק של R. ρ הוא פירוק ל-BCNF אם כל תת-סכמה היא ב-BCNF בהינתן πRi F. (הערה: באופן דומה מגדירים פירוק לצורה הבאה שנראה 3NF). 236363 - DBMS, Design

צורה נורמאלית BCNF אלגוריתם לפירוק סכמה R ל BCNF (בהינתן קבוצת תלויות F) decompose(Z) תחזיר לנו פירוק משמר מידע של Z כך ש-Y הוא ב-BCNF ואת Z (תוצאת הפירוק) נמשיך לפרק. 236363 - DBMS, Design

צורה נורמאלית BCNF אלגוריתם לפירוק סכמה R ל BCNF (בהינתן קבוצת תלויות F) בסכמה המוחזרת Z\A השימוש הוא בתכונה A האחרונה שנבחרה בלולאה. מציאת התלות Z\AB →A היא עבור A,B ∈ Z ובהתחשב ב- F המקורית. טענה: אם Z אינה ב-BCNF אזי קיימים A ו-B כך ש- Z\AB →A . מכך שאם לא ניתן למצוא A ו- B כאלה אז Z אינה ניתנת לפירוק והיא ב-BCNF. שימו לב: אם Z ב-BCNF ייתכן ועדיין נמצא A ו-B כאלה והאלגוריתם ימשיך לפרק את Z. כרגע אין בידינו אלגוריתם יעיל להכרעה האם תת סכמה היא ב-BCNF. טענה: הפירוק {Z\A,Y} הוא משמר מידע. 236363 - DBMS, Design

דוגמה נתונה הסכמה R (ציונים של סטודנטים), וקבוצת תלויות F: 4 July 2007 דוגמה נתונה הסכמה R (ציונים של סטודנטים), וקבוצת תלויות F: R(sid , sname , cno , cname, grade) F = {sid → sname, cno → cname, (sid , cno ) → grade} sid -- מס' סטודנט sname -- שם סטודנט cno -- מס' קורס Cname -- שם קורס Grade -- ציון 236363 - DBMS, Design 45

דוגמה - המשך F = {sid → sname, cno → cname, (sid, cno) → grade} R(sid, sname, cno, cname, grade) נבצע decompose ל-R ע"פ האלגוריתם {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 46

דוגמה - המשך F = {sid → sname, cno → cname, (sid, cno) → grade} Z = {sid,cno,cname,grade} נמשיך ונבצע decompose ל-Z ע"פ האלגוריתם {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} בשלב זה לא ניתן יותר למצוא A ו-B כך ש- Z\AB →A ולכן decompose תחזיר STOP. 236363 - DBMS, Design 47

דוגמה - המשך וכך יצא הפירוק: F = {sid → sname, cno → cname, (sid, cno) → grade} R(sid, sname, cno, cname, grade) R2(sid, cno, cname, grade) R1(sid, sname) R3(sid, cno, grade) R4(cno, cname) לפי הבנייה, הפירוק ל- {R1,R3,R4} הוא משמר מידע וב-BCNF. 236363 - DBMS, Design 48

צורה נורמאלית BCNF אלגוריתם לפירוק סכמה R ל BCNF (בהינתן קבוצת תלויות F) טענה: אם Z אינה ב-BCNF אזי קיימים A ו-B כך ש- {Z\AB} →A . אם Z אינה ב-BCNF קיימת תלות X→Y כך ש-X אינו על-מפתח ו- Y⊄X. מאחר ו-X אינו על מפתח קיים B כך שלא מתקיים X →B. מכך נובע X ⊆{Z\B} Y⊄Xולכן קיים A כך ש- A ∈Y ו-A ∉X. מכך נובע X ⊆{Z\AB} מכך נובע {Z\AB} →Y כך נובע {Z\AB} →A. 236363 - DBMS, Design

צורה נורמאלית BCNF אלגוריתם לפירוק סכמה R ל BCNF (בהינתן קבוצת תלויות F) טענה: הפירוק {Z\A,Y} הוא משמר מידע. A היא התכונה האחרונה כך ש (Y\AB) →A. לאחר מכן Y הופך להיות Y\B. לכן בסופו של דבר נקבל (Y\A) →A. מאחר ו-Z מכיל את כל התכונות בסכמה אז Z\A ⋂ Y = Y\A נבחין כי A=(Y\(Z\A)) ומכאן (Z\A ⋂ Y) →(Y\(Z\A)) וזהו התנאי לשימור מידע. 236363 - DBMS, Design

4 July 2007 צורה נורמאלית BCNF אלגוריתם לפירוק סכמה R ל BCNF (בהינתן קבוצת תלויות F) הערות הפירוק שאלגוריתם זה מוצא הוא משמר מידע אך לא בהכרח משמר תלויות. לא כל פירוק בצורת BCNF משמר מידע. רק אם הפירוק נוצר תוך כדי שימור מידע כגון באלגוריתם הזה אז התוצאה הסופית היא משמרת מידע. 4 July 2007 236363 - DBMS, Design 51

צורה נורמאלית BCNF – Boyce-Codd 4 July 2007 צורה נורמאלית BCNF – Boyce-Codd תמיד קיים פירוק ל-BCNF שמשמר מידע , אך לא תמיד קיים פירוק ל-BCNF שמשמר תלויות. משפט: קיימים R סכמה רלציונית ו- F קבוצת תלויות פונקציונאליות מעל R עבורם לא קיים פירוק משמר מידע ומשמר תלויות ל-BCNF. 236363 - DBMS, Design

BCNF ושימור תלויות הוכחה ע"י דוגמה: 4 July 2007 BCNF ושימור תלויות הוכחה ע"י דוגמה: עבור הסכמה (עיר, קידומת, טלפון)R וקבוצת התלויות {עיר→(טלפון,קידומת), קידומת→עיר}=F לא קיים פירוק BCNF, משמר מידע ומשמר תלויות. הסיבה: על מנת לשמר את התלות עיר→(טלפון,קידומת) כל שלושת האטריביוטים חייבים להופיע בסכמה אחת. 236363 - DBMS, Design

BCNF לעומת שימור תלויות קריטריון לבחירה: אופן השימוש הצפוי במסד הנתונים: הרבה עדכונים של שדה עם כפילויות בסכמה המקורית (החלפת קידומת של עיר) ⇐ פירוק ל-BCNF (מונע כפילויות): (עיר, קידומת)R2,(עיר, טלפון)R1. הרבה הוספות/עדכונים של שדות המופיעים בתלות שלא נשמרת בפירוק (למשל, מס' טלפון) ⇐ ללא פירוק (שימור תלויות): (עיר, קידומת, טלפון)R . לשם כך נשתמש בצורה נורמלית 3NF 236363 - DBMS, Design

צורה נורמאלית 3NF X הוא מפתח על של R או Y מוכל במפתח קביל של R. הגדרה: 4 July 2007 צורה נורמאלית 3NF הגדרה: תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונאליות מעל R. R היא ב-3NF אם לכל תלות פונקציונאלית X→Y∈F+ כך ש- Y ⊈ X, X הוא מפתח על של R או Y מוכל במפתח קביל של R. 236363 - DBMS, Design

דוגמה הסכמה (עיר, קידומת, טלפון) R בהינתן התלויות הפונקציונליות: F {עיר→(טלפון,קידומת), קידומת→עיר}= נמצאת ב-.3NF הסיבה: המפתחות הקבילים של הסכמה הם (עיר, טלפון) ו- (קידומת,טלפון). כל תלות מתוך F מקיימת את תנאי ה-3NF. מספיק לבדוק רק את התלויות של F. 236363 - DBMS, Design

צורות נורמאליות תמיד מתקיים: כל סכמה שהיא ב-BCNF היא גם ב-3NF 4 July 2007 צורות נורמאליות תמיד מתקיים: כל סכמה שהיא ב-BCNF היא גם ב-3NF ההפך לא בהכרח BCNF מונעת יותר כפילויות בלתי רצויות מאשר 3NF תמיד קיים פירוק ל-3NF שהוא משמר מידע ותלויות פירוק ל-3NF מוגדר באופן דומה לפירוק ל-BCNF. 236363 - DBMS, Design

כיסוי מינימלי בקבוצת תלויות פונקציונליות יכול להיות מידע עם חזרות. 4 July 2007 כיסוי מינימלי בקבוצת תלויות פונקציונליות יכול להיות מידע עם חזרות. דוגמה: שתי הקבוצות ,G={AB, BC,AC} F={AB,BC} הן "שקולות", במובן ש- F+ = G+. מטרה: להביא את כל קבוצות התלויות פונקציונליות לצורה אחידה. 236363 - DBMS, Design

כיסוי מינימאלי (Minimal Cover) 4 July 2007 כיסוי מינימאלי (Minimal Cover) הגדרה: תהי F קבוצת תלויות פונקציונליות. כיסוי מינימאלי (minimal cover) של F הוא קבוצת תלויות פונקציונליות FC כך ש-FC מינימלית ו- F+ = FC+. הכיסוי המינימאלי אינו בהכרח יחיד 236363 - DBMS, Design

כיסוי מינימלי (Minimal Cover) 4 July 2007 כיסוי מינימלי (Minimal Cover) הגדרה: תהי F קבוצת תלויות פונקציונליות. F היא מינימלית אם לכל תלות X→ Y ∈ F מתקיימות שלוש הדרישות הבאות: |Y| = 1 F+ ≠ (F \ {X → Y})+ ( אין ב-F תלויות "מיותרות".) לכל Z ⊊ X מתקיים F+ ≠ (F \ {X → Y}  {Z → Y})+ ( אין ב-F תלות A → X שבה X מכילה תכונות "מיותרות".) 236363 - DBMS, Design

אלגוריתם למציאת כיסוי מינימלי של קבוצת תלויות פונקציונליות F 4 July 2007 אלגוריתם למציאת כיסוי מינימלי של קבוצת תלויות פונקציונליות 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

אלגוריתם לפירוק סכמה R ל-3NF אם קיימת ב-F תלות פונקציונלית שכוללת את כל התכונות ב-R, התשובה היא {R} - עצור. לכל קבוצת תלויות פונקציונליות X → An X → A2,…, X → A1, התלויות באותו X, צור סכמה } { XA1A2 ...An. אם אין אף סכמה המכילה מפתח קביל של R, הוסף סכמה שהיא מפתח קביל כלשהו של R. הפירוק שאלגוריתם זה מוצא הוא משמר מידע ותלויות. 236363 - DBMS, Design

פירוק ל-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

פירוק ל-3NF – דוגמה דוגמה: פתרון R1(dname, daddr) ניצור סכמות לפי התלויות הפונקציונליות: R1(dname, daddr) R2(id, pname, paddr, dname) R3(pres_no, date, id) R4(pres_no, med_name, qnt) R4 כוללת את המפתח הקביל (pres_no, med_name), ולכן אין צורך להוסיף עוד סכמה. 236363 - DBMS, Design

צורה נורמאלית 3NF תרגיל: פרק הסכמה הבאה ל-3NF כאשר נתון: 4 July 2007 צורה נורמאלית 3NF תרגיל: פרק הסכמה הבאה ל-3NF כאשר נתון: R(sid , sname , cno , cname, grade) F = {sid → sname, cno → cname, (sid , cno ) → grade} sid -- מס' סטודנט sname -- שם סטודנט cno -- מס' קורס Cname -- שם קורס Grade -- ציון 236363 - DBMS, Design