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

Poner clave foránea compuesta en phpmyadmin

Estas en el tema de Poner clave foránea compuesta en phpmyadmin en el foro de Mysql en Foros del Web. Hola, tengo una tabla que tiene como clave primaria dos campos (compuesta), necesito referenciarla desde otra tabla como clave foránea, mi consulta es casi como ...
  #1 (permalink)  
Antiguo 09/06/2014, 19:18
 
Fecha de Ingreso: agosto-2010
Mensajes: 59
Antigüedad: 13 años, 8 meses
Puntos: 2
Poner clave foránea compuesta en phpmyadmin

Hola, tengo una tabla que tiene como clave primaria dos campos (compuesta), necesito referenciarla desde otra tabla como clave foránea, mi consulta es casi como este post pero yo estoy usando la interfaz de phpmyadmin.

¿Hay forma de hacer esto?, porque solo me acepta como clave foránea un solo campo.

Por ejemplo:
Tabla1
claveprimaria1 |<------------------ clave primaria
claveprimaria2 |
otrocampo

Tabla2
clavetabla2
claveprimaria1 |<------------------ clave foranea
claveprimaria2 |

Al momento de crear la Tabla2 creo los dos campos con el mismo nombre de la clave primaria de Tabla1 luego en cada campo le pongo "Agregar indice" y para relacionarlo voy a "Vista de Relaciones" pero solo existe la opcion al primer campo de la clave primaria de la tabla1.

Gracias de antemano
  #2 (permalink)  
Antiguo 09/06/2014, 19:39
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: Poner clave foránea compuesta en phpmyadmin

Primero, quita las claves primarias de la tabla antes de intentar agregar una columna a la misma. Eso puede ser un bug de diseño de phpMyadmin, si al agregar una columna a la PK, se genera un ALTER TABLE que ponga un ADD PRIMARY KEY.

Si eso no resulta, postea la estructura (el CREATE TABLE) de cada tabla. Puede existir una incompatibilidad de datos, de tipos, engine o de collation que te lo impida.
__________________
¿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 10/06/2014, 07:38
 
Fecha de Ingreso: agosto-2010
Mensajes: 59
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Poner clave foránea compuesta en phpmyadmin

Esta es la estructura:
Código:
CREATE TABLE IF NOT EXISTS `tabla1` (
  `clave1` int(11) NOT NULL,
  `clave2` int(11) NOT NULL,
  `otro` int(11) NOT NULL,
  PRIMARY KEY (`clave1`,`clave2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tabla2`
--

CREATE TABLE IF NOT EXISTS `tabla2` (
  `prikey` int(11) NOT NULL,
  `ref1` int(11) NOT NULL,
  `ref2` int(11) NOT NULL,
  PRIMARY KEY (`prikey`),
  KEY `ref1` (`ref1`),
  KEY `ref2` (`ref2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Quise referenciar los campos ref1 y ref2 de la tabla2 a la clave primaria de la tabla1 (clave1 y clave2).
Le puse "Agregar indice" a ref1 y ref2 pero, al momento de relacionarlo en "Vista de relaciones" solo estan las opciones :
Código:
`bdprueba`.`tabla1`.`clave1`
`bdprueba`.`tabla2`.`prikey`
`bdprueba`.`tabla2`.`ref1`
`bdprueba`.`tabla2`.`ref2`
Este problema, no es nuevo aqui hay otro.

Bueno graciass
  #4 (permalink)  
Antiguo 10/06/2014, 08:50
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: Poner clave foránea compuesta en phpmyadmin

Empecemos por el principio: phpMyadmin no es MySQL. Es una interfaz programada en PHP para gestionar el MySQL de un modo amigable, pero no está necesariamente bien creada, ni programada, y ni siquiera pensada.
Si quieres trabajar mas o menos bien, de un modo eficeinte, usa otra cosa, como por ejemplo MySQL Workbench.
Por otro lado, si la interfaz gráfica te falla, siempre tienes la posibilidad de crear las FK en forma manual escribiendo las sentencias en laventana de SQL.
Esa sería una buena posibilidad.

Lo que quiero decir con esto es que el problema que tienes no es con MySQL, sino con phpMyadmin, y ese puedes sortearlo dejando de lado la interfaz gráfica.

Ahora bien, hagamos una aclaración: Crear un índice sobre dos columnas no quiere decir que estés creando una FK. Son cosas diferentes.

En cuanto a phpMyadmin, prueba lo siguiente:http://www.binarytides.com/create-fo...ey-phpmyadmin/

En realidad con MySQL Workbench es más simple.
__________________
¿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 10/06/2014, 09:41
 
Fecha de Ingreso: agosto-2010
Mensajes: 59
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Poner clave foránea compuesta en phpmyadmin

No intente con las sentencias todavía ni con WORKBENCH. Probaré

Gracias.

Etiquetas: campo, clave, compuesta, php, phpmyadmin, 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 09:01.