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

Cómo encadenar tablas?

Estas en el tema de Cómo encadenar tablas? en el foro de Bases de Datos General en Foros del Web. Buenas tardes amigos del foro, Escribo porque hace unos días trabajando en un sitio me di cuenta que al ejecutar un query que me elimina ...
  #1 (permalink)  
Antiguo 04/09/2012, 13:12
Avatar de spacecowboy  
Fecha de Ingreso: agosto-2009
Mensajes: 110
Antigüedad: 14 años, 7 meses
Puntos: 0
Cómo encadenar tablas?

Buenas tardes amigos del foro,

Escribo porque hace unos días trabajando en un sitio me di cuenta que al ejecutar un query que me elimina un registro de una tabla también los elimina de todas las tablas relacionadas (sin necesidad de ejecutar el query para todas las tablas)

Me explico, como hago para que si elimino de la tabla usuario al usuario id:X también me elimine de las demás tablas donde este ese mismo id de usuario?

Gracias de antemano
  #2 (permalink)  
Antiguo 04/09/2012, 14:31
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Cómo encadenar tablas?

Cita:
Escribo porque hace unos días trabajando en un sitio me di cuenta que al ejecutar un query que me elimina un registro de una tabla también los elimina de todas las tablas relacionadas (sin necesidad de ejecutar el query para todas las tablas)
Eso es porque la tabla que se borra es tabla base de una cadena de dependencias, y en todos lados donde su ID aparezca como FOREIGN KEY tiene definida la condición de ON UPDATE CASCADE ON DELETE CASCADE.
Par alograr lo mismo hay que modificar todas las tablas donde esa ID de usuario sea FK y ponerles la misma cláusula.

Estas son condiciones estructurales de las tablas, por lo que no es una sentencia simple la que hace eso.
Por otro lado, es necesario analizar en nivel de dependencias que tiene la tabla de usuarios antes de proceder a realizar una modificación tan radical.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/09/2012, 15:55
Avatar de spacecowboy  
Fecha de Ingreso: agosto-2009
Mensajes: 110
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Cómo encadenar tablas?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Eso es porque la tabla que se borra es tabla base de una cadena de dependencias, y en todos lados donde su ID aparezca como FOREIGN KEY tiene definida la condición de ON UPDATE CASCADE ON DELETE CASCADE.
Par alograr lo mismo hay que modificar todas las tablas donde esa ID de usuario sea FK y ponerles la misma cláusula.

Estas son condiciones estructurales de las tablas, por lo que no es una sentencia simple la que hace eso.
Por otro lado, es necesario analizar en nivel de dependencias que tiene la tabla de usuarios antes de proceder a realizar una modificación tan radical.
Gracias por responder.

Una pregunta más, esto como puedo hacerlo en el phpmyadmin? de relacionar las tablas de esa manera con el FOREIGN KEY? colocandole al campo "primaria"?
  #4 (permalink)  
Antiguo 04/09/2012, 18:29
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Cómo encadenar tablas?

Una FK en la tabla no es necesariamente una PK.
Si estás preguntando eso, es que te falta estudiar un poco de fundamentos de bases de datos...
Mi sugerencia, a menos que quieras ponerte a repasar manuales, es que armes un script que puedas ejecutar, o un stored procedure, el cual realice el borrado en forma ordenada de cada tabla. Puede que eso esté más al alcance de lo que conoces del tema, sin ofender.

Si estás trabajando como autodidacta, te advierto que el tema de BBDD es una de las partes menos dúctil para serlo. Es un área que en muchos momentos requiere de buenos cimientos teóricos...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: registro, relacion, tabla
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 00:40.