Create content type with fields that are content types I am trying to do something similar to this

I have a catalog content type.  I want to be able to add one or more books related to the catalog topic to this content type. These books would be of a custom content type. Each book would only be tied to a single catalog but a catalog may have many books. 

I want to create a page for each catalog topic that has the fields of the catalog content type (like description etc) and then a list of all the books related to the catalog topic.

I want authenticated users to be able to add new books ("add book" link) to the catalog and also to be able to create new catalogs for the topics they choose. When a new catalog is created, it should have an "add book" link.

How would do this?
A think you could be interested in Field Collection