Bruno B B Magalháes <[EMAIL PROTECTED]> wrote on 03/14/2006 12:41:35 PM:
> I am designing a simple accountability system so all the partners can have > direct access to it by intranet. > > I was designing the data model, and came up with this: > > CREATE TABLE `moviments` ( > `moviment_id` int(20) NOT NULL auto_increment, > `moviment_date` date NOT NULL default '0000-00-00', > `moviment_description` char(200) NOT NULL default '', > `moviment_assignor` char(80) NOT NULL default '', > `moviment_drawee` char(80) NOT NULL default '', > `moviment_amount` int(20) NOT NULL default '0', > PRIMARY KEY (`moviment_id`) > ) ENGINE=MyISAM DEFAULT CHARSET=latin1 > > But I am a little bit stuck with this: > > Should I use a column to mark if the moviment has been executed? > About income and outcome, should I use a column called moviment_type or > just put a negative value when is an outcome for exampe? > > Does anyone ever made something like that, any other idea that could > improve my little system? > > Best regards, > Bruno B B Magalhães > It all depends on what accounting style you want to use whether you want single-entry or double-entry bookkeeping. There are pros and cons to both styles. The best answer comes from you: If you were an accountant, how would you write this out on paper? Once you figure out what you paper books should look like you should be able to manage your electronic data almost identically to how you manage your paper data. If you are used to seeing a list of debits and credits where each line represents one account (end) within a single transaction (these lines always appear in pairs) then you want to use one type of table. If you want to see each transaction on a single line that also lists both ends of the transaction, you use a table similar to the one you made. If you have a flag for transaction type (debit,credit, etc) then your amounts should almost always be listed as positive values. It's the position of the account (assignor or drawee) and the transaction type that determines the sign (+/-) to apply to the value as you apply the value to an account. Should you have a flag for the status "movement complete" ? I would say yes but instead of a simple checkbox, you could store a date value. That gives you two pieces of information a) if the date is null then the movement is not complete. b) if the date is NOT null then the movement is complete and you know when it finished. As I said before, how you set up your accounting tables really depends on the style of accounting you want to do. Check with a bookkeeper or an accountant for more details. Shawn Green Database Administrator Unimin Corporation - Spruce Pine