A NULL value in a field that is a foreign key can be considered a design flaw of the database.

When I started to answer your question, that was my initial position (except I wouldn't say "flaw"). When I have used FKs I was never allowed NULL, and I thought that was actually required. However I Googled and plenty said many databases support it (e.g. MySQL) and it was regarded as "acceptable".

I never did think QSqlRelationalTableModel offered much over QSqlTableModel. It's really just a glorified combobox (model being the FK table) interface in the view. Exactly as 2009 says, a custom delegate could do the job. Just a shame that Qt's doesn't offer NULL handling option for what you want.