Как хранить адреса и имена в базе данных?

115
24 августа 2019, 14:50

Мне необходимо хранить в БД адреса и контактные данные людей (телефон, email, ФИО, паспортные данные). Я не очень силен в теории РСУБД, но хочу все сделать красиво. Я неплохо знаю SQL, в принципе для меня нет проблем сделать JOIN на 3 таблицы. Вот какие вопросы передо мной встали и варианты реализации:

1. Имена

Имена будут использоваться в основном для поиска по фамилии либо по ФИО (никому же в голову не придет искать по имени-отчеству). Соответственно, первый вопрос:

1.1) Имеет ли смысл хранить имя в виде 2 колонок (фамилия + имя-отчество) или просто хранить одной колонкой?

1.2) Насколько хорошо работает полнотекстовый поиск по именам?

1.3) Умеет ли MySQL находить по частичным совпадениям (Ковалев ~== Коваленко) или при неправильном нажатии клавиш (Пертов -> Петров)?

2. Адрес

Адрес, в отличие от имени, надо вынести в отдельную таблицу. Первый вопрос есть ли смысл в этом (я понимаю, что нормализация - это гуд), если максимальное количество записей будет около 10 000? Какой выигрыш это даст, если любой запрос с JOIN'ом всегда медленнее чем, без него? Меняться адрес будет очень редко, мне кажется, что можно не выносить в отдельную таблицу. Насчет вертикальной дупликации - у меня как минимум по именам будет дупликация: 2000 Андреев, 2000 Александров же никого не смущают, а что плохого в том, чтобы 2000 Москв иметь?

Т.е. по идее я понимаю, что по логике надо сделать в таблице person поле fk_address_id -> таблицу address:

----------------------------------------------------------------------------
|  id  |     city     |             street          |   house    |    apt  |
+------+--------------+-----------------------------+------------+---------+

По идее можно дальше пойти, вынести например города и улицы им принадлежащие, в отдельные таблицы, но не вижу смысла это делать.

Может есть какие-то устоявшиеся правила, лучшие практики, как это принято делать? Направьте, пожалуйста.

READ ALSO
Как вызвать гугл календарь на своем сайте?

Как вызвать гугл календарь на своем сайте?

я недавно столкнулся проблемой использование гугл календаря на своем сайте через iFrameС начала броузер не разрешал вызвать гугл календаря...

123
Три зависимых списка

Три зависимых списка

Есть рабочий код:

82
После поиска кнопки не работают

После поиска кнопки не работают

У меня возникла одна большаяЕсть список кнопок, есть их переключатели(вперёд и назад по этому списку), есть так же поле поиска, по которому...

112
Как при клике добавить переменную в массив, а при повторном клике ее удалить на JQUERY

Как при клике добавить переменную в массив, а при повторном клике ее удалить на JQUERY

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

137