Hi John,
I think it depends on how you prefer manipulating with data, the both variants are ok.
You can do it via page types. Example of structure:
Recipe 1
-- Recipe ingredient 1
-- Recipe ingredient 2
Recipe 2
-- Recipe ingredient 1
-- Recipe ingredient 3
Ingredients
-- ingredient 1
-- ingredient 2
-- ingredient 3
Here you will need 3 page types: 1 - Recipe (title of recipe, description, etc), 2 - Recipe ingredient (link to an ingredient, amount of an ingredient, some special information about ingredient for a recipe), 3 - Ingredient (title, description, etc)
But using pages for storing content has some limitation
The same structure you can do via module classes, but interface for manipulating with data you will create manually.