В вопросе MySQL - Условные ограничения внешнего ключа предлагается решение для реализации ассоциации polymorphi c с использованием надтаблицы. Это хорошее решение, но оно не применимо при использовании нескольких ассоциаций polymorphi c в некоторых из рассматриваемых таблиц. Здесь упоминается следующее:
Вы не можете объявить внешний ключ, который ссылается на разные таблицы, в зависимости от значения в другом столбце вашей таблицы комментариев. Это нарушит несколько правил проектирования реляционной базы данных.
и автор утверждает, что метод надтаблицы: ограничения целостности.
Но в руководстве Sequelize предложенный метод для ассоциаций полиморфных c использует поле (commentableType в данном примере) для определения типа модели:
class Comment extends Model {
getCommentable(options) {
if (!this.commentableType) return Promise.resolve(null);
const mixinMethodName = `get${uppercaseFirst(this.commentableType)}`;
return this[mixinMethodName](options);
}
}
Объясните, пожалуйста, какие правила нарушаются и есть ли плохие последствия при использовании метода, предложенного в Sequelize, который легко и применим к нескольким полиморфным c ассоциациям:
https://sequelize.org/master/manual/polymorphic-associations.html#configuring -a-один-ко-многим-полиморфам c -ассоциация