נרמול מסד נתונים – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
ElphiBot (שיחה | תרומות)
שורה 81:
טבלה נמצאת ב'''צורה נורמלית שלישית''' אם היא בצורה נורמלית שנייה ולא קיימת תלות פונקציונלית בין שני מרכיבים שאינם חלק מהמפתח הראשי. ובלשון אחרת, כל שדה שאיננו שדה מפתח, אסור שיהיה תלוי בשדה שאיננו שדה מפתח.
 
למשל בסכמה (תעודת זהות, שם, מס' אותיות בשם) תעודת הזהות לבדה היא המפתח, שהרי היא מבטיחה מילוי חד ערכי של יתר השדות. מצד שני, מס' האותיות בשם זהו שדה שתלוי ישירות בשם, ותלותו בתעודת זהות היא עקיפה - [[טרנזיטיביות|טרנזטיבית]] בלבד. דוגמה אחרת הוא שדה מיקוד בטבלה (אדם, כתובת, מיקוד). לשדה המיקוד יש תלות עקיפה במפתח - השדה אדם. הפתרון הוא , ליצור טבלת מיקוד נפרדת לפי עיר, רחוב ומספר בית.
 
'''אלגוריתם הנרמול''':</br>יש להפריד את הטבלה לשתי טבלאות נפרדות. אם הסכמה היא (X,Y,Z,A) ואם X הוא מפתח ו-Y גורר את Z, נפריד לטבלאות עם הסכמות: (X,Y,A) ו-(Y,Z).