У нас есть команда, которая разрабатывает таблицы и отношения для разработчиков программного обеспечения. В нашей организации они достаточно строги в отношении обеспечения нормализации 3NF - что, честно говоря, я согласен с учетом размера нашей организации и того, как меняются потребности или наши клиенты с течением времени. Есть только одна область, в которой мне не совсем понятны причины их дизайнерского решения: адреса.
Хотя в основном это касается адресов в Соединенных Штатах, я думаю, что это может относиться к любой стране, которая делает это. Каждый фрагмент адреса получает свой собственный столбец в таблице адресов. Например, возьмите этот мрачный американский адрес:
Attn: Jane Doe
485 1/2 N Smith St SW, APT 300B
Chicago, IL 11111-2222
Это будет разделено на базу данных следующим образом:
- Улица номер: 485
- Фракция улицы: 1/2
- Улица направленная: N (север)
- Название улицы: Смит
- Тип улицы: ST (Улица)
- Улица пост-направленная: юго-запад (юго-запад)
- Город: Чикаго
- Штат: Иллинойс (Иллинойс)
- Почтовый индекс: 11111
- Почтовый индекс: 2222
- Страна (предполагается, что США)
- Внимание: Джейн Доу
- PO Box: NULL
- Тип жилища: APT (Квартира)
- Номер жилища: 300B
И было бы несколько других столбцов, связанных с сельскими маршрутами и контрактными маршрутами. Кроме того, в нашем конкретном приложении, скорее всего, будет несколько международных адресов. Разработчики данных сказали, что добавят столбцы, специфичные для международных адресов, которые будут обычными полями строки 1, строки 2.
Сначала я думал, что это был путь за бортом. Исследования в Интернете неоднократно относятся к использованию адресной строки 1, 2, 3 и, возможно, 4, а затем к разделению города, региона и почтового индекса. У нас есть один вариант использования для нашего нового приложения, где такая гранулярность выгодна. Мы должны подтвердить, что пользователь не создает дублирующую компанию, и проверка адреса является одной из проверок. Мы можем заставить его работать с адресной строкой 1 и 2, но это будет сложнее.
Что касается нашего конкретного приложения, нам нужно хранить несколько видов адресов для предприятий и людей (физические, почтовые, отгрузочные и т. Д.). Мы могли бы нужно создать для печати писем, но это требование не обсуждается до сих пор.
Некоторые другие вещи, которые приложения в нашей организации должны поддерживать:
- Аудит (с полными таблицами истории)
- Печать почтовых этикеток
- Генерация печатных форм
- Отчетность (для национальных и региональных органов власти)
Хотя наше приложение может делать не все, что делает любое другое приложение, разделение адресов на несколько компонентов является корпоративным стандартом, в котором я работаю. Независимо от того, выиграет ли от этого наше приложение, мы вынуждены это сделать.
Полу связанный вопрос StackOverflow: где находится хороший анализатор адресов, который был закрыт, но иллюстрирует, насколько сложными могут быть парсинги адресов.
Для того, чтобы я лучше понял их дизайнерское решение и продал нашему клиенту идею ...
Какие проблемы решаются путем разделения адреса улицы на отдельные столбцы?
Бонусные баллы для тех, кто внедрил подобную систему, потому что они столкнулись с проблемами.