Készítek egy kis programot, amiben a következő feladat van:
Van egy folyószámla, amihez tartoznak tételek.
Azt szeretném, ha a folyószámla tételeinek listázásakor látszana, hogy az adott tétel a számla egyenlegét hogy módosította.
Példa:
kezdő egyenleg 0
1. tétel +500 - egyenleg 500
2. tétel -200 - egyenleg 300
3. tétel +200 - egyenleg 500
4. tétel +200 - egyenleg 700
A kérdés az, hogy hogyan lenne jó ezt kialakítani.Jelenleg egyenleget nem tartok nyilván, és nem is számolok.
A tételeknek van mennyisége és van dátuma (meg leírás), és kész.
A mostani lekérdezésben van egy sum(mennyiseg) a végén, ami a számla jelenlegi egyenlegét megmutatja, de az nem látszik, hogy mondjuk 1 hete mennyi volt az egyenleg.
Nincs nagyon sok tétel, mondjuk napi 10 a nagyságrend. Előfordul időnként, hogy régi tételek kerülnek be a rendszerbe. Viszonylag újak (pár hét) elég sűrűn, és nem is kevés. Régebbiek ritkán: néha soká (hónapokig) semmi, néha meg egyszercsak sok.
Több ötletem is van, de egyikkel sem vagyok teljesen elégedett.
1:
minden számlatétel mellett eltárolom, hogy éppen mennyi az egyenleg, és ha régi tételt rögzítek, akkor az összes későbbi tételnél ezt módosítom. - Kicsit félek a régi tétel beszúrásától - sok módosítás, illetve úgy érzem, hogy az egyenlegnek nem a számlatételnél van a helye logikailag. Viszont könnyű lekérdezésbe tenni, és megjeleníteni.
2:
készítek egy egyenlegek táblát, ahová minden folyószámlához és minden naphoz eltárolom, hogy mennyi volt a napi egyenleg. - Ez logikailag jobban tetszik, persze régi tétel beszúrásakor ugyanúgy át kell számolni és módosítani az egész táblát. Emellett a lekérdezés mem könnyű, tehát ennek inkább csak hátrányai vannak, mint előnye. :-)
2bis: tételenként az egyenleg külön táblában. Ez se tetszik jobban.
3:
valami ügyes lekérdezést kellene készíteni, ami az adott tételben, és az őt megelőző tételekben szereplő mennyiségeket összegzi. - Ez tetszik, mert nem kell beszúráskor, vagy ha pl. egy tétel egyik folyószámláról másikra kerül, végigmódosítani mindent, nincs egyenleg információ eltárolva itt-ott (ami kvázi felesleges, hiszen számolható mennyiség). És Viszont egyfelől még nem izzadtam ki a szükséges lekérdezést, másfelől félek, hogy bonyolult és lassú lesz.
Szóval a kérdések: valaki csinált már hasonló projektet? Mit használt, miért, és hogyan vált be?
A fenti hármon kívül van még ötlet?
Vagy bármi komment?
Ja, mindezt adatbázisban kellene, tehát az nem megy, hogy lekérdezek egy adathalmazt, és majd valami programban kiszámolom. adatmodell, SQL, esetleg tárolt eljárás