хранение 2-мерного массива в БД
Народ всем привет, подскажите плиз кто знает как хранить в БД данные которые находятся в двумерном массиве, вот пример
++++++++
+@@@@ +
+@@@@ +
+$$$$$ +
+&&&-- +
+&&&***+
+&&&***+
++++++++
это типо грузовик с грузами разного вида. Класс хранящий этот массив представляет
public class FullTruck {
private String nameTruck;
private List<String> nameParcels;
private char[][] parcels;
}
Ответы (3 шт):
Если по уму, то надо от строк в БД уходить. Делайте таблицу с полями
ID int,
X int,
Y int.
TypeId int reference dbo.CargoTypes(Id)
Вторая таблица с типами, где каждому типу соответствует представление. В данном случае символ.
ID int,
View varchar
PostgreSQL позволяет определять столбцы таблицы как многомерные массивы переменной длины. Элементами массивов могут быть любые встроенные или определённые пользователями базовые типы, перечисления, составные типы, типы-диапазоны или домены.
Вы можете создать таблицу с помощью такого запроса:
CREATE TABLE full_truck (
name_truck varchar,
name_parcels varchar[],
parcels char[][]
);
Затем вы можете добавить в эту таблицу данные следующим образом:
INSERT INTO full_truck(name_truck, name_parcels, parcels) VALUES
('Truck', '{"Parcels1", "Pracels2"}', '{{"+","+","+","+","+","+","+","+"},{"+","@","@","@","@"," "," ","+"}}');
За более подробной информацией обращайтесь к документации PostgreSQL
- В случае, если есть необходимость прикладного использования данных массива (поиск, аналитика, изменение и т.д.), то нужно организовывать хранение в таблицах (отдельная таблица для грузов, и отдельная - состава этого груза. При этом можно будет улучшать такое решение до бесконечности - добавить ссылочную целостность между таблицами, типы грузов можно реализовать словарем, индексировать колонки для ускорения поиска и т.д.
- В случае если никаких требований по разбору к "внутрянке" данных нет (например, данные о грузах нужно просто сохранить временно и передать как есть дальше в виде payload) - то можно просто хранить в строковом поле сериализованную строку в формате JSON например. Всякие "колдунства" с ссылочной целостностью, первичными ключами здесь будут лишними
- Еще можно создать поле с типом JSON\JSONB и туда складывать сериализованный в JSON объект. К таким полям можно даже SQL запросы по данным внутри JSON делать. Это как некий гибрид первых двух решений