Achtergrond
Ik ben al enige tijd aan het brainstormen over hoe ik het beste een webapplicatie voor onze huisrekening (studentenhuis) kan bouwen. We schrijven gezamelijke kosten op (bijv. eten) en eens in de maand voer ik dat in een mooie Excelsheet in zodat duidelijk wordt wie wat aan wie moet betalen om de boel weer gelijk te trekken. Dat invoeren wil ik automatiseren, iedereen vult meteen digitaal in wat er uitgegeven is aan wie, zodat de totalen continue duidelijk zijn.
Beetje ala www.eetlijst.nl of www.buxfer.com.
Iedereen start met 0 euro, iemand die betaalt stijgt, iemand die gebruikt daalt. Ik hoop dat het een beetje duidelijk is, de meeste (ex-)studenten zullen het wel kennen.
Probleem
De balans bestaat uit transacties van een persoon (de betaler) naar een of meerdere huisgenoten (de gebruikers), waarbij elke gebruiker 1 of meer keer "gebruikt" (bijv. een gast die mee-eet).
Hoe zet ik de database het beste op?
Alle transacties moeten terug te zien zijn en aanpasbaar zijn, en de balans moet ten alle tijden in evenwicht zijn (de som moet 0 zijn).
Mijn eerste idee (had er meer, maar die waren te complex):
3 tabellen (los van user en overige systeemtabellen)
-een transactietabel (datum, omschrijving, huisgenoot_id (koper), bedrag)
-een gebruikerstabel (transactie, huisgenoot_id (gebruiker), aantal)
-een balanstabel (transactie, huisgenoot_id, bedrag)
Voor elke transactie komt er dus 1 entry in de transactietabel, #gebruikers entries in de gebruikerstabel en de balanstabel.
Ik wil eigenlijk zo min mogelijk verantwoordelijkheden in het DBMS kwijt, het kan handig zijn met triggers en constraints, maar ik wil het liefst gebruikmaken van een J2EE framework en geloof dat dit dan in de weg gaat zitten.
Is deze opzet wel handig? Er zijn continu 3 joins nodig voor elk overzicht of wat dan ook, en ik vrees een beetje voor aanpassingen van een transactie, hoe zorg ik dat de transactie in zijn geheel aangepast wordt. Moet ik dat toch afdwingen met de DBMS (stored procedures/triggers) of kan dit beter in de code?
Ik ben al enige tijd aan het brainstormen over hoe ik het beste een webapplicatie voor onze huisrekening (studentenhuis) kan bouwen. We schrijven gezamelijke kosten op (bijv. eten) en eens in de maand voer ik dat in een mooie Excelsheet in zodat duidelijk wordt wie wat aan wie moet betalen om de boel weer gelijk te trekken. Dat invoeren wil ik automatiseren, iedereen vult meteen digitaal in wat er uitgegeven is aan wie, zodat de totalen continue duidelijk zijn.
Beetje ala www.eetlijst.nl of www.buxfer.com.
Iedereen start met 0 euro, iemand die betaalt stijgt, iemand die gebruikt daalt. Ik hoop dat het een beetje duidelijk is, de meeste (ex-)studenten zullen het wel kennen.
Probleem
De balans bestaat uit transacties van een persoon (de betaler) naar een of meerdere huisgenoten (de gebruikers), waarbij elke gebruiker 1 of meer keer "gebruikt" (bijv. een gast die mee-eet).
Hoe zet ik de database het beste op?
Alle transacties moeten terug te zien zijn en aanpasbaar zijn, en de balans moet ten alle tijden in evenwicht zijn (de som moet 0 zijn).
Mijn eerste idee (had er meer, maar die waren te complex):
3 tabellen (los van user en overige systeemtabellen)
-een transactietabel (datum, omschrijving, huisgenoot_id (koper), bedrag)
-een gebruikerstabel (transactie, huisgenoot_id (gebruiker), aantal)
-een balanstabel (transactie, huisgenoot_id, bedrag)
Voor elke transactie komt er dus 1 entry in de transactietabel, #gebruikers entries in de gebruikerstabel en de balanstabel.
Ik wil eigenlijk zo min mogelijk verantwoordelijkheden in het DBMS kwijt, het kan handig zijn met triggers en constraints, maar ik wil het liefst gebruikmaken van een J2EE framework en geloof dat dit dan in de weg gaat zitten.
Is deze opzet wel handig? Er zijn continu 3 joins nodig voor elk overzicht of wat dan ook, en ik vrees een beetje voor aanpassingen van een transactie, hoe zorg ik dat de transactie in zijn geheel aangepast wordt. Moet ik dat toch afdwingen met de DBMS (stored procedures/triggers) of kan dit beter in de code?