מנרמל את מסד הנתונים: טופס רגיל ראשון

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

טופס רגיל ראשון (1NF) קובע את הכללים הבסיסיים למסד נתונים מאורגן:

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

1. לחסל שכפול

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

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

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

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

ושדה הכפופים יכיל מספר ערכים בצורת "מרי, ביל, ג'ו".

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

הנה טבלה העונה על הכלל הראשון של 1NF:

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

2. זהה את המפתח הראשי

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

מומלץ להשתמש במזהה ייחודי באמת (כגון מזהה עובד) כמפתח ראשי . השולחן הסופי שלנו ייראה כך:

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