Il problema potrebbe derivare da chiavi mancanti in qualche riga. Le foreign key sono utili per mantenere l'integrità dai dati, ma se per un qualunque motivo i dati non sono solidamente integrati tra loro poi si generano problemi.

Non conosco Derby, ma per il futuro puoi ottenere aiuto prima e meglio specificando su quale back end stai lavorando. Solitamente qui si tende ad associare Php con MySQL, e a parte una base comune ANSI-SQL ci sono ancora parecchie differenze tra i vari dialetti proprietari.