Splitting the slots table
Phil Longstaff
plongstaff at rogers.com
Sun Jan 2 17:34:30 EST 2011
Just thinking ahead to conversion of the sql database to a true
database, not just storage which is what it currently is.
For most tables, we could add FOREIGN KEY constraints so that in the
splits table, for example, the tx_guid which specifies the transaction
to which the split belongs must be a valid guid key in the transactions
table, and the same for the account_guid and the accounts table.
I do happen to know there at one point when a lot is being created, it
can be saved with account=NULL, so that the NOT NULL constraint was
removed from the lots table account_guid at one point. However, we
should be able to modify the code so that a lot is never saved with
account=NULL.
Back to the slots table. The obj_guid field which indicates which
object this slot belongs to can refer to a guid in any other table, so
we can't have a meaningful FOREIGN KEY constraint. Should we split the
table so that we have account_slots, tx_slots, split_slots, etc. tables,
one for each object type? Each xxx_slots table would have an obj_guid
field which would have a FOREIGN KEY constraint referring to the xxx
table.
The slots table can hold slots of type "GUID" which contain a reference
to another object. Unfortunately, there's no FOREIGN key constraint we
could use unless we split that field to have an account_guid, a tx_guid,
a split_guid, etc.
Phil
More information about the gnucash-devel
mailing list