Woozle: Projects: HyperMoney
HyperMoney is my attempt to write a money-management program (as in Quicken or Microsoft Money) that is actually usable and has no Stupid Features. It will be Open Source, as soon as I have source worth publishing (as of 2005-08-06, it's all written in Microsoft Access 97). The next step may be to convert it to web-based application, as HTML could possibly overcome many of the interface design issues I'm encountering.
There are two main areas of concern: Accounts and Transactions. All other tables are supporting either or both of those, sometimes mainly for user-friendliness and not part of the core data design. User-friendliness functions include Grouping and Pre-entry (deferred data massaging).
|Name||text||short name for account|
|Descr||text||description and notes|
Accounts are in a hierarchical tree, but this is mainly user-friendliness (though it can also be used for reports). The tree is in a separate table, Topics (see #Grouping), and the mapping from Accounts to Topics is in [Accounts x Topics].
Every transaction consists of one or more TransParts associated with a master Transaction record. Inforamation about balances will be stored separately.
|Descr||text||description of transaction|
|When||date||date when the transaction occurred, as recorded by user|
|ID||int(4) key autonumber|
|ID_Trx||int(4)||Trxacts.ID of master transaction|
|ID_Mode||int(4)||TrxModes.ID of transaction mode (source, target, equity, topic)|
|ID_Acct||int(4)||Accts.ID of account for this part of the transaction
May be NULL to indicate that this is a "loose" piece of information
|Seq||int(4)||Order in which this transaction part appears, among others of the same mode|
|ID_Type||int(4)||TrxTypes.ID of transaction type for this part|
|When||date||date when the transaction occurred, according to the institution hosting the account|
|Amount||currency||amount of transaction; positive = deposit, negative = withdrawal.
|Name||text||short name for topic, as shown in tree|
|NameFull||text||(optional) longer form of name for display outside of tree context|
|Descr||text||(optional) description of topic|
|ID_Parent||int(4)||Topics.ID of parent topic; NULL = this is a root topic|
- http://braincore.blogspot.com/2005/05/koding-what-am-i-koding-then.html - A Dutch developer discusses accounting software, briefly. Apparently they don't use checkbooks in Holland.