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

DELETE a varias tablas

Estas en el tema de DELETE a varias tablas en el foro de Mysql en Foros del Web. Hola, he estado intentando eliminar registros de varias tablas, pero no lo he logrado. Seria un registro por tabla, son 7 tablas en total, y ...
  #1 (permalink)  
Antiguo 26/04/2011, 11:35
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Pregunta DELETE a varias tablas

Hola, he estado intentando eliminar registros de varias tablas, pero no lo he logrado.

Seria un registro por tabla, son 7 tablas en total, y todas tienen en comun el NUM_PEDIEMNTO.

Me estoy confundiendo porque dicen que si se puede con delete e inner join, o otros dicen que no, que se hace con "cascadas" o algo asi.

Cual es la manera correcta, eficaz, sencilla de hacer esto?
  #2 (permalink)  
Antiguo 26/04/2011, 12:16
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: DELETE a varias tablas

Cita:
Cual es la manera correcta, eficaz, sencilla de hacer esto?
Depende mucho de las tablas, de las dependencias (FK definidas), etc.
Para darte una sugerencia necesitaríamos conocer mejor las tablas que están involucradas.
__________________
¿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 26/04/2011, 12:40
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: DELETE a varias tablas

FK definidas

Son las llaves foraneas?, si es eso no tengo llaves foraneas definidas.

Solo llaves unicas que son el campo ID (autoincremental, en todas las tablas), y en la labla de pedimento_info (informacion basica), el NUM_PEDIMENTO es unico.
  #4 (permalink)  
Antiguo 26/04/2011, 13:15
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: DELETE a varias tablas

Cita:
Son las llaves foraneas?, si es eso no tengo llaves foraneas definidas.
En Argentina no traducimos esas expresiones tan literalmente; para el uso en programación "key" lo traducimos como "clave", porque ese es el sentido del término. "Llave" nos resulta demasiado impreciso.
En cualquier caso, si no tienes definidas FK, no puedes hacer borrados en cascada, y si tienes una estructura relacional, deberías haber definido FK en las tablas...
Puede que te convenga replantear mejor el diseño de la base e implementar tablas InnoDB.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/04/2011, 13:25
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: DELETE a varias tablas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En Argentina no traducimos esas expresiones tan literalmente; para el uso en programación "key" lo traducimos como "clave", porque ese es el sentido del término. "Llave" nos resulta demasiado impreciso.
En cualquier caso, si no tienes definidas FK, no puedes hacer borrados en cascada, y si tienes una estructura relacional, deberías haber definido FK en las tablas...
Puede que te convenga replantear mejor el diseño de la base e implementar tablas InnoDB.
He buscado la respuesta a esta pregunta desde hace un buen rato y no la encuentro:

La clave foranea debe ser unica, o puede repetirce en la tabla?
  #6 (permalink)  
Antiguo 26/04/2011, 13:41
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: DELETE a varias tablas

Una clave foránea es un campo cuyo valor se referencia a la PK de otra tabla (origen). Por defecto, sólo admite relacionarse con un único registro de la tabla origen, ya que expresa las relaciones de cardinalidad 1:1 y 1:N.
Lo que sí puede darse es que en una tabla haya más de una FK relacionada con la misma tabla origen. Como por ejemplo una tabla PASAJES vinculada a LOCALIDAD, donde el ID de la localidad aparece dos veces: la localidad de salida del transporte y la localidad de destino. Puede también haber más de una Fk que vincule esa tabla con otras tablas más.
La definición de la FK en la creación de la tabla es donde se pone la clausula "ON DELETE CASCADE", que permite los borrados en cascada.

¿Se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 26/04/2011, 14:16
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: DELETE a varias tablas

cardinalidad 1:1 y 1:N

Entonces si en la tabla principal tengo la PK en NUM_PEDIMENTO (este es unico), en las demas tablas puedo tener el NUM_PEDIMENTO como FK, aunque se repita el campo. Ejemplo

Tabla pedimento_info, NUMPEDIMENTO = 12345

Tabla identificadores_nivel_pedimento:

3 registros que pertenecen al mismo pedimento; NUM_PEDIMENTO = 12345 (3 veces se repite el NUM_PEDIMENTO, porque este pedimento requiere de 3 identificadores; los otros campos son diferentes)

No se si explico bien mi duda
  #8 (permalink)  
Antiguo 26/04/2011, 15:40
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: DELETE a varias tablas

Más o menos por allí. Tienes que tener en cuenta que las FK no se ponen arbitrariamente.
Se debe analizar las entidades que componen el sistema y las relaciones establecidas primero; luego, cuando ya se tiene ese esquema base, se realiza la normalización de la base y es allí donde surge la mayoría de los requerimientos de FK.
El hecho de que tengas, por ejemplo, un Cliente, no implica que el ID del cliente esté en todas las partes que aparentemente están vinculadas. Por caso, el cliente hace compras, pero la factura de la compra a su vez tiene sólo una aparición del cliente, en el encabezado; el detalle de la factura (los items comprados) componen otra tabla y en esa tabla no se hereda el numero de cliente. En otros casos, el cliente no se hereda en ciertos documentos, pero si el numero de la factura o el ID del documento que corresponda. No se heredan porque se debe evitar la redundancia innecesaria.
Relaciones como esa sólo se pueden ver claramente cuando se grafica la base de datos con ayuda de alguna aplicación, como MySQL Workbench, DBDesigner o algo así.
Si has usado algo por el estilo, sería una buena idea que mostraras el gráfico, para ver si hay exceso de FK o si están faltando relaciones que no se vean bien.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 13/05/2011, 09:21
 
Fecha de Ingreso: abril-2011
Ubicación: add
Mensajes: 22
Antigüedad: 13 años
Puntos: 0
Respuesta: DELETE a varias tablas

Por ejemplo:
Tabla1

Id_nombre (primary key)
Nombre (var)
Apellido (var)

Tabla2

id_tipopelo (primary key9
Color (var)


Tabla3 (RELACIONES)
id_nombre (fk)
id_tipopelo (fk)

Es decir, las foreng keys existen mientras existan las relaciones en otras tablas.

De esta manera podrias hacer una consulta a la tabla3 y conseguir todos los valores de tu base de datos.

Etiquetas: entoncesquequieres
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:38.