תלות פונקציונלית מלאה היא מצב של נורמליזציה של מסד הנתונים המשווה לנורמליזציה של תקן Normal Form (2NF). בקיצור, זה אומר שהוא עונה על הדרישות של הראשון טופס רגיל (1NF), וכל התכונות שאינם המפתח תלוי לחלוטין תפקודית המפתח הראשי.
זה לא מסובך כמו שזה נשמע. בואו נסתכל על זה בפירוט רב יותר.
סיכום של טופס רגיל הראשון
לפני מסד נתונים יכול להיות תלוי תפקודית לחלוטין, הוא חייב תחילה לציית טופס רגיל הראשון.
כל זה אומר שכל תכונה חייבת להחזיק בערך אטומי יחיד.
לדוגמה, הטבלה הבאה עושה לא לציית ל- 1NF, משום שהעובד טינה קשור לשני מקומות, שניהם בתא אחד:
| עובד | מקום |
|---|---|
| ג'ון | לוס אנג'לס |
| טינה | לוס אנג'לס, שיקגו |
מתן אפשרות לעיצוב זה עלול להשפיע לרעה על עדכוני נתונים או רשומות. כדי להבטיח תאימות של 1NF, סדר מחדש את הטבלה כך שכל התכונות (או תאי עמודה) יחזיקו ערך יחיד:
תאימות רגילה ראשונה
אבל 1NF עדיין לא מספיק כדי למנוע בעיות עם הנתונים.
כיצד עובד 2NF כדי להבטיח תלות מלאה
כדי להיות תלויים לחלוטין, כל תכונות המפתח שאינן מועמדות חייבות להיות תלויות במפתח הראשי. (זכור, מאפיין מפתח מועמד הוא כל מפתח (למשל, מפתח ראשי או זר) המשמש לזהות ייחודי להקליט מסד נתונים.
מעצבי מסד נתונים משתמשים בסימון כדי לתאר את היחסים התלויים בין תכונות:
אם תכונה 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 מתוך עובדים שולחן וליצור טבלה חדשה מחלקות :
| דפטיד | DeptName |
|---|---|
| Dept001 | האוצר |
| Dept002 | משאבי אנוש |
| Dept003 | מכירות |
עכשיו היחסים בין השולחנות תלויים לחלוטין, או ב 2NF.
למה תלות מלאה חשובה
תלות מלאה בין תכונות מסד הנתונים מסייעת להבטיח שלמות הנתונים ולמנוע חריגות בנתונים.
לדוגמה, שקול את הטבלה שבסעיף למעלה שמדבקת רק ל- 1NF. הנה זה, שוב:
| עובד | מקום |
|---|---|
| ג'ון | לוס אנג'לס |
| טינה | לוס אנג'לס |
| טינה | שיקגו |
טינה יש שתי רשומות. אם נעדכן אחד מבלי להבין שיש שניים, התוצאה תהיה נתונים לא עקביים.
או, מה אם אנחנו רוצים להוסיף עובד לשולחן הזה, אבל אנחנו עדיין לא יודעים את המיקום? ייתכן שנפסל אפילו להוסיף עובד חדש אם התכונה מיקום לא תאפשר ערכים NULL.
תלות מלאה היא לא התמונה כולה, אם כי, כאשר מדובר בנורמליזציה. עליך לוודא שמסד הנתונים שלך נמצא בטופס רגיל שלישית (3NF).




