Это зависит от того, что вы собираетесь делать с этими полями. Моя склонность в отсутствии дополнительной информации заключалась бы в том, чтобы положить их в один стол.
У вас будут некоторые пуристы, которые говорят, что адрес электронной почты не совпадает с номером телефона, поэтому преступление против природы означает, что он использует одно и то же поле.
Я согласен с этим типом мышления, когда то, что вы делаете с двумя полями, отличается. Например, если кто-то сказал, что иногда это поле содержит номер телефона, а иногда он содержит сумму транзакции, а когда мы вычисляем общий баланс, мы складываем все те, которые являются суммами транзакций, но игнорируют номера телефонов, я бы плакал ,
Но такие рассуждения можно принять до смешных крайностей. На самом деле вопрос не в том, разные ли вещи в реальном мире, но разные ли они для целей нашей системы. Например, я не могу себе представить, что, поскольку иногда адрес представляет собой почтовый ящик, а иногда это уличный адрес, а иногда это номер квартиры и т. Д., Мы должны иметь отдельные поля для каждой из этих вещей, а не просто «адресную строку 1 "и" адресная строка 2 ". Или что у нас должны быть отдельные поля для имени «коричневого человека» по сравнению с именем «блондинки», потому что они выглядят по-другому. У меня было много неприятных разговоров с пользователями, где я пытаюсь объяснить, что в отношении системы что все это «продукт», и пользователь говорит «нет», нет, как вы можете сказать, что мебель такая же, как и канцелярские принадлежности? Но если в системе мы записываем имя, количество на руках и цену , чем меня не интересует различие. Etc и т. д.
Действительно, некоторые из моих самых полезных моментов в разработке программного обеспечения были, когда я понял, что две вещи, которые различны в реальном мире, действительно одинаковы для системы и можно обрабатывать с одной таблицей или одним блоком кода вместо многих. Как и где-то вдоль линии, я выяснил, что у сотрудников, поставщиков и клиентов есть имена, адреса, номера телефонов, d электронной почты. Поэтому теперь вместо того, чтобы иметь все эти поля в таблице employee и все те же поля в таблице поставщиков и все те же поля снова в таблице клиентов, я создаю одно поле, которое я называю «человеком», и помещаю туда все обычные вещи , а затем просто ссылку на него из других таблиц. Поэтому, когда кто-то приходит и говорит, что теперь мы должны обрабатывать иностранные адреса, я меняю одну таблицу вместо трех, и если бы я был умным, то вместо функции адреса был форматирование, а не 3.
В этом случае, что вы собираетесь делать делать с телефонными номерами и адресами электронной почты? Вероятно, в большинстве случаев пользователи могут вводить их, а затем показывать их.Я могу легко представить себе систему, в которой вы даже не сможете проверить, что это такое. Во время ввода данных имеется выпадающее меню для «типа контактной информации», и во время отображения вы показываете тип контакта вместе с контактным значением, вероятно, отсортированным по типу контакта. Если вы отправляете автоматические электронные письма, возможно, вы выберите, где type = 'email'.
Теперь, если вы делаете соединения из этой таблицы в другую таблицу, используя адрес электронной почты в качестве поля объединения, это будет отличаться, потому что тогда половина ваших данных не имеет смысла.
BTW, если вы используете одну таблицу, вам нужен код, чтобы сказать, какой тип контакта это. Я думаю, вы это понимаете. Я предлагаю вам рассмотреть возможность создания справочной таблицы, содержащей коды и их определения, например, создать таблицу contact_type (contact_type_code char (2) первичный ключ, contact_type_description varchar (40)), а не жестко кодировать типы контактов в программе. Или, что еще хуже, укажите описание типа контакта в каждой записи, поэтому иногда он говорит «электронная почта», а иногда «электронная почта» и другие «электронная почта» и, возможно, в других случаях «e-male» или «internet», ,
Извините за длинный бессвязный ответ.
Вы вошли во что-то религиозную войну. Способ понять проблему состоит в том, как данные будут использоваться. Вы всегда ищете «контакт» при соединении с другими таблицами? Или вы хотите связать конкретные типы контактов? –
* Избранные объявления. * –
"Better" - это субъективный термин. Как правило, вы торгуете уровнем нормализации для «простоты использования». У большинства людей есть служебный адрес, домашний адрес и три контактных номера: домашний, рабочий (прямой набор) и мобильный. Это «нормальный» (в отличие от «нормализованного»), чтобы хранить все это в одной таблице. – Strawberry