ניהול היסטוריית עריכות בטבלה
-
יש טבלאות שאמורים לחזור ולערוך אותם, ורוצים לתעד היסטוריית שינויים (ב- PostgreSql).
האם הנכון לעשות טבלה נפרדת שמחזיקה נתוני שינויים של כל טבלאות הפרוייקט (כשהשדות בטבלה הזו הם: טבלת שינוי, שדה שינוי, ערך ישן, ערך חדש, תאריך, יוזר מבצע השינוי)?
ואם כן, האם כדאי לאחד את הטבלה הזו עם טבלת תיעוד היסטוריית גישה לאתר? (בענין טבלה הזו, היה ע"ז אשכול פעם, לא מצאתי אותו עכשיו)
-
@chagold אמר בניהול היסטוריית עריכות בטבלה:
PostgreSql
אוי לא, בMSSQL יש לי פתרון מובנה וחלק
@chagold אמר בניהול היסטוריית עריכות בטבלה:
האם הנכון לעשות טבלה נפרדת שמחזיקה נתוני שינויים של כל טבלאות הפרוייקט (כשהשדות בטבלה הזו הם: טבלת שינוי, שדה שינוי, ערך ישן, ערך חדש, תאריך, יוזר מבצע השינוי)?
כן, האתגר שלך כאן זה הקוד שינהל את זה בצורה גנרית, וMSSQL יש אפשרות באמצעות טריגר ופרוצדורה, אבל פוסטרגס אני פחות מתמצא ייתכן שגם תמצא פתרון מהסוג הזה.
@chagold אמר בניהול היסטוריית עריכות בטבלה:
ואם כן, האם כדאי לאחד את הטבלה הזו עם טבלת תיעוד היסטוריית גישה לאתר?
לא
-
@ארכיטקט אמר בניהול היסטוריית עריכות בטבלה:
אוי לא, בMSSQL יש לי פתרון מובנה וחלק
-
https://stackoverflow.com/questions/13785855/how-to-log-data-change-in-postgresql
אם כבר אתה מתעד גישה לאתר, הייתי מציע לוותר על תיעוד השינוי בטבלאות, כי אני חושב שתיעוד השינויים בטבלאות הוא בגדר תפסת מרובה.
תוסיף בתיעוד של הגישה לאתר פעולות ותוצאות, למשל פעולת עדכון תוסיף בה את הקלט כJSON למשל).
זה דעתי הלא מקצועית בעניין (כי אין לי נסיון רחב בזה). -
@dovid אמר בניהול היסטוריית עריכות בטבלה:
תוסיף בתיעוד של הגישה לאתר פעולות ותוצאות, למשל פעולת עדכון תוסיף בה את הקלט כJSON למשל).
אם הוא ירצה לבדוק שינוי על שדה מסויים בצורה רוחבית על כלל המערכת לכאורה יהיה לו קשה.
בשיטה של עמודה לשם טבלה, שם שדה, ערך ישן + חדש, תאריך, משתמש וכו', זה הרבה יותר פשוט.
באחד הפרוייקטים שבהם אני נמצא מצאתי את עצמי יותר מפעם אחת נזקק לעשות כזו בדיקה.
(בד"כ בעקבות טעויות של משתמשים שצריך להבין / לשחזר)@ארכיטקט בפיתרון שלך (שזה רץ בעקבות טריגר) לזכרוני אם רוצים לדעת מי המשתמש שביצע ועוד פרטים (סשן וכו) זה ישים רק אם משתמשים בSP. נכון? (ז"א באם משתמשים בEF קלאסי נראה לי שזה קצת יותר מסובך)
-
@clickone אני יכול להשאיר את זה ב2 טבלאות (כדי שיהיה מעקב על שדות מסויימים כמו שאמרת), אבל כדי לקשר בין טבלת הגישה לאתר לטבלת הארוע, אני אולי יכול להוסיף שדה array לטבלת הגישה לאתר שיחזיק את ה-id של כל השינויים שמבוצעים ע"י הגישה, ורישום נתון זה יהיה באמצעות טריגר של כל רקורד חדש בטבלת השינויים שתכניס את ID שלו לטבלת הגישה לאתר.
הבעיה (שלי כעת) בזה כעת (בשלבי התיאוריה) הוא שאני לא יודע איך אני מקבל את המידע על הסשן של הקליינט ל-PHP, כשאירוע בעצם נוצר (בטריגר) ע"י הDB.
אם לא אמצא מידע ע"ז, אולי אפתח ע"ז בהמשך אשכול נפרד. -
@clickone אמר בניהול היסטוריית עריכות בטבלה:
אם משתמשים בEF קלאסי נראה לי שזה קצת יותר מסובך
אכן כמעט בלתי אפשרי, אלא אם כן אתה כותב דוט נט מיוחד ואינני יודע עד כמה זה ישים.
אני אישית נפרדתי מ EF לחלוטין לפני כמה שנים בגלל שיעבוד יתר למיפוי ושטויות שלהם. לטובת עצמאות מוחלטת (כלומר כתבתי כמו משוגע מחלקות משלי בכדי להתנהל מול הדטה בייס ב ORM), אבל אינני מתחרט על כך לרגע, להיפך ככל שהזמן עובר אני מרגיש כמו צלם מקצועי שלא סובל מצלמות אוטומטיות, אלא רוצה לכוון הכל לבד.