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

Como crear las relaciones

Estas en el tema de Como crear las relaciones en el foro de Mysql en Foros del Web. Hola, estoy usando phpMyAdmin para esto, ya estan creadas todas las tablas y su motor es MyISAM, cada tabla tiene su llave primaria y foranea ...
  #1 (permalink)  
Antiguo 05/01/2013, 20:40
Avatar de RedMew  
Fecha de Ingreso: septiembre-2009
Ubicación: Rioverde SLP
Mensajes: 111
Antigüedad: 15 años, 1 mes
Puntos: 0
Como crear las relaciones

Hola, estoy usando phpMyAdmin para esto, ya estan creadas todas las tablas y su motor es MyISAM, cada tabla tiene su llave primaria y foranea respectivamente, pero no me aparece la forma de crear las relaciones, como hago para poder hacer eso?
  #2 (permalink)  
Antiguo 05/01/2013, 20:49
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, 11 meses
Puntos: 2658
Respuesta: Como crear las relaciones

Las tablas de tipo MyISAM no tienen FOREIGN KEY. Sólo las InnoDB pueden usar esetipo de constraint.
__________________
¿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/01/2013, 21:03
Avatar de RedMew  
Fecha de Ingreso: septiembre-2009
Ubicación: Rioverde SLP
Mensajes: 111
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Como crear las relaciones

Gracias, pero puedo cambiar eso con un UPDATE? si es asi porfas que alguien me diga como porque son muchas tablas como para hacerlo todo de nuevo
  #4 (permalink)  
Antiguo 05/01/2013, 21: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, 11 meses
Puntos: 2658
Respuesta: Como crear las relaciones

Vamos a ver si se entiende claramente:
1) Las relaciones de FK son parte de la estructura de las tablas y de las bases de datos, lo que quiere decir que deben ser creadas junto con las tablas.
2) UPDATE no genera relaciones de FK (es una sentencia de tipo DML), en todo caso lo hace el ALTER TABLE (que es una sentencia e clase DDL). Por ello es inútil cualquier tipo de intento con un UPDATE.
3) Si las tablas ya existen, el único modo de agregarles las FK es primero convertirlas de tablas MyISAM a tablas InnoDB por medio de un ALTER TABLE, el cual deberá ejecutarse tabla por tabla.
4) Si las tablas ya existen, y especialmente si ya tienen datos, es altamente probable que se produzcan errores por violaciones a la integridad referencial, que no se administró por la falta de las FK. Eso obligaría a realizar primero una depuración de datos, que tendrás que hacer con paciencia, y para la cual no existe ninguna metodología específica. El método adecuado depende de los datos que se tienen.

En otras palabras, es algo que deberías haber considerado desde el inicio, y usar InnoDB. Ahora, con la base creada, la tarea que tienes que hacer es bastante grande.
__________________
¿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 05/01/2013, 22:47
Avatar de RedMew  
Fecha de Ingreso: septiembre-2009
Ubicación: Rioverde SLP
Mensajes: 111
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Como crear las relaciones

Ok gracias, es que hace tiempo recuerdo que cambie el motor de las tablas con una funcion que creo es la que me dijiste Alter table, que creo seria mas o menos asi
ALTER TABLE nombretabla ENGINE=InnoBD;

las tablas aun no contienen informacion, solo estan creadas asi que creo no me traera problemas, gracias

Etiquetas: php, relaciones, 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:57.