Насколько надежен метод ассоциации polymorphi c, предложенный в руководстве Sequelize? - PullRequest
0 голосов
/ 16 июня 2020

В вопросе 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 -ассоциация

...