• בלוג
  • הבעיה עם בסיסי נתונים שאין להם סכימה

הבעיה עם בסיסי נתונים שאין להם סכימה

27/07/2018

היא שאין להם סכימה.

הקוד הבא למשל יכניס אוביקט משתמש ל MongoDB:

db.products.insert(
   [
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 }
   ]
)

וגם הקוד הבא יכניס אוביקט לאותה טבלא:

db.products.insert(
   [
     { item: "pen", qty: 20, unitPrice: 10 },
   ]
)

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

ואתם מבינים כבר מה שבור פה כן?

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

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