שלח תשובה

זירת השאלות

496
צפיות
3
תשובות

תכנון נכון של בסיס נתונים

,‏ 30 בינואר, 2009

שלום.

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

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

טבלה שלישית, שצריכה להיות בקשר עם 2 טבלאות מתעדת את כל השינויים שנעשו בהזמנה [לפני המועד של ביצוע ההזמנה]. ויש לה  מפתח זר שהוא הID  של ההזמנה.
הבעייה נוצרת בעת העברת טבלת ההזמנות לטבלת ה"מחסן", משום שגם לטבלת המחסן יש ID של הזמנה וכאשר ההזמנה מועברת למחסן, גם לטבלה השלישית[שמתעדת את השינויים בהזמנות] צריך להיות נגישות לטבלת המחסן.

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

מצטער על השאלה הארוכה,פשוט המקרה די מורכב

תגיות:

3 תשובות

  1. itn הגיב:

    לא הבנתי לעומק אבל …
    במקום לבצע העתקות של טבלאות שהם זהות האם לא ניתן להוסיף שדה שמתאר את הSTATUS

  2. omerd הגיב:

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

    אם צריך לפרט את המקרה יותר,אפרט.

  3. עדיין
    פשוט יותר למחוק את אותן השדות שאתה כבר לא צריך מאשר לבצע העברות ולשחק עם קשרים בין הרשומות.

    אלא אם כן מדובר בעשרות או מאות אלפי רשומות ואתה עושה את זה מטעמי יעילות וחיסכון…

    אבל אם אתה בכל זאת מעדיף את העברה, אז יש לך 2 אפשרויות:

    1.  בטבלה השלישית תצטרך לעשות בעצם 2 עמודות של ID – אחת של "מספר ההזמנה לפני שבוצעה" ו-"מספר ההזמנה שעברה לארכיון", ולשלוף לפי זה.

    2. תוכל להשאיר במצב הקיים ולשכלל את שאילתת השליפה שלך כך שבטבלה הראשונה ישמר ה-ID של עצמה וה-ID של הארכיון, ובטבלה השלישית ישמר רק ה-ID של הטבלה הראשונה, ובשאילתא דרך הטבלה הראשונה תוכל לדעת מה ה-ID של הארכיון.

    אתה גם יכול לעשות טבלת קשר במידה ויש פה קשרים של רבים לרבים, הכל תלוי במבנה האפליקציה…


    אלי ענתבי

שלח תשובה

חדש! אחסון אתרים של וובמאסטר

שירות אחסון אתרים
המקצועי של וובמאסטר!

מומחים באירוח אתרי
WordPress, Joomla, Drupal

  • שרתי לינוקס עם CloudLinux, LiteSpeed
  • 1GB דיסק SSD, 10GB תעבורה חודשית
  • ממשק ניהול cPanel, תעודת SSL חינם

עכשיו במחיר היכרות:
רק 420 ש"ח לשנה!