Во-первых, я думаю, что это вопрос моделирования и определения того, что представляет собой отдельный объект. Предположим, у вас есть customersтолько один сингл address. Конечно, вы можете реализовать все в одной таблицеcustomer , но если в будущем вы позволите ему иметь 2 или более адресов, вам нужно будет провести рефакторинг (это не проблема, но принять осознанное решение).
Я также могу вспомнить интересный случай, не упомянутый в других ответах, где может быть полезно разделение таблицы:
Представьте, опять же, у вас есть customersпо одному addressадресу, но на этот раз иметь адрес необязательно. Конечно, вы можете реализовать это как NULLнабор столбцов с возможностью выбора, например ZIP,state,street. Но предположим, что, учитывая, что у вас есть адрес, состояние не является необязательным, а ZIP-файл. Как смоделировать это в одной таблице? Вы можете использовать ограничение для customerтаблицы, но гораздо проще разделить ее в другой таблице и сделать foreign_key NULLable. Таким образом, ваша модель гораздо более четко говорит, что сущность address является необязательной, и что ZIPэто необязательный атрибут этой сущности.