QStammBaum is a software to create/plot/print family trees and ancestor diagrams. It is targeted toward the typical home user (e.g. retired parent) who wants to collect information for the family, include photographs, create diagrams and add interesting stories.
In the first versions of the software an SQL-Database. All data entities where therefore based on relational database tables.
Problem with the SQL database structure was the rather complex code needed to access and filter data, something generally not suitable for user interface development.
In a newer version the database was changed into a plain text file with a database class handling all content. The file structure still resembles relational database.
Most data in the database is best kept in relational database structures, because entities are referenced several times:
Name change events (NameChangeEvent) are unique to individual persons, so they could be owned by the Person data structure.
Diagram cards and connectors are owned by the corresponding diagram.
A hierarchical data structure (i.e. XML format) would make sense, yet require some overhead in rewriting the code.
Currently, the file format is simple enough, has no XML overhead, and is very good for version controlled repositories. Hence, we'll keep it for now.