У меня есть таблица 3 таблицы. Таблица версий имеет ссылку на таблицу Project через ProjectID. Тогда таблица списка ссылается на ProjectID (который является внешним ключом) в таблице версий.
Таблица списка имеет «косвенную» ссылку на таблицу проекта
Project Table
---------------
ProjectID
Versions Table
---------------
VersionID
ProjectID (fk to project table) (UNIQUE constraint added)
List Table
--------------
ListID
VersionID (fk to version table)
ProjectID (fk to fk in version table)
В последующем у меня определены 3 модели. И в модели списка вот как я создаю ассоциацию с помощью:
// Create foreign keys
List.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "VersionID"
});
// Create foreign keys
ConsolidatedList.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "ProjectID"
});
*
* ВЫПУСК : Для модели списка, sequilize в поле ProjectID создает ссылку на VersionID (pk) вместо поля ProjectID (fk) в таблице версий! **
Точный запрос, который выполняется с помощью sequilize (см. Жирный шрифт):
Выполнение (по умолчанию) ): СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ List
(ID
INTEGER auto_increment, ProjectID
INTEGER, VersionID
INTEGER, ПЕРВИЧНЫЙ КЛЮЧ (ID
), ИНОСТРАННЫЙ КЛЮЧ (ProjectID
) ССЫЛКИ Versions
( VersionID
) НА УДАЛИТЬ КАСКАД НА ОБНОВЛЕНИИ КАСКАД , ИНОСТРАННЫЙ КЛЮЧ (VersionID
) ССЫЛКИ Versions
(VersionID
) НА УДАЛИТЬ КАСКАД НА ОБНОВЛЕНИИ КАСКАД) ENGINE = InnoDB;