Я использую PostgreSQL для координации крупномасштабного моделирования, которое включает в себя инициализацию различных компонентов моего приложения через массивы целых чисел. В частности, у меня есть понятие «Контроллер», где каждый контроллер требует инициализации переменной количества параметров.Динамическое имя таблицы против столбца массива в статической таблице
У меня есть таблица job
, в которой хранятся controller_id
и внешний ключ controller_parameters
для фактической ссылки на набор требуемых параметров. Моя идея, чтобы начать с было сделать следующее:
Используйте
controller_id
динамически выбрать имя таблицы, из которой, чтобы выбрать параметры инициализации. Каждая из этих таблиц должна иметь столбецcontroller_parameters
, который связывает фактические данные инициализации с исходной таблицей.После того, как мы знаем таблицу, запустить
SELECT * FROM @someController_parameters_table p WHERE p.controller_parameters = controller_parameters LIMIT 1;
Поместите их в пользовательский тип, который имеет поле массив целочисленный должен быть возвращен клиенту.
Основная проблема заключается в том, что у этого есть динамический SQL, который я слышу, не очень хорошо.
Мое предложение состоит в том, чтобы иметь новую таблицу, допустим, controller_parameters
, которая имеет столбцы (controller_id, parameters_id, parameters[])
. В третьем столбце хранятся параметры инициализации для отдельного контроллера и набора параметров.
Плюсами этого дизайна являются то, что мы возвращаемся в статическую землю SQL, что хорошо. Недостатком является то, что когда я генерирую фактические параметры для вставки в таблицу отдельных параметров, я обычно использую кросс-соединение для получения всех перестановок отдельных параметров и вставляю их соответственно в отдельные таблицы. Я лично не знаю, как взять таблицу скрещенных строк и преобразовать ее в int[]
, так что это потенциальный блокпост.
Мысли?
Так array_agg(), как массив(), но вы не должны указывать столбцы? Он просто делает каждый столбец, который отсутствует в разделе Group By? Является ли порядок таким же, как в предложении Order By? – ijustlovemath