172 похожих чатов

Есть структура данных, которая на стороне бэкэнда выглядит как (BIGINT[],

BIGINT[][]). Причём все BIGINT это FK в БД. Сама последовательность кортежа не важна, но порядок значений внутри массивов важен. В первом массиве элементы уникальные, во втором могут повторяться (если быть точным, то одинаковые лежат рядом (и по гор. и по вер.) и образуют прямоугольники, которые складываются в один большой). Никак не могу продумать структуру таблиц, которая позволит мне и сохранить позиции, и сами значения. Пытаюсь избежать JSONB и сделать использование FK. Пока что имею это:
CREATE TABLE array1 (
id BIGINT NOT NULL,
channel BIGINT NOT NULL,
original TIMESTAMP NOT NULL,
position SMALLINT NOT NULL,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
PRIMARY KEY (channel, original, position),
FOREIGN KEY (id) REFERENCES files (id),
FOREIGN KEY (channel, original) REFERENCES messages (channel, posted)
)

CREATE TABLE array2 (
id BIGINT NOT NULL,
channel BIGINT NOT NULL,
original TIMESTAMP NOT NULL,
x SMALLINT[2] NOT NULL, -- Начало и конец по горизонтали слева направо
y SMALLINT[2] NOT NULL, -- Начало и конец по вертикали сверху вниз
enabled BOOLEAN NOT NULL DEFAULT TRUE,
PRIMARY KEY (channel, original, x, y),
FOREIGN KEY (id) REFERENCES files (id),
FOREIGN KEY (channel, original) REFERENCES messages (channel, posted)
)
Как я буду преобразовывать таблицу в матрицу, пока что предпочитаю не задумываться. Но есть ли способ как-нибудь улучшить что ли? (Ответ "не использовать PSQL" уже был.)

7 ответов

47 просмотров

Переведите на русский

Konstantin Zaitsev
Переведите на русский

Я пытаюсь сделать упорядоченные прикрепления в виде матрицы. И никак не могу придумать в каком формате их хранить. Каждая картинка может быть прикреплена только 1 раз к 1 сообщению. И при этом сами картинки должны лежать в виде прямоугольника из прямоугольников.

Марсель Габдрахманов
не храните картинки в базе, ссылку про на файлообм...

На S3. В базе я только их упорядоченность и к какому сообщению прикреплены храню.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта