From: | "Karl Nack" <karlnack(at)futurityinc(dot)com> |
---|---|
To: | "Darren Duncan" <darren(at)darrenduncan(dot)net> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Implementing "thick"/"fat" databases |
Date: | 2011-07-23 22:27:33 |
Message-ID: | 1311460053.2738.2155131297@webmail.messagingengine.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
> > SELECT create_transaction(1, current_date, 'Transaction 1', ((1,
> > 50), (2, -50)));
>
> Well, not quite, because specifying the number "50" twice would be
> ridiculous for such a non-generic function; you can calculate the "-
> 50" from it in the function.
Not if there were more than two line-items per transaction. A paycheck
is a good example, where generally one or more income accounts are
credited and multiple tax accounts as well as one or more asset accounts
are debited. Ensuring that all the line-items add up to 0 would be one
of the data integrity rules implemented in the database (though most
likely checked in the application layer as well).
> A general rule of thumb, however you would design a routine in a
> normal programming language, try to do it that way in PL/PgSQL,
> assuming that PL/PgSQL is a competent language, and then tweak to
> match what you actually can do.
In the language I'm most familiar with, PHP, I could do this with an
associative array:
$transaction = array(
'id' => 1,
'date' => date('Y-m-d'),
'description' => 'Transaction 1',
'line_items' => array(
array('account_id' => 1, 'amount' => 50),
array('account_id' => 2, 'amount' => -50),
),
);
From which I can easily build the appropriate SQL statements. This would
be very similar in Python. I wonder if this would be achievable in
PL/PGSQL, maybe through the use of composite types and/or domains?
Karl Nack
Futurity, Inc
5121 N Ravenswood Ave
Chicago, IL 60640
773-506-2007
From | Date | Subject | |
---|---|---|---|
Next Message | MirrorX | 2011-07-23 22:34:07 | Re: weird table sizes |
Previous Message | Chris Travers | 2011-07-23 21:29:15 | Re: Implementing "thick"/"fat" databases |