Hace un rato puse esto en el foro: [URL="http://www.forosdelweb.com/f86/consulta-iterativa-1006319/#post4242890"]http://www.forosdelweb.com/f86/consulta-iterativa-1006319/#post4242890[/URL]
Puede que te sirva, aunque si la clasificación es a dos niveles sobran campos por todos lados.
Yo te diría que pongas en una sola tabla los grupos y subgrupos (por si acaso algún día necesitas el tercer o enésimo nivel) y en otra los productos haciendo que los productos hagan referencia a la tabla de grupos.
Cita: o hay alguna forma de hacer una especie de foreign key con posible valor null?
Es válido crear un foreign key que haga referencia a la misma tabla.
Es válido hacer que el campo que hace la referencia tenga valor nulo.
Lo impensable es hacer que el campo que hace la referencia lo intente hacia un registro no existente.