The first thing that you need to do is to start by only bringing in the tables and fields that you actually require in your document. This will clear things up a lot. If you have Data Islands (eg. Employees) that are not connected to the rest of the data model that is almost always a problem that needs looking at. As are Synthetic Keys - which is where you see extra tables in the model with $ signs in the names.
QlikView will join on any fields which have the same name and will never join on fields with different names. Rename fields with the 'as' statement to force or break joins.
If you have a join that requires a composite key (eg. two or more fields) you will need to create the join key yourself. In the parent table you then have the join key and all the fields in it, in any table that joins you can have just the key - as any joined fields will be available in the parent. The code to build the key will be like:
Title_Id & ':' & Royalty as RoyaltyKey,
I have posted a blog article on getting your data model right which can be read here:
It focuses on bigger data models than the Pubs demo, but the techniques are the same. There is also a link in that post to my previous post on ApplyMap - which to my mind is the single most useful technique to sorting out any data source.
The comments on QVD's can be disregarded for a small demo - but when you step up to production documents will become very important.
There are other posts on my site, plus links to a large number of other people posting QlikTips and helpful articles. If you get stuck you can always post back to the community.
Hope that helps,