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

Utilidad de las tablas InnoDB

Estas en el tema de Utilidad de las tablas InnoDB en el foro de Mysql en Foros del Web. Hola a todos. Perdonad si mi pregunta es muy tonta. ¿Creéis que es conveniente usar tablas InnoDB si no se van a usar transacciones y ...
  #1 (permalink)  
Antiguo 24/05/2006, 11:32
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
Utilidad de las tablas InnoDB

Hola a todos. Perdonad si mi pregunta es muy tonta. ¿Creéis que es conveniente usar tablas InnoDB si no se van a usar transacciones y la integridad referencial se va a cuidar desde el código? Formularé la pregunta de otro modo: si las tablas tienen definidas las claves foráneas pero ninguna integridad referencial y no se van a usar transacciones, ¿tiene sentido que sean InnoDB?

Gracias.
  #2 (permalink)  
Antiguo 24/05/2006, 14:50
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Podrías usar tablas MyIsam que son más rápidas. Pero, lo que ya no tiene mucho sentido es controlar todo por código.
  #3 (permalink)  
Antiguo 25/05/2006, 09:44
 
Fecha de Ingreso: abril-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
creo que efectivamente no tiene, en ese caso, mucho sentido usar tablas innoDB, ya que pienso que se pierde un poco la posibilidad de recuperacion ante desastres que es mas facil en tabla MyISAM
  #4 (permalink)  
Antiguo 25/05/2006, 11:33
 
Fecha de Ingreso: enero-2006
Mensajes: 22
Antigüedad: 18 años, 3 meses
Puntos: 0
Yo te recomiendo que uses tablas INNODB, y aunque vayas a controlar la integridad referencial en la aplicación, deberías controlarla también en la base de datos. Es poco el tiempo que vas a dedicar a definir la integridad referencial, y ganas mucho asegurandote la integridad de los datos.
  #5 (permalink)  
Antiguo 25/05/2006, 16:53
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
Gracias a los tres. Me interesa eso que ha dicho luchop "ya que pienso que se pierde un poco la posibilidad de recuperacion ante desastres que es mas facil en tabla MyISAM". ¿Podrías explicar esto un poco mejor? Gracias de nuevo.
  #6 (permalink)  
Antiguo 26/05/2006, 19:02
 
Fecha de Ingreso: abril-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
me referia a que en las tablas innoDB puedes usar el tipo varchar() y no asi en las tablas MyISAM donde usas solo char(). Ahora, el que los campos tengan una longitud fija ayuda a que un REPAIR TABLE o algun utilitario pueda recuperar informacion en caso de problemas
  #7 (permalink)  
Antiguo 17/06/2006, 06:39
 
Fecha de Ingreso: junio-2006
Mensajes: 1
Antigüedad: 17 años, 10 meses
Puntos: 0
Y que pasa cuando la integridad referencial debe ser establecida para dos campos?

Es decir:

Clientes
:::::::::
id_cliente
id_entidad

Ventas
::::::::
id_cliente
id_entidad

Si hacemos un DELETE FROM clientes WHERE id_cliente = 2 AND id_entidad = 7 de clientes (y hay relacion ventas.id_cliente => clientes.id_cliente), nos borrara el cliente 2 de la entidad 7, pero nos borrara tambien de ventas todos las que tenga id_cliente =2 aunque sean de otras entidades.

Enteder por entidad diferentes webs corriendo en una misma aplicacion.

id_cliente
id_entidad

Es clave primaria en ambas tablas

ALTER TABLE `ventas`
ADD CONSTRAINT `ventas_id_cliente_id_entidad` FOREIGN KEY (`id_cliente`, `id_entidad`) REFERENCES `clientes` (`id_cliente`, `id_entidad`) ON DELETE CASCADE ON UPDATE CASCADE;

Esto lo arreglaria.

El mayor prblema es que phpmyadmin no puede establecer relaciones de varios campos de forma conjunta, solo 1 a 1 asi que toca hacerlo a mano. (Luego si editas Vista de Relaciones y guardas lo dejara correctamente con los dos campos)

Última edición por liron23; 17/06/2006 a las 07:26
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 22:08.