ישות או סוג מידע

מתי נכון/יעיל יותר להגדיר נתון כישות ומתי כסוג מידע?

מצד אחד יש לנו את datatype - ENUM, שמאפשר לנו להכניס סט ערכים,
ומצד שני נתת את השפות כדוגמה לישות בפני עצמה.

לייק 1

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

לדעתי השאלה המרכזית פה היא כמה את חושבת שהערכים הולכים להשתנות.
אם הם לא – enum טוב במובן ש:

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

אם נרצה לשנות enum (נניח, החלטנו להוסיף ערך), זה יגרור ממש שינוי של מבנה הטבלה.
זה עשוי להצריך ירידה של השירות לצורך תחזוקה, נניח.


עוד מקרים שאני יכול לדמיין שטוב להגדיר משהו כטבלה:

  1. אם זה מידע שהוא לא רק key-value, כמובן, או שיש לי חשד שהוא יהפוך להיות לא key-value.
  2. אם זה יתכן שארצה לתשאל על המידע עצמו (נניח: הצג לי את כל המדינות שקיימות ב־DB).

אחרי כל החפירה הזו – יש לציין שרוב האנשים מאוד לא מרוצים מ־enum־ים במסדי נתונים, וייתכן שיש להם סיבה טובה.

5 לייקים

מזכיר לי ימים רעים… :sweat_smile:
אכן לא כיף לבצע שינוי כזה כשצריך.

תודה על התשובה המפורטת!