Mysql Можно ли описать зависимость без триггера?

AnrDaemon

Продвинутый новичок
Сейчас вот сижу, разбираю один свой старый проект. Наткнулся на проблему, которой раньше не заметил.

Есть (условно) группа объектов, объекты объединены отношениями A->B.
В итоге получается такой вот неполносвязный граф.
Всё бы ничего, но отношения могут быть и B->A. Причём пара объектов может иметь оба типа отношений. Всё совершенно валидно, но… как это записать в БД?
Код:
UNIQUE INDEX `Consistency` (`from` ASC, `to` ASC),
по очевидным причинам не поможет. С таким ключиком полетит в труху примерно 20% всех связей.
Можно забить на валидацию в БД, но хотелось бы обойтись без лишней ручной работы.
 

AnrDaemon

Продвинутый новичок
Я видимо туплю под утро.
Можно пример?
Сейчас табличка выглядит как-то так:
Код:
CREATE TABLE `mapObjects` (`mapId` INT UNSIGNED PRIMARY KEY);

CREATE TABLE `mapRoutes` (
  `routeId` INT UNSIGNED NOT NULL,
  `routeFrom` INT UNSIGNED NOT NULL,
  `routeTo` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`routeId`),
-- bogus  UNIQUE INDEX `Consistency` (`routeFrom` ASC, `routeTo` ASC),
  INDEX `fk_mapRouteFrom` (`routeFrom` ASC),
  INDEX `fk_mapRouteTo` (`routeTo` ASC),
  CONSTRAINT `fk_mapRouteFrom`
    FOREIGN KEY (`routeFrom`)
    REFERENCES `mapObjects` (`mapId`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT,
  CONSTRAINT `fk_mapRouteTo`
    FOREIGN KEY (`routeTo`)
    REFERENCES `mapObjects` (`mapId`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT
) ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
 

fixxxer

К.О.
Партнер клуба
А, я не так понял вопрос. Тогда, видимо, без триггеров не обойтись
 
Сверху