De hecho, cuando cargas datos en un dataset desde una BD, aunque la BD tenga relaciones y claves primarias creadas, han de crearse también en el dataset si quieres que éste tenga esa funcionalidad y respete las restricciones. Si no, al saltarte una restriccion (como eliminar un registro que todavía tiene hijos en otra tabla) te aparece el error de la BD directamente. Con lo que si lo defines en el dataset, evitas el error de la BD...
Bueno, mas o menos
Saludos.