Eu sei que para cada chave estrangeira devemos fazer um índice em sua coluna, mas não é necessário quando essa coluna na primeira parte do índice PRIMARY.
O MySQL aceita esta consulta:
CREATE TABLE IF NOT EXISTS `poll_option_i18ns` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`poll_option_id` int(11) NOT NULL,
`lang` char(2) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`title` varchar(127) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`poll_option_id`,`lang`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
ALTER TABLE `poll_option_i18ns`
ADD CONSTRAINT `poll_option_id` FOREIGN KEY (`poll_option_id`) REFERENCES `poll_options` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
Mas no MySQL workbench não consegui adicionar a chave estrangeira sem o índice! É um bug do MySQL Workbench ou eu faço da maneira errada?
Isso é atualmente uma limitação do MySQL Workbench e já foi mencionado recentemente no Stackoverflow (não consigo encontrar a pergunta agora, desculpe). O MySQL Workbench não usa o caso especial em que uma chave estrangeira usa colunas que iniciam o PK nessa tabela. Por favor, registre uma solicitação de recurso em http://bugs.mysql.com se achar que vale a pena implementá-lo.