Size: a a a

pgsql – PostgreSQL

2021 July 05

AS

Alexey Smirnov in pgsql – PostgreSQL
Но если у вас таблица терминов почти всегда будет фильтроваться по языку - лучше включить язык в индекс
источник

AS

Alexey Smirnov in pgsql – PostgreSQL
Это может быть id языка
источник

BN

Bekzod Norkulov in pgsql – PostgreSQL
понятно, интересная схема, спасибо большое!
источник

BN

Bekzod Norkulov in pgsql – PostgreSQL
и еще не могли бы подсказать парочку хороших учебников ? )
источник

Ю

Юрий Шапоренко... in pgsql – PostgreSQL
Господа, а есть какой-нибудь экспортер базы ФИАСа в Postgres с получением очередных его обновлений?
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
> Расплатой будет жуткое дублирование, но это приемлемая (для моих кейсов) плата.

Для этого придумали 6НФ
источник

AS

Alexey Smirnov in pgsql – PostgreSQL
Знаете, посмотрел оглавления нескольких... И там нет про multilantuage db design. Видимо, статьи в интернете. Может быть dmbok, но это оверкил
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Это совершенно обычный (без каких-либо особенностей) случай нормализации, зачем его в учебнике отдельно описывать (разве что авторы выберут его в качестве примера)?
источник

MC

Max Chistyakov in pgsql – PostgreSQL
спасибо за ответ!
Подвисает выполнение функции именно в период между started и completed. Возможно, это просто совпадение, других зацепок пока нет
источник

SK

Sergei Komarov in pgsql – PostgreSQL
Подскажите, как в проверить что поле которе я забрал является праймери кей?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
посмотреть описание таблицы
источник

AS

Alexey Smirnov in pgsql – PostgreSQL
С точки зрения денормализации да, а с точки зрения проблемы локализации - это довольно типичный кейс, который обычно включает в себя языки, единицы измерения, календари с праздниками, время, валюты и трансформации между ними. Было бы удобно иметь весь паттерн в одном месте и не изобретать велосипед каждый раз.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> С точки зрения денормализации

Где я написал "денормализации"?!

> это довольно типичный кейс

Который решается тем же типичным методом.

> Было бы удобно иметь весь паттерн в одном месте и не изобретать велосипед каждый раз.

Может быть, ещё было бы удобно иметь в одном месте результаты сложения всех возможных пар натуральных чисел (до N), например? Ну, чтобы не складывать каждый раз? ;) Нет, ну в самом деле...
источник

D

Dr.Death in pgsql – PostgreSQL
Добры день. Подскажите как правильно сделать CONSTRAINT EXCLUDE USING gist

Чтоб проверял пересечение массивов, но пустые массивы считал за "любое значение"

Для пробы сделал нечто

CREATE OR REPLACE FUNCTION intersect_array_with_empty(a1 int[], a2 int[])
 RETURNS BOOLEAN AS $$
 SELECT cardinality(a1) = 0 OR cardinality(a2) = 0 OR a1 && a2;
$$ LANGUAGE SQL IMMUTABLE;

DROP OPERATOR &&?(int[], int[]);

CREATE OPERATOR &&? (
 LEFTARG = int[],
 RIGHTARG = int[],
 PROCEDURE = intersect_array_with_empty
);

select '{}'::int[] &&? '{}'::int[];

select(intersect_array_with_empty('{}'::int[], '{}'::int[]));

в примитивном виде работает, ограничение не работает

ALTER TABLE t
ADD CONSTRAINT t_test
EXCLUDE USING gist (a WITH &&, b WITH &&?, c WITH &&?, daterange(d1, d2, '[]') WITH &&);

[42809] ОШИБКА: оператор &&?(integer[],integer[]) не коммутативен Подробности: В ограничениях-исключениях могут использоваться только коммутативные операторы.
источник

b

batyrmastyr in pgsql – PostgreSQL
Видимо прописать COMMUTATOR = &&?
источник

D

Dr.Death in pgsql – PostgreSQL
CREATE OPERATOR &&? (
 LEFTARG = int[],
 RIGHTARG = int[],
 PROCEDURE = intersect_array_with_empty,
 COMMUTATOR = &&
);

таже ошибка
источник

b

batyrmastyr in pgsql – PostgreSQL
То есть COMMUTATOR = OPERATOR(&&?) ,
источник

D

Dr.Death in pgsql – PostgreSQL
[42809] ОШИБКА: оператор "&&?(integer[],integer[])" не входит в семейство операторов "gist__int_ops"
Подробности: Оператор исключения для ограничения должен относиться к классу операторов индекса.
источник

AS

Alexey Smirnov in pgsql – PostgreSQL
Прошу прощения, опечатался. У меня инженерный подход) Хочу иметь таблицу объемов красных резиновых шаров. Утрировать не стоит
источник

D

Dr.Death in pgsql – PostgreSQL
ALTER OPERATOR FAMILY gist__int_ops USING gist ADD
OPERATOR 100 &&? (int[], int[]);

нашел, спасибо
источник