Buenas, he creado una tabla que relaciona varias, es decir, de una relación N:N.
El problema es que la generaba por phpmyadmin y en el apartado indices me salía como me añadía las relaciones y las claves primarias correctamente, pero investigando el código SQL veía algo raro:
Código:
--
-- Estructura de tabla para la tabla `se_descuenta`
--
CREATE TABLE IF NOT EXISTS `se_descuenta` (
`activ` tinyint(3) unsigned NOT NULL,
`oferta` tinyint(3) unsigned NOT NULL,
`pvp` decimal(5,2) unsigned NOT NULL,
PRIMARY KEY (`activ`,`oferta`),
KEY `oferta` (`oferta`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Restricciones para tablas volcadas
--
--
-- Filtros para la tabla `se_descuenta`
--
ALTER TABLE `se_descuenta`
ADD CONSTRAINT `se_descuenta_ibfk_1` FOREIGN KEY (`oferta`) REFERENCES `oferta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `se_descuenta_ibfk_2` FOREIGN KEY (`activ`) REFERENCES `actividad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
Me refiero por raro, algo que no se si es correcto...
Me añade solamente una clave después de la PK y después modifica la tabla añadiendo ambas claves foráneas.
Al ver esto, lo que hice fue crear mediante código la tabla de la siguiente forma:
Código:
CREATE TABLE IF NOT EXISTS `se_descuenta` (
`activ` tinyint(3) unsigned NOT NULL,
`oferta` tinyint(3) unsigned NOT NULL,
`pvp` decimal(5,2) unsigned NOT NULL,
FOREIGN KEY (`oferta`) REFERENCES `oferta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`activ`) REFERENCES `actividad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (`activ`,`oferta`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
De esta forma me generaba el mismo resultado, me refiero que al exportar la tabla para ver el código me mostraba el primero que posteo.
No se si es correcto y es problema de PHPmyAdmin o es que estoy cometiendo algún error.
Espero vuestras respuestas! Un saludo.