Нужно создать таблицу города и станции метро, как лучше всего это сделать?

Нужно ли создать отдельную таблицу для городов или совместить города и станции метро в одной таблице ?

Как понять когда нужна отдельная таблица ?

Если есть ссылки на эту тему буду рад посмотреть.


Ответы (1 шт):

Автор решения: radar4ick

При продумывании архитектуры БД, необходимо руководствоваться рядом условий.

Например, если есть таблица cities и stations нужно задаться вопросом отношений этих таблиц. Может ли один город иметь несколько связанных записей в таблице stations ? Конечно может, тогда вопрос обратный, может ли иметь одна станция несколько связанных записей в таблице cities? Однозначно нет. Значит связь между таблицами - hasOne(один ко многим). Значит достаточно в таблице stations добавить колонку city_id. И отдельная таблица не нужна.

А теперь представим, что у нас таблица station_names содержит только имена станций. В таком случае, у нас может быть ситуация, что одно и то же имя может встречаться у нескольких городов. Тогда отношение будет manyToMany(многие ко многим). Вот в этом случае нужна отдельная таблица, содержащая как минимум 2 колонки city_id и station_name_id

Так же есть такой приём как денормализация БД, это когда специально нарушаются нормальные формы БД для удобства хранения данных. Всё зависит от конкретных условий и сложности архитектуры БД.

→ Ссылка