תלות פונקציונלית מלאה בנורמליזציה של מסד נתונים

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

זה לא מסובך כמו שזה נשמע. בואו נסתכל על זה בפירוט רב יותר.

סיכום של טופס רגיל הראשון

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

כל זה אומר שכל תכונה חייבת להחזיק בערך אטומי יחיד.

לדוגמה, הטבלה הבאה אינה עומדת ב- 1NF, משום שהעובד טינה קשור לשני מקומות, שניהם בתא אחד:

אי-ציות הראשון של טופס רגיל
עוֹבֵד מקום
ג'ון לוס אנג'לס
טינה לוס אנג'לס, שיקגו

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

תאימות רגילה ראשונה
עוֹבֵד מקום
ג'ון לוס אנג'לס
טינה לוס אנג'לס
טינה שיקגו

אבל 1NF עדיין לא מספיק כדי למנוע בעיות עם הנתונים.

כיצד עובד 2NF כדי להבטיח תלות מלאה

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

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

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

לדוגמה, בטבלה הבאה מחלקות עובדים , EmployeeID ו- DeptID הם שני מקשי מועמדים: EmployeeID הוא המפתח הראשי בטבלה ואילו DeptID הוא מפתח זר.

כל תכונה אחרת - במקרה זה, EmployeeName ו- DeptName - חייבת להיות תלויה במפתח הראשי כדי לקבל את ערכה.

מחלקות עובדים
כרטיס עובד שם העובד דפטיד DeptName
Emp1 ג'ון Dept001 לְמַמֵן
Emp2 טינה Dept003 מכירות
Emp3 קרלוס Dept001 לְמַמֵן

במקרה זה, הטבלה אינה תלויה לחלוטין, שכן, בעוד EmployeeName תלוי ב- EmployeeID הראשי של המפתח, ה- DeptName תלוי ב- DeptID. זה נקרא תלות חלקית .

כדי להפוך את הטבלה הזו ל 2NF, אנחנו צריכים להפריד את הנתונים לשני שולחנות:

עובדים
כרטיס עובד שם העובד דפטיד
Emp1 ג'ון Dept001
Emp2 טינה Dept003
Emp3 קרלוס Dept001

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

מחלקות
דפטיד DeptName
Dept001 לְמַמֵן
Dept002 משאבי אנוש
Dept003 מכירות

עכשיו היחסים בין השולחנות תלויים לחלוטין, או ב 2NF.

למה תלות מלאה חשובה

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

לדוגמה, שקול את הטבלה שבסעיף למעלה שמדבקת רק ל- 1NF. הנה זה, שוב:

תאימות רגילה ראשונה
עוֹבֵד מקום
ג'ון לוס אנג'לס
טינה לוס אנג'לס
טינה שיקגו

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

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

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