מבנה מסד נתונים - מוצרים ומבצעים
-
שלום וברכה
אני בונה בימים אלו מסד נתונים עבור מכירה של מכשירי כתיבה, ורציתי להתייעץ עם המומחים איך נכון וכדאי לבנות את המסד. ההתחבטות שלי היא בנושא המבצעים, כאשר יש הנחה על כמות של מוצרים מקטגוריה מסוימת, כאשר זה כולל סוגים ומקטים שונים. לדוגמא - לורדים של חברה מסוימת, אחד עולה 4 ו3 בעשר. ישנם סוגים רבים של לורדים וברקוד שונה לכל אחד. ולכן אני שואל:
א. איך לשמור את המידע הזה? הדרך שחשבתי עליה היא טבלת מבצעים עם קוד מבצע, כמות, ומחיר לכמות הזו. ובטבלת המוצרים לשייך כל מוצר לקוד מבצע. זה נשמע לי קצת מסורבל, יש למישהו הצעה טובה יותר?
ב. מהי דרך המימוש בפועל המומלצת? באיזה שלב לממש את המבצע? יש לי טבלה של "פרטי המכירה" עם רשימת המוצרים - האם להוסיף בה [על ידי קוד תוך כדי קניה] שורה של הנחה עם סכום מינוס? אולי כדאי בטבלה נפרדת?
אשמח לקבל סיוע בנושא, ואם יש למישהו היכרות עם מערכת כזו או מסד נתונים לדוגמא זה יעזור לי מאוד. ייש"כ מראש למסייעים. -
לדעתי זו שאלה גדולה, למרות שבעולם האמיתי מסתדרים עם זה מצויין.
אני לא יודע איך עושים, אבל אם הייתי צריך אני חושב שהייתי קודם חושב איזה כללי הנחות תיאורטיית יכולים להיות (כל סוגי המבצעים האפשריים), וחושב איך הכי נכון לשמור אותם - לא בהכרח בטבלה אחת אבל חייב להיות טבלה אחת שמרכזת אותם.
אח"כ הייתי בונה מנגנון בקוד, לוגי, שמוסיף שורות זיכוי לשורות הקניה לפי הכללים הללו, באופן חי תוך כדי הוספת השורות למערכת.
לכאורה בגלל אופי המבצעים בלתי אפשרי לשמור ממש את שורות הזיכוי עד לסגירת הקניה.
חוץ מזה יש חור בראש לכאורה על מקרה ביטול עסקה של מוצר מהקניה הזו.אצרף לינקים שבאינטרנט שעוסקים בנושא:
https://www.vertabelo.com/blog/technical-articles/offers-deals-and-discounts-a-product-pricing-data-model
https://softwareengineering.stackexchange.com/q/130686/112215 -
@חבלזון
אין לי ניסיון במערכת כזו
אבל במחשבה ראשונה
הייתי עושה טבלה של כל המוצרים "ברקוד,שם המוצר,מחיר"
טבלת מבצעים "ברקוד,כמות המוצרים,סכום ההנחה,שם המבצע"
ואז לעשות בדיקה על כל מוצר שנמצא בסל האם הוא נמצא בטבלת מבצעים
אם כן לחלק את הכמות שבסל בכמות של המבצע ולעגל כלפי מטה ולהכפיל בסכום ההנחה
ולהחסיר את הסכום הזה מהסך הכולל
אתה יכול לכתוב גם פירוט של ההנחה בסיגנון "לורד 3 ב-10 * 2 מימושים = -4 ש"ח" -
@dovid תודה, במיוחד על הקישורים אני אנסה ללמוד את זה. נכון שבעולם מסתדרים עם זה, השאלה אם מצאו דרך פשוטה ואמתית או שכתבו קודים של בדיקה ועדכון מכל מיני כיוונים. (יצא לי כבר לקנות משהו בחנות שהיה מבצע שלוש בעשר, והורידו את המחיר ליחידה ל 3.20, כך יצא שכאשר קניתי שלוש המחשב הוסיף לי 40 אגורות "מבצע שלש בעשר")
@nigun תודה
רק שתי נקודות חשובות,- המבצע כולל ברקודים שונים
- אין כאן "הנחה" קבועה כיון שיכולים להיות מחירים שונים (למשל לורד בארבע ובארבע וחצי), ולמרות זאת מחיר של 3 בעשר, כך שלעיתים ההנחה גדולה יותר
-
@חבלזון אמר במבנה מסד נתונים - מוצרים ומבצעים:
- אין כאן "הנחה" קבועה כיון שיכולים להיות מחירים שונים (למשל לורד בארבע ובארבע וחצי), ולמרות זאת מחיר של 3 בעשר, כך שלעיתים ההנחה גדולה יותר
לגבי הקטלוג אפשר לעשות מק"ט לקבוצות של ברקודים ולעשות בדיקה האם יש הנחה למק"ט הזה
אבל כאן העניינים מתחילים כאן להסתבך במקרה שיש הנחה גם על המוצר וגם על המק"ט
ואתה רוצה לפעמים שיהיה רק מבצע על המק"ט או רק על הברקוד או כפל מבצעים
לגבי ההבדלי מחירים
זה קצת יותר מסובך כי אם יש ללקוח 3 לורדים של 4 ולורד אחד של 4.5
האם ישלם 14 או 14.5
אפשר לקבוע שהמבצע הוא על הזול מביניהם
ואז לקחת את כמות המוצרים במק"ט הזה לחלק את הכמות המוצרים בסל בכמות המוצרים שזכאים להנחה לעגל כלפי מטה וזה כמות המימושים
ואז למיין מהנמוך לגבוה ולבחור כמות מוצרים (כמות המימושים*כמות המבצע) לחשב את המחיר שלהם ולחשב את המחיר וההנחה זה ההבדל ביניהם
בקיצור כמו ש@dovid אמר צריך לחשוב על כל כללי המבצע מראש
ואז להתחיל לחשב
נ.ב. לרוב צריך להסתובב כמה ימים ולחשוב על המבנה נתונים עד שזה מסתדר בראש
אא"כ אתה מוצא ספריה מוכנה לזה עם כל האופציות -
@חבלזון לא התעמקתי מספיק בשאלה.
אך אני חושב שהבעיות הללו הן הבעיות האמיתיות בפיתוח אפליקציות פיננסיות.
רק אני ממליץ לך לבדוק האם אתה בעצמך בטוח מה לעשות בכל מקרה.
לפעמים המפתח לא יודע די הצורך מה אמור לקרות באמת, ואז קשה לתכנן את המסד נתונים.תחשוב מהי דרך החשיבה של אדם שעושה כזה חשבון עם דף ועט.
בהצלחה.