@REDkiy

Как сохранить в базе данных список строк в одном поле?

В БД существует таблица сущностей в качестве первичного ключа которых используется строка (Таблица №1). Также существует таблица (Таблица №2) в которой хранятся сущности, которые должны быть связаны с некоторыми сущностями из Таблицы №1.

Сущностям из Таблицы №2 достаточно иметь список первичных ключей из Таблицы №1, количество ключей может варьироваться в различных пределах.

На данный момент записей в Таблице №2 около 12 миллионов.
Чего бы не хотелось:
  • Создавать связь многие-ко-многим
  • Создавать текстовое поле со списком первичных ключей.

Используется SQLAlchemy, PostgreSQL и Python. Идеальным было бы взять Python-список строк и с минимальными преобразованиями положить и извлечь его из БД.

Какое адекватное решение может быть в таких условиях?
  • Вопрос задан
  • 1473 просмотра
Решения вопроса 1
@o5a
Правильнее будет сделать 3-ю таблицу, связывающую идентификаторы первых 2-х таблиц, чем городить в SQL базе какое-то текстовое или json поле с множеством идентификаторов.

Не совсем понятно условие
Чего бы не хотелось:
Создавать связь многие-ко-многим
, что под этим подразумевалось и почему именно не хотелось. Тем более, что судя по описанию, как раз и требуется связь многие ко многим, судя по
Сущностям из Таблицы №2 достаточно иметь список первичных ключей из Таблицы №1, количество ключей может варьироваться в различных пределах.


В крайнем случае, если нужна только связь 1 ко многим (идентификаторы таблицы 1 не будут дублироваться в таблице 2), можно добавить поле с указанием идентификатора из таблицы 2 в таблицу 1. Меньше работы, но менее универсально.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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