Dúvida sobre como estruturar meu banco / projeto

Estou trabalhando em um projeto pessoal apenas para estudar e aperfeiçoar algumas coisas (utilizando NetBeans [java] com o SQL do Oracle ou MYSQL [estou na dúvida ainda]).

Tenho uma tabela de produtos, que no caso seriam pastéis e uma tabela de ingredientes.
Estes produtos, por padrão, não possuem estoque, apenas ingredientes. Estes ingredientes por sua vez, possuem o estoque deles.

Minha dúvida é: como devo estruturar este banco para possuir um controle do estoque dos ingredientes e da saída dos produtos finais? Faço uma relação N x N, uma relação 1 x N ou estes controle eu faço diretamente no meu programa, ao invés do banco?

Caso o ideal seja realizar este controle pelo banco, eu devo criar uma trigger para checar se existe estoque do ingrediente antes de tentar ‘vender’ 1 pastel

Como exemplo hipotético: toda vez que eu vender 1 pastel de Mussarela, tem que dar baixa em 80g de Mussarela (da tabela de ingredientes)

Se for cadastrar fornecedores e produtos destes fornecedores ai sim você teria uma relação N x N, porque um fornecedor pode ter 1 ou mais produtos, e um produto pode ser vendido por 1 ou mais fornecedores.
Mas na situação definida no seu problema, não necessita de uma relação definida no BD entre a saída de produtos com o controle do estoque, tudo isso pode ser verificado na aplicação sem dor de cabeça.