How do I define this simple views relationship?
The very first point is that, the table itself should be defined in order for Views to access it. It's not necessary to define all the fields in the table; just define what you want to access. 

You can however, define additional fields that are not in the table. The default convention in the $data array is the table name =&gt; column_name but you still can add non-existing keys to the array without Views looking for that field in the query.

Try this:

&lt;?php 

$data['person']['addresses'] = array(
  'title' =&gt; 'Addresses',
  'help' =&gt; 'Load persons address information',
  'relationship' =&gt; array(
     'title' =&gt; t('Person\'s address'),
     'base' =&gt; 'address', // base table
     'base field' =&gt; 'person_id',
     'relationship field' =&gt; 'id',
     'handler' =&gt; 'views_handler_relationship',
     'label' =&gt; t('Address information'),
     'help' =&gt; t('Address information'),
  ),
);


You will now see a new relationship, Address, to join the table, along with a checkbox to make it an INNER instead of a default LEFT join. 

Similarly, you can add additional fields, arguments and filters without having a real field with the array's key in the table.