Exacto si eliminas algo en la tabla padre se eliminan todos los hijos, aqui hay un enlace bien explicado sobre el funcionamiento de cada una de esas sentencias:
http://dev.mysql.com/doc/refman/5.0/...nstraints.html
ahora que es mas recomendable, pues todo depende de los requerimientos del sistema, en algunos casos es mas recomendable hacer uso del borrado logico y no fisico, a que me refiero podrias crear una columna extra en tus tablas que represente si el registro esta activo o eliminado y controlas el resto mediante codigo (no es muy complejo), pero si no necesitas mantener este tipo de control puedes eliminar directamente, saludos, cya