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

Eliminar dato not_null de una tabla relacionada

Estas en el tema de Eliminar dato not_null de una tabla relacionada en el foro de Mysql en Foros del Web. Hola! Tengo que hacer tres tablas (por ejemplo): Tabla1 Clientes Columna1: Nombre_Cliente Columna2: nºPedido Tabla2 Pedidos Columna1: nºPedido Columna2: Id_Producto Tabla3 Productos Columna1: Id_Producto Columna2: ...
  #1 (permalink)  
Antiguo 05/05/2010, 03:53
 
Fecha de Ingreso: marzo-2010
Mensajes: 35
Antigüedad: 14 años, 1 mes
Puntos: 0
Eliminar dato not_null de una tabla relacionada

Hola! Tengo que hacer tres tablas (por ejemplo):

Tabla1 Clientes

Columna1: Nombre_Cliente
Columna2: nºPedido

Tabla2 Pedidos

Columna1: nºPedido
Columna2: Id_Producto

Tabla3 Productos

Columna1: Id_Producto
Columna2: Producto

Se supone que todos son no nulos.

Si tengo las tablas relacionadas y borro un producto de la tabla3, que ocurre con los pedidos que tenga hechos en los que este ese producto? Desaparecen? Se quedan como estan pero si hago alguna consulta me daria error? o como?

No se si me he explicado, espero que entendais lo que pregunto
  #2 (permalink)  
Antiguo 05/05/2010, 06:20
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: Eliminar dato not_null de una tabla relacionada

No puedes borrar un registro de una tabla cuya PK es FK de otra tabla, mientras la otra tabla todavía conserve registros relacionados con la primera. Eso se denomina integridad referencial. Esto es válido para las tablas InnoDB, pero no para el resto, por cuanto las únicas que tienen restricciones de clave foránea (FK) son esas. Si son MyISAM podrías.
En el caso de las InnoDB, se puede hacer que los registros se borren o actualicen en cascada, pero eso debe definirse en la creación de la tabla secundaria, al momento de indicar la FOREIGN KEY, colocando la cláusula ON DELETE CASCADE ON UPDATE CASCADE. En ese caso, se borrarán en cascada todos los registros relacionados.
Puede también hacerse que no se borren, poniendo un ON DELETE SET NULL, pero para ese caso el campo de la tabla secundaria debe ser creado como NULL y no como NOT NULL.
__________________
¿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 05/05/2010, 08:25
Avatar de EUSKARA  
Fecha de Ingreso: marzo-2010
Mensajes: 76
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Eliminar dato not_null de una tabla relacionada

es como si tu te komieras las galletas sin abrir el empake jajajajajajajaja dime como podrias hacer eso.

en ese caso tienes que cambiar la tabla a MyISAM pero perderias la relacion de las demas!

digo si tu caso es que solo quieres borrar esos datos.
  #4 (permalink)  
Antiguo 05/05/2010, 15:58
 
Fecha de Ingreso: marzo-2010
Mensajes: 35
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Eliminar dato not_null de una tabla relacionada

Estoy usando MySQL y tengo que hacer una practica que consiste en crear una base de datos de una tienda virtual con datos de clientes, los cuales puedan hacer pedidos, y dentro de esos pedidos que existan una serie de productos.

En otra parte de la practica se comenta que se puedan acceder a los datos de los productos y borrar los que ya no estan en venta... por eso me surgio esa duda.... ya que si los borro, algunos pedidos dejarian de tener sentido.

Gracias por vuestras respuestas! Vere a que se refiere la practica exactamente preguntando a los profesores :)
  #5 (permalink)  
Antiguo 05/05/2010, 16:04
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Eliminar dato not_null de una tabla relacionada

danyof

Lo que se hace comunmente en estos casos, es "borrarlos" a nivel de usuario, pero al interior de la base de datos puedes tener un estado llamado "estado" el cual lo puedes variar como activo o inactivo.

Al momento de "borrarlos" realmente haces un update sobre el campo y lo desactivas.

Cuando vayas a listar los productos existentes simplemente pones una condición que muestre los productos activos.

se entiende la idea?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 06/05/2010, 14:44
 
Fecha de Ingreso: marzo-2010
Mensajes: 35
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Eliminar dato not_null de una tabla relacionada

Claro!! eso era EXACTAMENTE lo que tenia pensado hacer...

De hecho tengo un panel de noticias con un campo llamado mostrar, y solo muestro aquellas noticias en la pagina principal que tienen un "1" en el susodicho campo.

Supongo que me fui a lo estricto ya que literalmente en la practia pone:

"Borrado de datos: El administrador de la tienda podra borrar tanto los datos de los productos que ya no se vendan en la tienda como los datos de los clientes registrados."

Pues muchas gracias y lo que hare ahora sera eso

Muchas gracias! :D

Etiquetas: dato, eliminar, tablas
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 04:15.