Skip to main content

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

Suspense: The Dead Sleep Lightly / Fire Burn and Cauldron Bubble / Fear Paints a Picture (יוני 2026)

Suspense: The Dead Sleep Lightly / Fire Burn and Cauldron Bubble / Fear Paints a Picture (יוני 2026)
Anonim

תלות פונקציונלית מלאה היא מצב של נורמליזציה של מסד הנתונים המשווה לנורמליזציה של תקן 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).