Как сделать двухстороннюю связь в MySQL?

Есть две таблицы. Нужно, чтобы таблица 1 ссылалась на поле таблицы 2. А таблица 2 ссылалась на поле таблицы 1. введите сюда описание изображения

Проблема в том, что для создания связи нет: либо первой, либо второй таблицы.

Идея: Есть 3 таблицы: 1)Файлы. 2)Отношения. 3)Сущность. Идея в том, что сущность ссылается на отношение, а отношение ссылается на сущность. Отношение ссылается на файлы. Двухстороння связь нужна, так как у одной записи в сущности могут быть такие колонки: file1, file2, file3. Где каждый file* - как отдельная запись в таблице отношений. введите сюда описание изображения

Как orm использую sequelize.


Ответы (1 шт):

Автор решения: Akina

На уровне MySQL это решается элементарно - сначала создаются таблицы (CREATE TABLE), а потом в них добавляются внешние ключи (ALTER TABLE):

CREATE TABLE tab1 (id1 INT PRIMARY KEY, id2 INT);
CREATE TABLE tab2 (id2 INT PRIMARY KEY, id1 INT);
ALTER TABLE tab1 ADD FOREIGN KEY (id2) REFERENCES tab2 (id2);
ALTER TABLE tab2 ADD FOREIGN KEY (id1) REFERENCES tab1 (id1);

Аналогично вставляются записи - сперва INSERT без линков, с NULL в ссылочных полях, а потом UPDATE ссылок.

→ Ссылка