В настоящее время я обсуждаю проблему с моей командой разработчиков. Они считают, что пустые поля - плохие новости. Например, если у нас есть таблица сведений о клиентах, в которой хранятся данные для клиентов из разных стран, и каждая страна имеет немного другую конфигурацию адреса - плюс 1-2 дополнительных поля, например. Французская информация о клиенте также может содержать сведения о кодах ввода, а также пол/уровень плюс поля заголовка (madamme и т.д.). У Южной Африки будет номер безопасности. И так далее.
Учитывая, что мы говорим о незначительных отклонениях, моя идея состоит в том, чтобы поместить все поля в таблицу и использовать то, что необходимо для каждой формы.
Мой коллега полагает, что у нас должна быть отдельная таблица с дополнительными данными. Например. customer_info_fr. Но эти швы полностью уничтожают цель комбинированного стола в первую очередь.
Аргумент в том, что пустые поля/столбцы плохие - но я изо всех сил стараюсь найти оправдание в терминах принципов проектирования баз данных для или против этого аргумента и предпочтительных решений.
Другой вариант - это отдельная таблица мини-EAV, в которой хранятся дополнительные данные с полями parent_id, key, val. Или для сериализации дополнительных данных в столбец extra_data в главной таблице customer_data.
Я думаю, что я смущен, потому что то, что я обсуждаю, не покрывается 3NF, и это то, что я обычно использую в качестве ссылки для структурирования данных.
Итак, мой вопрос конкретно: -
Если у вас есть небольшие отклонения в данных для каждой записи (например, 1-2 разных поля), то что лучше всего продолжить?