One of the easiest to code (though not to setup) is to use an ORM. In that case, you can simply refer to embedded object properties. For example:
Where the Object Model for invoice replaces the explicit foreign key with the object represented by the foreign key. But it does require that you ensure that the header object is loaded in time, since the default on most ORMs is lazy fetching. That's not all that hard to do, though.
Customer surveys are for companies who didn't pay proper attention to begin with.