logo

תלות טרנזיטיבית ב-DBMS

הבה נבחן קשר R(A B C). כאן A, B ו-C ידועים בתור התכונה של היחס R. כאשר נוצר התנאי הבא; אז התלות הטרנזיטיבית מתרחשת ב-DBMS. התנאים הם A → B, B → C. לכן, התנאי הופך ל- A → C. במילים אחרות, אנו יכולים לומר שכאשר תלות נעשית על ידי שתי תלות פונקציונלית, אז התלות הפונקציונלית הופכת לתלות טרנזיטיבית.

מהי תלות טרנזיטיבית?

שקול יחס R(A B C). כאן A, B ו-C ידועים בתור התכונה של היחס R. כאשר נוצר התנאי הבא; אז התלות הטרנזיטיבית מתרחשת ב-DBMS. התנאים הם A → B, B → C. לכן, התנאי הופך ל- A → C. בתלות פונקציונלית טרנזיטיבית, תלוי תלוי ישירות בדטרמיננט.

בואו נבין את התלות הטרנזיטיבית בעזרת הדוגמה הבאה.

Author_ID מְחַבֵּר סֵפֶר מחבר_לאום
A1 ארונדהטי רוי אלוהי הדברים הקטנים הוֹדוּ
A1 קירן דסאי הירושה של אובדן הוֹדוּ
A2 ר.ק. נאראיאן אוכל האדם של מלגודי הוֹדוּ

בטבלת המחבר לעיל, אנו מקבלים את זה.

    ספר → מחבר:כאן, תכונת המחבר נקבעת על פי תכונת הספר. אם מישהו יודע את שם הספר, הוא יכול גם ללמוד את שם המחבר.מחבר → מחבר_לאום:אם מישהו יודע את שם המחבר, הוא יכול גם ללמוד את הלאום של המחבר.ספר → מחבר_לאום: אם מישהו יודע את שם הספר, הוא יכול גם ללמוד את הלאום של המחבר.

אם נסתכל מקרוב על התלות הפונקציונלית שנדונו לעיל, נמצא את הדפוס הבא.

  • A → B ו-B → C B→C; לכן, A → CA → C.
  • א ← ספר, ב ← מחבר ב ← מחבר ו-ג ← מחבר_לאום C → מחבר_לאום

נניח שאנו מיישמים את הצורה הרגילה השלישית (3NF) בטבלת המחבר לעיל. במקרה זה, יש להסיר את התלות הטרנזיטיבית של טבלת המחבר, ותהליך הסרת התלות הטרנזיטיבית של מסד הנתונים ידוע כתהליך הנורמליזציה.

כיצד להימנע מתלות טרנזיטיבית?

הבה נשקול שוב את טבלת המחבר לעיל ונראה איזה סוג של בעיה מתעוררת במהלך יצירת הטבלה.

טבלת המחברים:

Author_ID מְחַבֵּר סֵפֶר מחבר_לאום
A1 ארונדהטי רוי אלוהי הדברים הקטנים הוֹדוּ
A1 קיראן דסאי הירושה של אובדן הוֹדוּ
A2 ר.ק. נאראיאן אוכל האדם של מלגודי הוֹדוּ

ניתן לתרום את חריגות הנתונים (כמו חריגות עדכון, הכנסה ומחיקה) ואי העקביות על ידי טבלת המחבר. כאשר יש יותר מדי יתירות במסד הנתונים, אזי נגרמות חריגות נתונים בנתונים. חריגות נתונים נגרמות גם כאשר יש בעיה בעדכון, מחיקה והכנסת נתונים חדשים. לדוגמה, בטבלת המחבר-

  • לא נוכל להוסיף מחבר חדש עד שלא נוכל להוסיף ספר לטבלה.
  • לא נוכל למחוק את המחבר עד שנמחק לחלוטין את הספר ממסד הנתונים.
  • אם נרצה למחוק את הספר 'אלוהי הדברים הקטנים', גם תעודת הזהות, המחבר והלאום של המחבר נמחקו.

הבעיות שלעיל מתרחשות בכל מערכת יחסים המכילה תלות טרנזיטיבית.

צורה נורמלית שלישית על ידי הסרת תלות טרנזיטיבית

בואו נשקול את טבלת מחברים עם שלוש תכונות (Author_ID, Author, Author_Nationality) ולנסות למצוא ולבטל את התלות הטרנזיטיבית מטבלה זו,

טבלת המחברים:

Author_ID מְחַבֵּר סֵפֶר מחבר_לאום
A1 ארונדהטי רוי אלוהי הדברים הקטנים הוֹדוּ
A1 קיראן דסאי הירושה של אובדן הוֹדוּ
A2 ר.ק. נאראין אוכל האדם של מלגודי הוֹדוּ

הטבלה של המחבר לעיל אינה ב-3NF כי יש לה תלות טרנזיטיבית. בוא נראה איך

char + int ב-java
  • מחבר → Author_Nationality Author → Author_Nationality
  • Author_ID → מחבר

לכן קיימת גם התלות התפקודית הבאה,

  • Authir_ID → Author_Nationality יוצרת דפוס דומה למה שדנו למעלה.

כעת כדי לבטל את התלות הטרנזיטיבית, כל שעלינו לעשות הוא לפצל את הטבלה של המחבר באופן ש- Author_ID לא יהיה תלוי יותר מבחינה פונקציונלית ב- Author_Nationality.

בואו ניצור שתי טבלאות, אחת מכילה רק { Author_ID, Author} ואחרת מכילה את {Author_Nationality}. השולחנות החדשים ייראו כך,

טבלת מחברים

Author_ID מְחַבֵּר
A1 אלוהי הדברים הקטנים
A2 הירושה של אובדן
A3 אוכל האדם של מלגודי

טבלת לאום מחבר

מְחַבֵּר מחבר_לאום
ארונדהטי רוי הוֹדוּ
קיראן דסאי הוֹדוּ
ר.ק. נאראין הוֹדוּ

כעת טבלת המחבר וטבלת הלאומיות של המחבר אינם מכילים תלות טרנזיטיבית והקשר נמצא כעת ב-3NF.