Описание многоуровневой системы ведения адресации

В данной системе предусмотрено неограниченное количество элементов адресации (страны, регионы, города, улицы).

В зависимости от нужд провайдера можно настроить свое собственное дерево адресации. Например: Страна → Район → Город → Дом.

В системе адресации всегда присутствуют два элемента адресации: конечная точка подключения (bild_id - дом) и родительский элемент геолокации (улица, район и проч.).

Элементы геолокации имеют субпараметры, которые позволяют детализировать их сущность. Например, равноправные элементы геолокации такие как: Улица, Переулок, Бульвар или  Город, Село, ПГТ.

Элементы системы адресов связаны между собой и не подлежат изменению после создания.

Схема адресов

  • Украина (страна)
    • Киевская обл (регион)
      • Киев (город)
        • Хрещатик (улица)
          • 32 (дом)


Возможности


Пользователь (провайдер) сам задает схему адресов. Структура - линейная. Из обязательных уровней только дом (последний уровень, который соединяет новые адреса с уже существующей таблицей builds.


Для работы используются следующие таблицы:

address_levels - Уровни структуры адресов. Пример таблицы:

levellevel_name
1Страна
2Область
3Город
4Улица
5Дом


address_values - ноды (узлы) адреса. (Пример таблицы со значениями, заполнено 5 адресов, 3 дома на улице Хрещатик и 2 дома на улице Шевченко)

idlevel_idparrent_idvalue
110Украина
221Киевская область
332Киев
443Хрещатик
55430
65431
75432
843Шевченко
9581
10582


address_main - связь между деревом адресов и location_id.  

address_idlocation_id
51
62
73
94
105



Шаблон изменения и отображения адреса в веб форме планирую заменить строкой с полным адресом и кнопкой изменения. При нажатии открывается модальное окно с выбором адреса, после закрытия модального окна в форму подставляется location_id выбранного адреса.


Для отображения в документах и шаблонах данные можно получить с помощью user→info() , имя ключей хеша берется из таблицы уровней.


Отличия

В отличии от старой структуры (когда для каждого уровня создается своя таблица), для древовидных адресов недоступны следующие функции:


Нельзя сделать JOIN к другим таблицам (юзерс, интернет и тд)

Нельзя использовать в резулт_формере

Нельзя подключить к users_list

Нельзя подключить к internet_list

Нельзя вывести в виде таблицы

Нет доступа к всему массиву адресов, только по одному.