Нормализует ли имя человека слишком далеко?

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

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

Update:

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

Ответы

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

Ответ 14

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

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

Ответ 15

Может быть, случай, когда можно связать фамилии замужних/девичья, было бы полезно.
Недавно у меня был случай, когда мне пришлось переименовывать тысячи писем в обмен, потому что кто-то разводился и не хотел, чтобы какие-либо электронные письма указывали на нее как на имя [email protected]

Ответ 16

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

Ответ 17

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

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

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

Ответ 18

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

Ответ 19

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

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