Нормализация имени человека заходит слишком далеко? - PullRequest
14 голосов
/ 23 апреля 2009

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

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

Обновление:

Одним из возможных обоснований этого является генератор случайных имен. Это все, что я мог придумать с моей головы.

Ответы [ 19 ]

53 голосов
/ 23 апреля 2009

Да, это перебор.

Люди не меняют своих имен с Bill на Joe все сразу.

35 голосов
/ 23 апреля 2009

Нормализация базы данных обычно относится к нормализации поля, а не его содержимого. Другими словами, вы бы нормализовали, что в базе данных будет только одно поле имени. Это вообще стоит. Однако содержимое данных не должно быть нормализовано, поскольку оно индивидуально для этого человека - вы не выбираете из списка и не изменяете список в одном месте, чтобы повлиять на всех - это будет ошибка, а не функция.

5 голосов
/ 23 апреля 2009

Как вы нормализуете имя? Не все имена имеют одинаковую структуру. Не все страны или культуры используют одинаковые правила для имен. Имя не обязательно просто имя. У людей есть переменные номера имен. В некоторых странах нет простой пары имя / фамилия. Что, если мое имя окажется именно вашей фамилией, должны ли они считаться одинаковыми в вашей базе данных? Если нет, то вы попадаете в проблему, что фамилия может означать разные вещи в разных странах. В большинстве стран, о которых я знаю, это фамилия. Ваша фамилия такая же, как по крайней мере одна из фамилий ваших родителей. В Исландии это имя вашего отца, за которым следует «сын» или «дочь». Так что одна и та же фамилия будет означать совершенно разные вещи, в зависимости от того, встречаете ли вы ее в Исландии и США.

В некоторых культурах женатое имя брака носит фамилию мужа. В других культурах это совершенно необязательно, или может даже работать наоборот.

Как вы можете это нормализовать? Какую информацию это даст вам? Если вы найдете кого-то в своей базе данных, у которого слово «Смит» является последним словом, составляющим его имя, что это говорит вам? Это может быть не их фамилия. Это может быть только часть фамилии. Это может быть почетным на некотором языке, но который в соответствии с их культурой, следует считать частью имени.

Нормализовать данные можно только в том случае, если они следуют общей структуре.

2 голосов
/ 23 апреля 2009

Да, определенно излишним. Что такое несколько десятков байтов между друзьями?

2 голосов
/ 23 апреля 2009

Может быть, если вы работаете в офисе переписи, это может иметь смысл. В противном случае, смотрите каждый ответ:)

1 голос
/ 23 апреля 2009

Да. Я не могу вспомнить случай, когда преимущества перевешивают проблемы и сложности запросов.

1 голос
/ 23 апреля 2009

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

1 голос
/ 23 апреля 2009

Нет, но вы можете захотеть нормализовать каноническую запись для клиента (поэтому вы не получите 5 разных записей для 'Bloggs & Co.' в своей базе данных. Это проблема очистки данных, которая часто кусается в MIS проекты.

1 голос
/ 09 февраля 2015

Если вам нужно было выполнять запросы, основанные на крошечных именах, я мог бы увидеть необходимость нормализации имен. например при поиске «Бетти» могут потребоваться результаты поиска «Бетти», «Бет» и «Элизабет»

1 голос
/ 23 апреля 2009

Я бы сказал, да, в 95% + случаев дело зашло слишком далеко.

...