I am writing a standard database-backed business application. Assume that I work with bank accounts as well as "Decisions". A decision is a choice the user takes of moving money from one account to another. Each decision is taken at a particular date. A decision can have one or more "source accounts", and each "source account" will have one or more "destination accounts". We call them source accounts because money will leave the account... Also each decision and account have related information such as names, balance, etc.
The user would like to view his past decisions, and has an unusual business requirement. By default, when decision time comes (for example the first of each month), he would like all previous decisions to be copied over to the new month. This is because he's very likely to take the same decision over and over,but he would like the flexibility of changing any parameter of a decision for a new month, without impacting his previous months.
As a programmer, when the user starts a new month, I simply insert new rows in my Decision table, but I update Decision.Date. That way, the user can change the list of source accounts for each decision, each month. Is there a more elegant way of achieving the same thing, without copying over all decisions?