Or you want the programmer to write zillions of lines of code to enforce foreign key constraints?
Foreign key constraints can be easily achieved with sqlite using triggers. I have personally implemented 3 desktop projects using sqlite + Qt and in all cases I have used triggers to enforce foreign key constraints. And you won't need zillions of lines of code. Only a few triggers for each constraint. And even that can be automated. In fact, there already is a web script which automatically generates triggers to implement foreign key constraints by parsing the original "CREATE TABLE" statement. Sqlite allows you to mention foreign key constraints in your "create table" statement even though it does not currently implement it.
Using sqlite is actually a boon for creating applications for desktop use. The only shortcoming of sqlite is no support for procedures. But that can be overcome by using relevant functions within the app. In short, I feel that sqlite does a very good job. And it is very fast.
And btw, this is not a desktop application - it is a
server.
Technically, yes. But in usage the aim appears to create a desktop application for accounting purpose. In any case, sqlite supports multiple access to its data, and even has transaction support.
http://www.sqlite.org/faq.html#q5
I am not sure about the recent versions of Tally, but previous versions (I guess upto 5.4 or maybe even 6.3) of Tally used its own internal system to manage data. It did not use third party databases to store data. This, in my view, is the correct approach for desktop applications.
If you talk about scalability and enterprise level things then probably, one would need other dbms, but I personally feel that if we want users attracted to GNU/Linux then one should concentrate on creating desktop applications which simply run as is on single machines. Creating client server applications make sense in very big organisations having large number of concurrent users. Otherwise, for a desktop application, making the user install and configure other applications just to run this one application is a guranteed way of putting off the user.
Rajen.