Скорее всего, многие сталкивались с решением подобной задачи — «каталог организаций», «список адресов» и т.д.
Я понимаю, что «как мне нужно, так и правильно», но мне интересно, кто какой использовал подход, каким средствами и в какой форме организовывал хранение подобной информации?
Допустим, объект — «строение». Его характеристики:
— область (это регион, область, край);
— район области;
— улица (это проспект, проезд, улица);
— дом (корпус, строение);
— координаты.
Улицы с одинаковым названием ведь могут быть в разных областях, районах, городах.
Общий список улиц делать, естественно, не вариант.
Получается, надо связать улицы с городом, город — с районом, далее — с областью.
А уже идентификатор улицы_конкретного_города связывать с каким-либо строением.
Я в раздумьях: нужно ли привязывать сам объект к конкретному городу или не обязательно? Если нет, то получается так:
— идентификатор объекта;
— идентификатор улицы конкретного города;
— № объекта (№ дома);
— прочая информация.
Или, может быть, проще сделать список доступных улиц для конкретного города и при добавлении/поиске адреса использовать его в «подсказках» в виде «тега» (как, допустим, здесь на Хабре)?
Какие трудности, сложности были в испробованных вами подходах?
Какие программные решения лучше подходят для таких задач (СУБД). Sphinx тут тоже сможет помочь?
Гуглите слово «КЛАДР». Сколько ни пытались делать упрощенные форматы хранения адресов, все равно приходили к КЛАДРу. Весьма специфический формат, но плюсов все же больше, чем минусов.