Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/11/2008, 18:58
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: problemas con delete

A lo que se ve, el problema no es de l uso del ON DELETE CASCADE, sino de diseño conceptual y su implementación física:
- No puedes pretender borrar en cascada los registros del hardware cuando borras un equipo, porque en la realidad en el equipo sólo hay un componente de cada tipo de hard puesto, pero cada tipo pieza de hard puede aparecer en muchos equipos. Lo que tienes es una cardinalidad 1:N donde la tabla HARDWARE es una entidad fuerte y equipo es una débil. No cortas la fuerte al eliminar la debil, eliminas la debil al eliminar la fuerte. En otras palabras, estás realizando al revés el proceso.
- Lo que te está faltando es la definición de una tabla EQUIPOS_COMPONENTES, que realice el vínculo, ya que en la realidad la tabla EQUIPO debería contener cosas como el numero de serie, fecha de fabricación, datos de verificación, etc. No los componentes, que pueden variar dentro de una misma serie en un modelo de PC.
- Por otro lado, desde el punto de vista del análisis de sistemas (sea estructurado o bajo el paradigma objetos), nunca puedes eliminar una instancia de un equipo que haya salido por venta, porque esa venta siembre debe quedar registrada, como también la descripción de lo fabricado. Lo máximo que puedes hacer es trasladarlo a un datawarehose. Tampoco se pueden eliminar las instancias de hardware, por más que se hayan dejado de fabricar, simplemente porque figuran en alguna parte de los registros de los equipos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)