מהי תלות טרנזיטיבית במסד נתונים

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

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

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

בואו נראה איך זה יכול לעבוד.

דוגמת תלות טרנזיטיבית

מחברים

מחבר_ID מְחַבֵּר סֵפֶר מחבר_לאומיות
Auth_001 אורסון סקוט קארד המשחק של אנדר ארצות הברית
Auth_001 אורסון סקוט קארד המשחק של אנדר ארצות הברית
Auth_002 מרגרט אטווד סיפורו של המשרתת / קנדה

בדוגמה AUTHORS שלמעלה:

אבל טבלה זו מציגה תלות טרנזיטיבית:

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

כדי להבטיח צורה שלישית רגילה, הבה נסיר את התלות הטרנזיטיבית.

אנו יכולים להתחיל על ידי הסרת העמודה 'ספר' מתוך הטבלה 'מחברים' ויצירת טבלה נפרדת 'ספרים':

ספרים

Book_ID סֵפֶר מחבר_ID
Book_001 המשחק של אנדר Auth_001
Book_001 ילדי הנפש Auth_001
Book_002 סיפורו של המשרתת / Auth_002

מחברים

מחבר_ID מְחַבֵּר מחבר_לאומיות
Auth_001 אורסון סקוט קארד ארצות הברית
Auth_002 מרגרט אטווד קנדה

האם זה לתקן את זה? כעת נבחן את יחסי התלות שלנו:

BOOKS טבלה :

AUTHORS טבלה :

אנחנו צריכים להוסיף טבלה שלישית כדי לנרמל את הנתונים האלה:

מדינות

מדינה_ID מדינה
Coun_001 ארצות הברית
Coun_002 קנדה

מחברים

מחבר_ID מְחַבֵּר מדינה_ID
Auth_001 אורסון סקוט קארד Coun_001
Auth_002 מרגרט אטווד Coun_002

עכשיו יש לנו שלושה שולחנות, תוך שימוש במפתחות זרים לקשר בין השולחנות:

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

מהו הערך של הימנעות תלות טרנזיטיבית כדי לעזור להבטיח 3NF? הבה נבחן את הטבלה הראשונה שלנו ונראה את הבעיות שהיא יוצרת:

מחברים

מחבר_ID מְחַבֵּר סֵפֶר מחבר_לאומיות
Auth_001 אורסון סקוט קארד המשחק של אנדר ארצות הברית
Auth_001 אורסון סקוט קארד ילדי הנפש ארצות הברית
Auth_002 מרגרט אטווד סיפורו של המשרתת / קנדה

סוג זה של עיצוב יכול לתרום אנומליות נתונים חוסר עקביות, למשל:

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