Prvi nacin je laksi i sigurniji za programera i ne zahteva da programer misli o svakoj relaciji u bazi... isto kao foreign keys i stored procedures, to je superioran nacin za pravljenje velike i ozbiljne baze... tako bar kazu u knigama
Sa druge strane, foreign keys znaju da smaraju kod importa i exporta podataka, i uopste menadzovanja baze, kao i kod shardinga... za male (uobicajene) projekte koje radi mali (i strucan) tim koji zna sta je gde u bazi su FK, referencijalni integritet i kaskadna brisanja samo overhead. Ja licno ih ne koristim skoro nikad...
Moje resenje je da se sav pristup bazi radi preko model klase i da onda model zna sta treba da obrise, kojim redom treba da dodaje podatke u koje tabele i sl. Tako isto dobijes lagodnost da podatke brises pozivom samo jedne metode bez mnogo razmisljanja, ali je kontrola i logika u kodu, pa je lakse uhakovati dodatne provere ili prepraviti nesto u bazi kad je hitno...
Inace, nisi u pravu da za prvi nacin treba samo 1 upit, tu se isto izvrsavaju 4 upita na bazi, samo stedis na prepare-ovanju SQL za ostala 3 upita