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

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

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

Обновление:

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

Ответы [ 19 ]

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

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

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

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

И если вы думаете, что у вас есть полный список имен, подумайте еще раз. Я работаю со списком из более чем 200 тысяч уникальных имен, и я предполагаю, что он составляет 99,9% населения США. Но это .1% = много людей. И не забывайте иностранные имена и орфографические ошибки ...

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

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

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

Я согласен с общим ответом, вы бы этого не сделали.

Одна вещь приходит на ум, хотя, сжатие. Если у вас миллиард человек, и вы обнаружили, что 60% имен были взяты из 5 очень распространенных имен, вы можете использовать некоторые хитрые манипуляции с битами, чтобы значительно уменьшить размер. Это также потребует очень индивидуального программного обеспечения базы данных.

Но это не для нормализации, просто для сжатия.

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

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

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

В некоторых случаях было бы полезно связать женатые / девичьи имена.
Недавно был случай, когда мне пришлось переименовывать тысячи писем в обмен, потому что кто-то развелся и не хотел, чтобы какие-либо письма указывали ее как замужнее_имение@company.com

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

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

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

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

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

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

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

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

...