Как правильно хранить данные которые могут быть а могут нет, отдельной таблицей или nullable полями в строчке?
Есть заказ. Клиент может выбрать галочку "доставка" и тогда еще выберет город доставки из списка и адрес введет руками. По идее, надо делать отдельную таблицу с полями id заказа, id города и адресом, так?
Но что бы не городить потом лишние запросы или join'ы мне проще прописать nullable поля в сам заказ и не паритья. Есть ли у такого решения явные минусы? Нарушает ли это нормализацию?
Если есть поле булевого типа кроме города и адреса, то кажется формально ухудшает нормализацию. Также это действительно будет так в случае, когда у нескольких заказов / товаров, т.е. строк, есть возможность иметь одну общую доставку.
На самом деле так работают в прошлом распространенные цмс,
но все же они дублируют данные через таблицу поскольку сохраняют адресс а потом предлагают его при следующих покупках этому пользователю, как ранее введенный чтоб не заполнять заного.