Just wanted to say welcome to Drupal! :)
The Entity Reference module is what could help you. I think you're on the right track already.
The setup would be:
Content type: Book
- Author field (references the Author content type)
Since you're talking about foreign keys, the Entity Reference module does exactly that. In Drupal, it refers to the content using the foreign key(Node ID/Entity ID).
does entity ID mean the field reference in that node??
Yes, it does mean that.
For doing deeper on the field level problem. I haven't seen any module for that so far but my solution would be for somewhat for aesthetics only. Use the Book Author's name as the content type's title(You can change this label to like "Author Name"). So when you search authors in the entity reference field, you would be searching for the author's name.
Second option, if you don't want to use the title field of the Book Author content type but with this path I don't know what value you'll place there if you have a field called name would be to alter the autocomplete path of your Book content type's node reference field to use the field_name or any other deeper fields of the Book Author content type using form api's
'#autocomplete_path'. So that when you search for an author, it won't match with the node title.
These solutions basically let's the user perceive that your doing a direct foreign key but it's, it still references the node id.
Hope I've helped with my explanation. :)