@hrvasiliy

Как правильно спроектировать БД?

Имеется 4 таблицы, в каждой из которых хранится вид транспорта (автомобиль, метро, автобус, катер) каждая из таблиц имеет первичный ключ. Есть 5-я таблица, которая содержит данные о разных параметрах транспорта, помимо того, какой из 4-х был использован. Подумал, что можно сделать таблицу со следующими полями: user_id, auto_id, metro_id, bus_id, boat_id, но проблема заключается в том, что человек мог использовать не все виды транспорта за 1 день, соответственно половина полей могут быть пусты. Еще 1 вариант сделать 5-ю таблицу в виде: user_id, transport_id. Но в данном случае могут быть повторения первичных ключей (то есть транспорт разный, а transport_id одинаковый будет).

Как правильно реализовать данную структуру данных?
  • Вопрос задан
  • 619 просмотров
Решения вопроса 1
zo0m
@zo0m
full stack developer
user_id | transport_type | transport_id

transport_type - будет указывать в какой таблице искать transport_id, можно назвать transport_table и писать сразу имя таблицы, но это не кошерно)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
ПользовательТранспорта:
   имя
   транспорт пользователя = ManyToMany(ТипТранспорта)
...

ТипТранспорта
    название
...
Ответ написан
@nozzy
Symfony, Laravel, SQL
Можно сделать на 2 таблицах.
Таблица user_transport:
user_id | transport_id

Таблица transport:
id | param | value

1 | transport_type | bus
1 | name_param1 | value1
1 | name_param2 | value2
и тд
2 | transport_type | metro
2 | name_param1 | value1
2 | name_param2 | value2
и тд
Ответ написан
Ваш ответ на вопрос

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

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