תלות רב-תכליתית בעיצוב מסד נתונים

תלות רב-תכליתית שוברת את הצורה הנורמלית הרביעית

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

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

תלות פונקציונלית מול תלות רב-תכליתית

כדי להבין תלות רב-תכליתית, כדאי לבחון מחדש את התלות התפקודית.

אם תכונה X קובעת באופן ייחודי את התכונה Y, אזי Y תלויה בתפקוד ב- X. זה נכתב כ- X -> Y. לדוגמה, בטבלה 'תלמידים' שלהלן, הסטודנט קובע את המייג'ור:

סטודנטים
שם תלמיד גדול
ראבי היסטוריה של האמנות
בֵּית כִּימִיָה


ניתן לכתוב תלות פונקציונלית זו: Student_Name -> Major . כל Student_Name קובע בדיוק אחת הגדולות, ולא יותר.

אם אתה רוצה את מסד הנתונים גם לעקוב אחר הספורט התלמידים האלה לקחת, אתה עשוי לחשוב הדרך הקלה ביותר לעשות זאת היא רק להוסיף עוד טור בשם ספורט:

סטודנטים
שם תלמיד גדול ספּוֹרט
ראבי היסטוריה של האמנות כדורגל
ראבי היסטוריה של האמנות כַּדוּר עָף
ראבי היסטוריה של האמנות טֶנִיס
בֵּית כִּימִיָה טֶנִיס
בֵּית כִּימִיָה כדורגל


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

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

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

תלות רב-תכליתית נכתבה X -> -> Y. במקרה זה:

סטודנט -
-> ספורט

זה נקרא "Student_Name multidetermines הגדולות" ו "Student_Name multidetermines ספורט".

תלות רב-תכליתית דורשת תמיד לפחות שלוש תכונות משום שהיא מורכבת משני מאפיינים לפחות התלויים בשליש.

תלות ונורמליזציה רב - תחומיים

טבלה עם תלות רב-תכליתית מפרה את הנורמליזציה של תקן Normal Form (4NK) משום שהיא יוצרת יתירות מיותרות ותורמת לנתונים לא עקביים. כדי להביא את זה עד 4NF, יש צורך לשבור את המידע הזה לשני שולחנות.

בטבלה הבאה יש תלות תפקודית של Student_Name -> Major, ולא תלות רב-תכליתית:

סטודנטים ומגיעים
שם תלמיד גדול
ראבי היסטוריה של האמנות
ראבי היסטוריה של האמנות
ראבי היסטוריה של האמנות
בֵּית כִּימִיָה
בֵּית כִּימִיָה

בעוד טבלה זו יש גם תלות תפקודית אחת של Student_Name -> ספורט:

סטודנטים וספורט
שם תלמיד ספּוֹרט
ראבי כדורגל
ראבי כַּדוּר עָף
ראבי טֶנִיס
בֵּית טֶנִיס
בֵּית כדורגל

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