04/10/2008, 22:07
|
| 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) |