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