SQL backend for GnuCash 2
Ivars Grinbergs
mestule at inbox.lv
Thu Oct 26 10:49:36 EDT 2006
Derek Atkins wrote:
> "Daniel Espinosa" <esodan at gmail.com> writes:
>
>
>>> 1) We don't need an AccountType table. AccountTypes are not data,
>>> they are encoded in the application. There's no reason to add
>>> them to the database because they are constants.
>>>
>>>
>> If usefull if you want a strong data integrity done by the Database
>> server, and if you want to share with others programs (I plan to
>> develop some one for the desktop)
>>
>
> You can't get enough data integrity from the database. For example,
> you cannot define the database in a way to enforce balanced transactions.
>
>
Theoretically, it is possible by means of triggers and stored
procedures. But I'm not sure that many DB engines support them and if
support, then in different ways and at different degree. Therefore I
don't think it is worth to bring existing logic (that checks and
enforces certain integrity) from application tier (single point) to DB
backend tier (potentially many different implementations for different
backends).
> If you prefer, feel free to make the "account type" an "enum". But I
> still think an 'integer' is sufficient; gnucash already knows what the
> account types are. Keep in mind that there are LOTS of these "enum"
> types all throughout the code.
>
>
For "enum" enforcement at DB level there are CHECK CONSTRAINTs in
standard SQL. Of course, those will not give meanings of "integer"
values, but to solve this, there is option to define VIEWs in SQL.
Ivars
More information about the gnucash-devel
mailing list