Child pages
  • Многоуровневая система ведения адресации
Skip to end of metadata
Go to start of metadata

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

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

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

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

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

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

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

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


Возможности


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


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

DROP TABLE IF EXISTS `address_levels`;
CREATE TABLE `address_levels` (
  `level` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `level_name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`level`)
) DEFAULT CHARSET=utf8 COMMENT='Address node types';

INSERT INTO `address_levels` VALUES 
(1,'Область'),
(2,'Район'),
(3,'Населенный пункт'),
(4,'Улица'),
(5,'Дом');

DROP TABLE IF EXISTS `address_values`;
CREATE TABLE `address_values` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `level_id` int(11) unsigned NOT NULL DEFAULT '0',
  `value` varchar(100) NOT NULL DEFAULT '',
  `parent_id` int(11) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8 COMMENT='Address nodes';

INSERT INTO `address_values` VALUES 
(19,1,'Черновецкая',0),
(20,1,'Тернопольская',0),
(21,1,'Ивано-Франковская',0),
(22,2,'Кицманский',19),
(23,2,'Заставновский',19),
(24,2,'Путыльский',19),
(25,2,'Вижницкий',19),
(26,2,'Новоселицкий',19),
(27,3,'с. Берегомет',22),
(28,3,'с. Мамаивцы',22),
(29,3,'с. Розтокы',24),
(30,3,'смт. Путыла',24),
(31,3,'г. Выжница',25),
(32,3,'смт. Берегомет',25),
(33,3,'с. Зеленый гай',26),
(34,3,'с. Викно',23),
(35,2,'Косовский',21),
(36,3,'с. Куты',35),
(37,3,'с. Розтокы',35),
(38,2,'Гусятинский',20),
(39,2,'Залищиковский',20),
(40,2,'Лановецкий',20),
(41,3,'с. Викно',38),
(42,3,'с. Оленивка',38),
(43,3,'с. Зеленый гай',39),
(44,3,'с. Оленивка',40),
(45,4,'Шевченко',36),
(46,4,'Стуса',36),
(47,5,'8',46),
(48,5,'10',46),
(49,5,'12',46),
(50,4,'Петрова',30),
(51,5,'23',50);

DROP TABLE IF EXISTS `address_main`;
CREATE TABLE `address_main` (
  `address_id` int(11) unsigned NOT NULL DEFAULT '0',
  `location_id` int(11) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`address_id`)
) COMMENT='Address main';

INSERT INTO `address_main` VALUES
(47,1),
(48,2),
(49,3),
(51,4);


address_levels - Уровни структуры адресов.

address_values - ноды (узлы) адреса.

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


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


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


Отличия

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


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

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

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

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

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

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

  • No labels