и integer[] ? Или только самому через триггеры проверять?
Заранее спасибо.
Это вы так многие-ко-многим организовать хотите?
Пожалуй только триггер, так как это не классическое решение, а FK с типами integer и array, а вообще foreign key это не очень хорошо, он порождает блокировки...
В глобальном смысле это связка многие ко многим. С другой стороны ситуация следующая - рассмотрим на абстрактном примере. Есть табличка с "классами" (PK class_id). Есть табличка с свойствами этих классов ( PK prop_id. FK на class_id). И есть третья табличка с экземплярами объектов этих классов.( PK obj_id, FK class_id и ещё одной колонкой used_properties integer[] ) Вот её содержимое и хотелось бы валидировать через FK. Сразу уточню, что это упрощённый пример и раскрыть массив на множество строчек не представляется возможным/целесообразным.
Да, пока триггеры на обе таблицы оказались единственным решением.
Вообще, всё довольно просто. Или вы делаете реляцыонное представление -- с отношэниями, нормальными формами, соответственно к нему идут всякие ключи, в т.ч. внешние, и известные вопросы гранулярности блокировок и консистентности вида. Или вы делаете представление в виде nosql с массивами, жсонами и прочим мусором -- но тогда не надо удивляться, что нет ключей, что обновление поля идёт сразу цэликом и вообще плохо выглядит. (Зато думать не надо, да).
Обсуждают сегодня