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