ottima spiegazione.
Sulla base dei tuoi suggerimenti, vorrei risistemare il db.

1. ho indicato smallint2 per gli ID dei prodotti. Leggendoti meglio, direi che smallint1 va più che bene, visto che gli ID non avranno degli 0 iniziali.
2. sulla tabella dei prodotti ho una chiave primaria su IDProdotto. Diminuendo la lunghezza ed il tipo di campo, immagino ci saranno di problemi. Dovrei fare qualche operazione prima e/o dopo?