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 ответов

23 просмотра

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

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

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

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

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

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта