Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Duda clave foranea-borrado en cascada

Estas en el tema de Duda clave foranea-borrado en cascada en el foro de Bases de Datos General en Foros del Web. Bueno llendo al grano. Si tengo una tabla de clientes y otra de alquileres que tiene como claves foraneas a la clave de cliente, debería ...
  #1 (permalink)  
Antiguo 04/10/2008, 21:30
 
Fecha de Ingreso: octubre-2008
Mensajes: 1
Antigüedad: 16 años, 1 mes
Puntos: 0
Duda clave foranea-borrado en cascada

Bueno llendo al grano.

Si tengo una tabla de clientes y otra de alquileres que tiene como claves foraneas a la clave de cliente, debería poner también como clave foranea la clave de alquiler en cliente si no es así ¿qué hago cuándo se borra un cliente? como puedo referenciar para hacer un borrado en cascada así poder borrar los alquileres que efectuo dicho cliente borrado.

Muchas gracias. Un saludo afectuoso PisaCaballo
  #2 (permalink)  
Antiguo 04/10/2008, 22:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda clave foranea-borrado en cascada

Las claves foráneas no se colocan como enlace entre tablas en forma reciproca. Tienen que ver con la cardinalidad de la relación entre las entidades representadas.
Como regla general, si tienes una relación 1:N, la relación a la que le corresponde la cardinalidad N es la que lleva como FK la PK de la de cardinalidad 1.
Por otra parte, si la cardinalidad es N:N, lo que debe suceder es que se construye una tabla nueva que contenga las vinculaciones N:N de ambas tablas, esto es una tabla que contenga las dos PK como Fk, mas los datos propios de la existencia de la relación.
Si por error defines una relación cruzada entre ambas tablas lo que te sucederá es simple: No podrás borrar registros de ninguna de las dos porque generará un error de integridad referencial. Esto es porque si intentases borrar un registro de la tabla A no podrías porque ese registro aparece como FK de la tabla B y viceversa.

Con respecto al borrado en cascada, este se debe definir en la tabla primaria (clientes, para el caso), de modo que la desaparición de ese registro borre los dependientes.
Otra opción es eliminar en forma directa los registros dependientes en la tabla alquileres antes de borrar al cliente. Eso depende del control que quieres usar en la aplciación.

Un tip final es que en un sistema de bases de datos, los datos jamás se eliminan. Se migran a una base de datos histórica, porque nunca sabes cuándo vas a necesitar esa información de nuevo en una auditoría. Máxime cuando es información de efectos jurídicos y/o contables...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.