Я хочу сохранить вложенную информацию в базе данных Postgres, и мне интересно, каков наиболее оптимальный способ сделать это.
У меня есть список автомобилей для аренды, структурированный следующим образом:
[Марка]> [Модель]> [Аренда отдельных автомобилей этой марки и модели], напр .:
[
{
"id": 1,
"name": "Audi",
"models": [
{
"id": 1,
"name": "A1",
"cars": [
{
"id": 1,
"license": "RPY9973",
"mileage": "41053"
},
{
"id": 2,
"license": "RPY3001",
"mileage": "102302"
},
{
"id": 3,
"license": "RPY9852",
"mileage": "10236"
}
]
},
{
"id": 2,
"name": "A3",
"cars": [
{
"id": 1,
"license": "RPY1013",
"mileage": "66952"
},
{
"id": 2,
"license": "RPY3284",
"mileage": "215213"
},
{
"id": 3,
"license": "RPY0126",
"mileage": "19632"
}
]
}
...
]
}
...
]
В настоящее время имеет ограниченный опыт работы с базы данных и хранения массивов, я храню его в таблице «бренды» со следующими столбцами:
идентификатор (целое число) - идентификатор бренда название (текст) - название бренда models (текст) - содержит строковое содержимое моделей и автомобилей внутри них, которые анализируются при чтении
На практике это делает свою работу, однако я хотел бы знать, какой будет наиболее эффективный способ.
Например, должен ли я разделить одну таблицу на три таблицы: «бренды», «модели» и «автомобили» и сделать так, чтобы таблицы ссылались друг на друга (brands.models - это массив уникальных идентификаторов моделей, которые я можно использовать для чтения данных из таблицы 'models', а models.cars будет массивом уникальных идентификаторов автомобилей, которые я мог бы использовать для чтения данных из таблицы 'cars')?