Фамилия, имя и отчество (ФИО)
Данный показатель будет использован в любой информационной среде, где обсуждаются люди, что автоматически присваивает ему особую значимость.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Немного фактов для анализа:
- Всего в России насчитывается около 400 тыс. фамилий. Число основных русских фамилий — около 15 тыс.
- Всего в мире, по данным книги рекордов Гиннеса, выделено около 1 млн имен.
- Точного количества русских имен найти не удалось, но есть основания говорить о том, что оно составляет не более 10 000.
- Самая длинная турецкая фамилия состоит из 43 букв.
- Самая длинная русская фамилия (Христорождественская) состоит из 20 букв. Если мы предположим возможность ее сдвоенности со следующей по длине (Константинопольская, 19 букв [предложена читателем сайта по имени Олег]), то получится 40 символов (с учетом добавления дефиса). Версия существования фамилии Архиневолокоточерепопиндриковская (33 буквы) и т.п. представляется сомнительной по многим причинам.
- Самое длинное в мире имя является «самовыдуманным» и состоит из 223 букв. Вряд ли стоит принимать его во внимание.
- Имена Константин (10) и Александра (10) считаются самыми длинными из распространенных. Но! По данным Яндекс, основанном на анализе учетных записей, самые длинные имена Абдурахмангаджи (15 букв) и Вильгельмина (12 букв).
Таблица (фрагмент основной таблицы людей) максимально нормализованных данных описания ФИО
Наименование | Поле | Примечание | Комментарий |
user_id | I(4) | Код человека | |
F_id | I(3) | Код фамилии | Описание должно соответствовать справочнику |
I_id | I(3) | Код имени | —"— |
O_id | I(3) | Код отчества | —"— |
Именно подобный фрагмент в виде части таблицы людей (нормально) или промежуточной таблицы (максимально) должен включаться в любую базу, где описываются люди. Плюс три очевидных справочника.
Возможная избыточность для каждого человека составит 18 байт (9 — здесь и 9 — в справочниках). При этом понятно, что даже единичное повторное использование имени сразу окупит этот избыток. А доля распространенных имен все равно будет много больше половины. При числе людей большем, чем несколько сотен, начнется активное повторение фамилий. Близкий возраст включаемых лиц однозначно определит идентичность отчеств.
Не будем при этой оценке забывать, что минимально разумные размеры соответствующих полей дают 90 байт.
- Ф С(40)
- И C(23)
- О C(27)
Единственным уточнением будет активно и успешно внедряемое дополнение: пометка об отсутствии отчества. В противном случае поле следовало бы считать ошибочно незаполненным. Идеальным способом решения я считаю заполнение идентификатора значением, максимальным для выбранного размера целочисленного показателя (или наоборот, равным 1). Единственным несущественным недостатком будет потенциальная нужда (не факт, решаемо программно) дополнения справочника отчеств пустым полем для корректной работы систем в ряде случаев.
Справочники
Из предыдущего понятно, что справочников потребуется три: для фамилии, имени и отчества. Все они будут иметь идентичную структуру при разном размере поля наименования.
Таблица Имён
Наименование | Поле | Примечание | Комментарий |
I_id | I(3) | Код имени | |
C_FirstName | C(23) | Наименование имени | Предполагаем двойные имена |
(Таблицы Фамилий и Отчеств будут отличаться только именами полей и размерами.)
Размер поля кода составляет 3 байта, так как 23*8 (16 777 216) существенно превышает разнообразие имен в мире. Наоборот, 2 байта могут быть недостаточны (22*8 = 65 536).
Потенциально такой справочник можно дополнить полем пола. Тогда появится возможность комфортной работы оператора ввода и уменьшится вероятность ошибки. Здесь надо учитывать множественность состояния сохраняемого имени: мужское, женское, общее, неизвестно. Логический тип поля в большинстве случаев недостаточен или требует довольно нетривиального программирования и работы оператора. Но 1 байта хватит для любых нужд.
Все три справочника должны бы разрабатываться и вестись федеральными службами, с их размещением в открытом доступе. Но этого не было, нет, и не факт, что когда-то будет. По крайней мере на сегодня такая информация отсутствует.
Версия без справочников
Перечитывая эту страницу, я осознал, что проговариваемый на занятиях вариант первичного (неправильного) создания таблицы здесь отсутствует, в связи с чем может возникнуть неправильное же понимание.
Ниже приведен фрагмент таблицы людей с явно выделенными полями для ФИО.
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Однако в реальной ситуации никто не будет подключать полный справочник к небольшой информационной системе. Существуют реализации, когда присутствуют два справочника: локальный и глобальный. Но последний подключается только при вводе данных, то есть формирует однозначное пополнение локального. За счет этого снижается нагрузка при повседневной работе и полностью устраняется вероятность ошибочного ввода. На диске занято ещё больше места, но это более чем на порядок меньше ненормализованной базы, и стоимость хранения ничтожна по сравнению с получаемой выгодой.
Усложнение схемы
В заключение хочу сказать, что изложенное выше является классическим вариантом прикладной примитивизации. Всё будет работать фантастически качественно для конечных информационных систем. Но, если задуматься об источниках возникновения имен и не только...
Доступ к этим материалам предоставляется только зарегистрированным пользователям!
Обращаю внимание ещё раз, что все сказанное относилось исключительно к русскому языку. То есть априорно непригодно для многих других стран.