Mah, la distinta base viene gestita tramite funzioni ricorsive di solito.

Secondo me conviene definire un'anagrafica articoli. Su tale archivio ci sara' un flag "Tipo articolo (Prodotto Finito, Materiale, Semilavorato)". Per risolvere le dipendenze fra prodotti finiti/semilavorati/materiali si deve usare una tabella di appoggio, per gestire la relazione molti a molti fra i vari articoli.

Questa e' un'idea, poi si puo' sviluppare a piacere, magari tenendo anche presente l'espandibilita' per permettere di gestire, in futuro, anche la produzione vera e propria (lavorazioni, tempi macchina, ecc.).