This is fairly typical and, except for the use of a database, the way most object files are converted to executables: that is they make it easy to access the list of unresolved references and include some (generally minimal) data about the reference they're expecting.