Sugeriría las siguientes tablas:
a) Receta:nombre, descripción, ingrediente y otra información
b) Ingrediente:nombre, descripción, fromstore (sí o ningún valor si se compró en una tienda), recipieid (la identificación de la receta para este ingrediente). Esto permite que los ingredientes tengan recetas
c) recipie_ingredients - receipieid, ingredienteid (básicamente esto vincula una receta a sus ingredientes)
El consejo es correcto, ya que puedes terminar en un bucle circular de ingredientes a recetas, etc.
ACTUALIZACIÓN:Recomendaría agregar una columna isingridient a la receta para que solo las recetas que se sabe que son ingredientes se puedan seleccionar para agregar a la tabla de ingredientes. Esto puede ayudar a reducir las posibilidades de referencias circulares