test2_selector = 1 (это - тоже фича).
Как на такую колонку сделать FK (я точно знаю что будут ссылки только в случае если test2_selector = 1)?..
Вы же знаете, наверное, что такие "фичи" в теории нормализации называются "ошибки проектирования"? ;) Поэтому создать такой FK нельзя (в т.ч. и по ISO SQL), и Вас ждут триггеры.
на самом деле - нет. Это, считай, сабклассинг и пг позволяет это через наследование
На самом деле — [ещё как] да. Почитайте, что думает Дейт про этот Ваш "сабклассинг", например. Ну или покажите мне его в теории нормализации. А вот что думают разработчики и пользователи PostgreSQL про наследование: https://wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_table_inheritance
Догадайтесь почему я это пытался сделать на ФК, а не наследованием
Даже если это попытка сделать что-то вроде "сабклассинга", то, по моему мнению: 1. Это не лучший подход (но идеального всё равно нет). 2. Триггеры там где-то всё равно появятся (для реализации части ограничений).
1) Посоветуйте что лучше на ваш взгляд. 2) Очень не хотелось-бы проще вообще тогда не делать эту связь и реализовать все силами приложения, но это еще более архитектурно неверно.
Мы тут это с кем-то когда-то обсуждали, но я не смог сходу найти. ;( Вот что-то на эту тему: https://t.me/pgsql/79474 (но, по-моему, было и куда более подробное обсуждение).
Обсуждают сегодня