Если уж говорить о боте, то наверное сейчас надо заняться ботом, который поймет максимальное количество используемых схем адресации. После этого можно будет какие-то выводы делать о целесообразности причесывания при наличии конфликтов между схемами.
Ясно.
По мне – всё костыльно. И то, и то. Тошнит уже от этих схем)) а чем последняя обсуждаемая схема лучше “старо-предложенного” отношения (с ролью house)? На отношение можно всяко-разно еще навесить, а на роль ничего не навесишь…
А, попробуйте забить на этот дебильный пример записи и написать:
Область, район, НП, улица, дом, квартира, ФИО -
Вы не поверите! ДОЙДЁТ!! Вопрос: “по кой” нужно сочинять такие примеры?
На самом деле, то, как писать адрес имеет прямое отношение, потому что по адресной информации кому-то придётся писать алгоритм генерации того самого адреса.
Но есть условие достаточности входной информации. Если информации для генерации представления недостаточно, то никакой алгоритм не выдаст результат. База данных должна содержать всю необходимую информацию, а это уже накладывает ограничения на формат БД.
Грубо говоря, если мы хотим генерить адреса в виде:
квартира-дом, улица, город, кодстраны (или как там у буржуев)
улица, д. дом, кв. квартира, город, страна, индекс (как на сайте)
индекс, город, улица, д. дом, кв. квартира (по старинке)
то генератору надо хотя бы знать что из кусков адреса чем является, чтобы расставить их в нужном порядке, а не просто раскидать оные по уровням отношений.
Грубо говоря между улицей и городом есть районы, а между городом и страной есть еще районы/регионы. Необязательные, но есть.
Фактически, скрипту ничего не надо знать, кроме стартового уровня, включающего дома - улицы/квартала/комплекса. Далее он просто идет по восходящей и собирает имена в строку. Об этом я и говорил с самого начала. Т.е. берем дом, смотрим в какое отношение он включен, и пишем “$имя_отношения$, д.$номер_дома$”, далее смотрим, куда включено наше отношение, и так, пока не дойдем до конца.
Дома могут быть включены более, чем в одно отношение, и это просто обозначает, что для них есть более чем одна адресная строка.
Обратный разбор - от строки к конкретному дому несколько сложнее, но тоже реализуемо. Просто надо будет чуть поработать со строками…
Я неспроста привёл аж 3 схемы нумерации, по которым должно быть ясно, что просто по восходящей или нисходящей адрес не соберёшь, точнее соберёшь, но не все варианты. Поэтому знать, какой элемент какой, всё же бывает нужно, хотя бы основные.
Или вспомнить про сельсоветы, которые, находясь выше по иерархии, присоединяются всегда в скобках и справа, даже если порядок нисходящий.