Отношение один к одному или поле NULL для необязательного столбца?

Я работаю над дизайном базы данных и хотел бы хранить адреса пользователей. Примите во внимание следующее: во многих случаях, когда вы регистрируете свой адрес на веб-сайте, появляются "адресная строка 1" и "адресная строка 2".

Поскольку "адресная строка 2" является необязательной, каков наилучший способ ее хранения?

Желаете ли вы использовать одну таблицу и разрешить 'адресная строка 2' быть NULL, или вы хотите создать отдельную таблицу с отношением один к одному?

К вашему сведению, используя MySQL для моей базы данных.

2 ответа

Я согласен с Питером Гиркенсом об использовании основного стола.

Тем не менее, если ваш дизайн требует мета-информации об этой дополнительной второй строке, такой как метка имени или тип второй строки, такой как перечисление "floornum","appartmentnum","buildingnum", это может быть случай для использования второй таблицы.

.. но в противном случае, хранить в основной таблице. И если вы это сделаете, мой ответ будет использовать NULL значение. Это стандартное значение по умолчанию, когда абсолютно ничего не хранится

Ничего из вышеперечисленного - необнуляемое поле, которое по умолчанию равно одному пробелу. Там, где вы можете, избегайте головной боли, связанной с необходимостью объединять ваши обнуляемые поля. чтобы получить интуитивно понятный логический результат

Настоящая причина, по которой неправильно создавать отдельную таблицу, в данном случае, состоит в том, что в метке адреса есть место только для двух строк адреса. Поэтому сохраните две адресные строки в основной таблице.

В других обстоятельствах максимальное число возможных значений действительно неизвестно, поэтому отдельная таблица (по крайней мере, теоретически, могут иметь место основные соображения практичности) верна.

Обновление: обратите внимание, что в этом примере значение всех пробелов уже является специальным значением, которое должно обрабатываться особым образом - пропуском на печатной адресной этикетке (или другом носителе отображения). Добавление дополнительного специального значения, NULL, с идентичной семантикой и обработкой на печатной этикетке является ненужным и ненужным.

Другие вопросы по тегам