Мы используем полиморфные ассоциации в нашем приложении. Мы столкнулись с классической проблемой: мы столкнулись с недопустимой ссылкой на внешний ключ, и мы не можем создать ограничение внешнего ключа, потому что это полиморфная ассоциация.
Тем не менее, я много сделал для этого. Я знаю недостатки использования полиморфных ассоциаций и повышения. Но я нашел то, что кажется достойным решением:
Это хорошо, потому что вы получаете лучшее из обоих миров. Меня беспокоит дублирование данных. У меня недостаточно глубокое знание postgresql, чтобы полностью понять стоимость этого решения.
Каковы ваши мысли? Следует ли избежать этого решения? Или это хорошее решение?
Единственной альтернативой, на мой взгляд, является создание внешнего ключа для каждого типа ассоциации. Но тогда вы сталкиваетесь с проверкой того, что существует только одна ассоциация. Это ситуация "забрать ваш яд". Полиморфные ассоциации четко описывают намерение, а также делают этот сценарий невозможным. На мой взгляд, это самое важное. Ограничение внешнего ключа базы данных - это заглавная функция, и изменение "намерения" работать с ограничениями базы данных кажется мне неправильным. Вот почему я хотел бы использовать вышеупомянутое решение, предполагая, что с ним не следует воодушевлять.