Everything here is open to discussion, given enough motivation.
The most popular type of database today, is relational databases. Most relational databases today support the ODBC interface, which means that it is easy to write programs and modules that work on several different databases. In Windows most databases support ODBC by default, and thanks to the unixODBC project there are now drivers for most Unix databases as well. The database Daniel is using is MySQL for Linux. Just as Qt, it is free for Unix and costs money for Windows.
To be as dynamic as possible, most data will be stored in dictionaries. This way it is easy to add attributes to an item, corresponding to adding a column to a database table, without even recompiling.
The disadvantage with dictionaries is that they are much slower than real attributes, and that type checking can't be done at compile time. Daniel has worked with two dictionary based systems during 1999, both with installations world wide, and none of them has any performance problems. Certain things are of course somewhat slower than they would be otherwise, but it's not a particularly great problem.
The signal/slot mechanism in Qt is used a lot, as it is so flexible. Primarily it is used by the items to tell the entity they belong to that their value has changed. It will also be used by the widgets to update the values of the items.