1 / 10

צורות נורמליות: 3NF,BCNF

צורות נורמליות: 3NF,BCNF. צורה נורמלית ( Normal Form ) היא תכונה של סכמה רלציונית, המודדת את "טיב" הסכמה מבחינת מניעת כפילויות. נלמד על שתי צורות נורמליות שונות: 3NF, BCNF. צורה נורמלית – BCNF Boyce-Codd Normal Form. מוטיבציה : תלות פונקציונלית במשהו שאיננו מפתח-על היא "דבר רע“.

samuru
Download Presentation

צורות נורמליות: 3NF,BCNF

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. צורה נורמלית – BCNFBoyce-Codd Normal Form • מוטיבציה: תלות פונקציונלית במשהו שאיננו מפתח-על היא "דבר רע“. • הגדרה: תהי R סכמה רלציונית, ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב-BCNF בהינתן F אם לכל תלות פונקציונלית כך ש- X  Y  F+ , X הוא מפתח-על של R. • אם קיימת תלות לא טריוויאלית בקבוצת שדות שאיננה מפתח על, תכנון הסכמות הרלציוניות הוא לקוי, ובמסד הנתונים עלולות להיווצר כפילויות (תלות פונקציונלית X  Y נקראת טריוויאלית אם Y  X). 236363 - DBMS, צורות נורמליות

  3. BCNF – המשך • דוגמה: נתונה קבוצת התלויות הפונקציונליות:{(טלפון, קידומת)  עיר ,קידומת  עיר} = F. הסכמה (עיר, קידומת, טלפון)R איננה ב-BCNF: • הסבר: הסגור F+ כולל את התלות הלא טריוויאלית קידומת  עיר, אבל עיר איננה מפתח-על. • כפילויות במסד: למשל, הקידומת של חיפה (04) נשמרת במסד פעמים רבות, כמספר הטלפונים בחיפה. • פירוק ל-BCNF: אם סכמה רלציונית אינה נמצאת בצורה הנורמלית הרצויה (למשל BCNF), אפשר לפרק אותה לתת סכמות שנמצאות בצורה נורמלית זו. 236363 - DBMS, צורות נורמליות

  4. פרוק ל-BCNF • הגדרה: תהי R סכמה רלציונית, תהי F קבוצת תלויות פונקציונליות מעל R, ויהי = {R1,…, Rn} פרוק של R. הוא פרוק ל-BCNF אם כל תת-סכמה Ri היא ב-BCNF בהינתן RiF. • הערה: באופן דומה ניתן להגדיר פרוק לכל צורה נורמלית אחרת, למשל 3NF. • עובדה: תמיד קיים פרוק ל-BCNF שמשמר מידע, אך לא תמיד קיים פרוק ל-BCNF שמשמר תלויות. 236363 - DBMS, צורות נורמליות

  5. פירוק ל-BCNF – המשך • דוגמה: נתונה הסכמה (עיר, קידומת, טלפון)R וקבוצת התלויות הפונקציונליות:{עיר(טלפון,קידומת), קידומתעיר}=F. הפרוק {(עיר, קידומת)R2 ,(עיר, טלפון)R1 }=  הוא פרוק ל-BCNF. • פרוק זה משמר מידע, אך כפי שראינו הוא איננו משמר תלויות. • שימו לב: כל סכמה שיש בה שני אטריביוטים או פחות היא ב-BCNF, באופן טריוויאלי (למה?) 236363 - DBMS, צורות נורמליות

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

  7. אלגוריתם לפרוק סכמה R ל-BCNF • תהי F קבוצת תלויות פונקציונליות: • חשב את F+. • {R}   . • אם כל הסכמות ב-  הן ב-BCNF – עצור. • מצא סכמה S  שאינה ב-BCNF, כלומר קיימת תלות פונקציונלית X  Y ב- F+ כך ש-XY  S, Y  X ו- X אינו מפתח-על של S. בצע:   ( \ {S})  {S \ Y}  {XY} • חזור ל-3. • הפרוק שאלגוריתם זה מוצא הוא משמר מידע, אך לא בהכרח משמר תלויות. 236363 - DBMS, צורות נורמליות

  8. פירוק ל-BCNF – דוגמה • דוגמה: נתונה הסכמה R עבור מסד נתונים של בית חולים: R(dname, daddr, id, pname, paddr, pres_no, date, med_name, qnt) dname – שם של רופא (נניח שאין שני שני רופאים עם אותו שם) daddr – כתובת הרופא id – מס' זיהוי של חולה pname – שם החולה paddr – כתובת החולה pres_on – מס' מרשם date – תאריך מתן המרשם med_name – שם של תרופה המופיעה במרשם (באותו מרשם יכולות להופיע כמה תרופות שונות) qnt – כמות התרופה במרשם. • נתונות התלויות הבאות: F= {dnamedaddr, idpname, idpaddr, iddname, pres_no(date,id), (pres_no,med_name)qnt} 236363 - DBMS, צורות נורמליות

  9. דוגמה - המשך • R איננה ב-BCNF, ולכן נפעיל את האלגוריתם: F= {dnamedaddr, idpname, idpaddr, iddname, pres_no(date,id), (pres_no,med_name)qnt} R(dname, daddr, id, pname, paddr, pres_no, date, med_name, qnt) dnamedaddr (dname, id, pname, paddr, pres_no, date, med_name, qnt) (dname, daddr) idpname (dname, id, paddr, pres_no, date, med_name, qnt) (id, pname) idpaddr (dname, id, pres_no, date, med_name, qnt) (id, paddr) 236363 - DBMS, צורות נורמליות

  10. דוגמה - המשך • הפירוק של R (ל-BCNF, משמר מידע) הוא:  = {R1(dname,daddr), R2(id,pname), R3(id,paddr), R4(id,dname), R5(id,date,pres_no), R6(pres_no,med_name,qnt)} (dname, id, pres_no, date, med_name, qnt) iddname (id, pres_no, date, med_name, qnt) (dname, id) pres_nodate, id (pres_no, med_name, qnt) (pres_no, date, id) 236363 - DBMS, צורות נורמליות

More Related