Само за да изясним нещата, ето как изглежда таблицата, след като ограниченията на външния ключ са поставени:
CREATE TABLE `leerplan_oefenreeks` (
`leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
`leerplan_id` int(11) NOT NULL,
`oefenreeks_id` int(11) NOT NULL,
`plaats` int(11) NOT NULL,
PRIMARY KEY (`leerplan_oefenreeks_id`),
KEY `fk_leerp_oefenr_leerplan` (`leerplan_id`),
KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE,
CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
Обърнете внимание на индексите fk_leerp_oefenr_leerplan и fk_leerp_oefenr_oefenreeks, които mysql добавя автоматично.
След като добавите първото ограничение за уникален ключ:
ALTER TABLE leerplan_oefenreeks ADD CONSTRAINT un_leerp_oefenr UNIQUE(leerplan_id, oefenreeks_id);
Mysql премахва индекса fk_leerp_oefenr_leerplan, тъй като вече не е необходим за поддръжка на проверките на външния ключ в колоната leerplan_id. В този момент таблицата изглежда така:
CREATE TABLE `leerplan_oefenreeks` (
`leerplan_oefenreeks_id` int(11) NOT NULL AUTO_INCREMENT,
`leerplan_id` int(11) NOT NULL,
`oefenreeks_id` int(11) NOT NULL,
`plaats` int(11) NOT NULL,
PRIMARY KEY (`leerplan_oefenreeks_id`),
UNIQUE KEY `un_leerp_oefenr` (`leerplan_id`,`oefenreeks_id`),
KEY `fk_leerp_oefenr_oefenreeks` (`oefenreeks_id`),
CONSTRAINT `fk_leerp_oefenr_leerplan` FOREIGN KEY (`leerplan_id`) REFERENCES `leerplan` (`leerplan_id`) ON DELETE CASCADE,
CONSTRAINT `fk_leerp_oefenr_oefenreeks` FOREIGN KEY (`oefenreeks_id`) REFERENCES `oefenreeks` (`oefenreeks_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
Накратко, Sqlyog показва само индексите в своя дървовиден изглед вляво, ако искате да видите външните ключове, изберете таблицата в дървовидния изглед и натиснете F10.