У нас є команда, яка розробляє таблиці та відносини для розробників програмного забезпечення. У нашій організації вони досить суворо ставляться до забезпечення нормалізації 3NF - що, якщо чесно, я згоден з огляду на розмір нашої організації та те, як потреби чи клієнти змінюються з часом. Є лише одна сфера, яка мені не зрозуміла щодо причин їх дизайнерського рішення: адреси.
Хоча це в основному зосереджено на адресах у Сполучених Штатах, я думаю, що це може стосуватися будь-якої країни, яка робить це. Кожен фрагмент адреси отримує свій стовпець у таблиці адрес. Наприклад, візьміть цю загальну адресу в США:
Attn: Jane Doe
485 1/2 N Smith St SW, APT 300B
Chicago, IL 11111-2222
Це розділиться в базі даних так:
- Номер вулиці: 485
- Вулична частка: 1/2
- Напрямок вулиці: N (північ)
- Назва вулиці: Smith
- Тип вулиці: ST (Вулиця)
- Вулиця післянаправлення: SW (південний захід)
- Місто: Чикаго
- Штат: IL (Іллінойс)
- Поштовий індекс: 11111
- Код поштового індексу: 2222
- Країна (передбачається, що США)
- Увага: Джейн До
- Поштова скринька: NULL
- Тип житла: APT (Квартира)
- Номер житла: 300В
І ще було б кілька інших стовпців, пов’язаних із сільськими маршрутами та контрактними маршрутами. Крім того, наш конкретний додаток, ймовірно, має в ньому кілька міжнародних адрес. Моделери даних сказали, що вони додадуть стовпці, специфічні для міжнародних адрес, які будуть звичайними полями рядка 1, рядка 2.
Спочатку я подумав, що це БУДЬ за бортом. Дослідження в Інтернеті неодноразово стосується використання адресних рядків 1, 2, 3 та, можливо, 4, а потім розділення міста, регіону та поштового індексу. У нас є один випадок використання для нашої нової програми, коли ця деталізація є вигідною. Ми повинні підтвердити, що користувач не створює дубліката бізнесу, і перевірка адреси є однією з перевірок. Ми можемо змусити його працювати з адресними рядками 1 і 2, але це буде складніше.
Що стосується нашого конкретного додатка, нам потрібно зберігати кілька типів адрес для підприємств та людей (фізичні, поштові відправлення, доставка тощо). Ми могли б потрібно створити для друку листів, але ця вимога не обговорюється до цих пір.
Ще деякі додатки, які повинні підтримувати наші організації:
- Аудит (з повними таблицями історії)
- Друк поштових етикеток
- Формування друкованих форм
- Звітність (для національних та регіональних урядів)
Хоча наша програма може не робити все, що робить кожна інша програма, розділення адрес на декілька компонентів - це стандарт підприємства, де я працюю. Незалежно від того, чи отримала б наша користь від цього, ми змушені це робити.
Напівзалежне питання StackOverflow: Де хороший аналізатор адрес, який був закритий, але ілюструє, наскільки складним може бути розбір адрес.
Для того, щоб я краще зрозумів їхнє дизайнерське рішення та продав нашого клієнта за ідеєю ...
Які проблеми вирішуються шляхом поділу адреси вулиці на окремі стовпці?
Бонусні бали для кожного, хто реалізував подібну систему, тому що у них виникли проблеми.