[ peromalosutra @ 24.01.2013. 21:08 ] @
Pitanje nije usko vezano za MySQL, vec za relacione baze generalno, ali mislim da cu ovdje rasprava biti zanimljivija. :) Radi se o odnosu izmedju predstavljanja stanja na racunu, transakcija sredstava izmedju racuna i stepena normalizovanosti baze. Recimo da treba da imam bazu korisnika, gdje svaki korisnik ima svoj racun. Korisnik moze da uplacuje sredstva na racun, kao i da placa odredjene usluge uplacenim sredstvima. Transakcije izmedju racuna nisu moguce (mada mozemo razgovarati i o tome). Koji je najbolji nacin predstavljanja ovoga u relacionoj bazi? Teoretski, dovoljno je da za svakog korisnika pratimo transakcije koje pravi. Uplatu na racun predstavimo pozitivnim iznosom, a isplatu negativnim, konacna suma predstavlja trenutno stanje na racunu. Medjutim, buduci da je trenutno stanje nesto sto se cesto koristi, onda je korisno cuvati i ovu vrijednost, pa ju nakon svake transakcije preracunavati. Jedan od pristupa bi mogao biti: 1. tabela account_states (account_id, user_id, state) 2. tabela account_transactions (transaction_id, user_id, service_id amount, timestamp) 3. tabela services(service_id, name, description) Da li update stanja raditi na aplikativnom nivou, ili na nivou baze (triggeri)? Znam da konkretna implementacija zavisi od konkretnih zahtjeva, ali me zanimaju neki druge ideje i iskustva. |