Нужно создать таблицу города и станции метро, как лучше всего это сделать?
Нужно ли создать отдельную таблицу для городов или совместить города и станции метро в одной таблице ?
Как понять когда нужна отдельная таблица ?
Если есть ссылки на эту тему буду рад посмотреть.
Ответы (1 шт):
При продумывании архитектуры БД, необходимо руководствоваться рядом условий.
Например, если есть таблица cities и stations нужно задаться вопросом отношений этих таблиц.
Может ли один город иметь несколько связанных записей в таблице stations ? Конечно может, тогда вопрос обратный, может ли иметь одна станция несколько связанных записей в таблице cities? Однозначно нет. Значит связь между таблицами - hasOne(один ко многим). Значит достаточно в таблице stations добавить колонку city_id. И отдельная таблица не нужна.
А теперь представим, что у нас таблица station_names содержит только имена станций. В таком случае, у нас может быть ситуация, что одно и то же имя может встречаться у нескольких городов. Тогда отношение будет manyToMany(многие ко многим). Вот в этом случае нужна отдельная таблица, содержащая как минимум 2 колонки city_id и station_name_id
Так же есть такой приём как денормализация БД, это когда специально нарушаются нормальные формы БД для удобства хранения данных. Всё зависит от конкретных условий и сложности архитектуры БД.