Salut, voilà un descriptif de mon problème :

soit une table A3 qui sert de relation N-N entre deux tables A1 et A2,
soit une table B2 qui sert de relation N-N entre une table B1 et A3

Donc :
A3 possède une clé primaire composite A1+A2
B2 possède une clé primaire composite B1+A3

la question est : comment définir dans B2 qu'une partie de la clé primaire composite de B2 est elle-même composée d'une autre clé primaire composite (A3)? Le code de B2 ci-dessous ne fonctionne pas, qu'est-ce qui est faux?

-------------------------Table A1-------------------------
DROP TABLE IF EXISTS `A1`;
CREATE TABLE `A1` (
`IdA1` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`IdA1`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-------------------------Table A2-------------------------
DROP TABLE IF EXISTS `A2`;
CREATE TABLE `A2` (
`IdA2` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`IdA2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-------------------------Table A3-------------------------
(pour relation N-N entre A1 et A2)
----------------------------------------------------------
DROP TABLE IF EXISTS `A3`;
CREATE TABLE `A3` (
`IdA1` int(10) unsigned NOT NULL,
`IdA2` int(10) unsigned NOT NULL,
PRIMARY KEY (`IdA1`,`IdA2`),
KEY `FK_A3_A1` (`IdA1`),
KEY `FK_A3_A2` (`IdA2`),
CONSTRAINT `FK_A3_A1` FOREIGN KEY (`IdA1`) REFERENCES `A1` (`IdA1`),
CONSTRAINT `FK_A3_A2` FOREIGN KEY (`IdA2`) REFERENCES `A2` (`IdA2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-------------------------Table B1-------------------------
DROP TABLE IF EXISTS `B1`;
CREATE TABLE `B1` (
`IdB1` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`IdB1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-------------------------Table B2-------------------------
(pour relation N-N entre B1 et A3)
----------------------------------------------------------
DROP TABLE IF EXISTS `B2`;
CREATE TABLE `B2` (
`IdB1` int(10) unsigned NOT NULL,
`IdA3` int(10) unsigned NOT NULL,
PRIMARY KEY (`IdB1`,`IdA3`),
KEY `FK_B2_B1` (`IdB1`),
KEY `FK_B2_A3` (`IdA3`),
CONSTRAINT `FK_B2_B1` FOREIGN KEY (`IdB1`) REFERENCES `B1` (`IdB1`),
CONSTRAINT `FK_B2_A3` FOREIGN KEY (`IdA3`) REFERENCES `A3` (`IdA1`,`IdA2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;