Я хочу установить отношения между моей сущностью "Tag". Отношения являются двунаправленными и хранятся в моей сущности "TagRelation":
![enter image description here](https://i.stack.imgur.com/2A9FJ.png)
Каждое отношение тега должно иметь только 1 запись в таблице tag_relations, так как направление отношения не имеет значения. Например, если я вставлю:
«Лес» (тег 1) <-> «Дерево» (тег 2)
У меня не должно быть возможности вставить отношения наоборот:
«Дерево» (тег 1) <-> «Лес» (тег 2)
Это SQL-код таблицы tag_relation:
CREATE TABLE IF NOT EXISTS `tag_relation` (
id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`tag_id_1` INT(10) UNSIGNED NOT NULL ,
`tag_id_2` INT(10) UNSIGNED NOT NULL ,
`type` ENUM('related_subject','synonymous','alternative_writing') NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_tag_1` (`tag_id_1` ASC) ,
INDEX `fk_tag_2` (`tag_id_2` ASC) ,
UNIQUE INDEX `ux_relation_1_2` (`tag_id_1` ASC, `tag_id_2` ASC) ,
UNIQUE INDEX `ux_relation_2_1` (`tag_id_2` ASC, `tag_id_1` ASC) ,
CONSTRAINT `fk_tag_1`
FOREIGN KEY (`tag_id_1` )
REFERENCES `mm`.`tag` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_tag_2`
FOREIGN KEY (`tag_id_2` )
REFERENCES `mm`.`tag` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 1
Уникальные индексы в том виде, в каком они есть сейчас, не поддерживают уникальные отношения, которые я хочу. Как я могу применить это в моей базе данных?