0
Answered

ФИАСовский идентификатор объекта адреса.

Иван Сергеев 2 weeks ago in Подсказки • updated by Антон 2 weeks ago 12

Объясните, пожалуйста, почему объекты адреса ссылаются на поле AOGUID фиасовской структуры, а не на уникальное поле AOID?

справочник: адреса

Answer

Answer

Точнее сказать, что AOID может меняться при обновлении.

В ФИАС в одной таблице лежат объекты (адреса) и их версии. Уникальный идентификатор адреса — AOGUID. Уникальный идентификатор версии адреса — AOID. Версии создаются при каждом изменении адреса.

Соответственно, более-менее стабильным идентификатором адреса является именно AOGUID. Его и возвращает «Дадата».

GOOD, I'M SATISFIED

Большое спасибо, все разъяснили, помогли принять правильное решение!

Satisfaction mark by Иван Сергеев 2 weeks ago
Under review

Поле AOID меняется при каждом обновлении, а AOGUID нет. И AOGUID тоже уникальный идентификатор адреса.

Уточните, пожалуйста, зачем нужен AOID?

Валерия, я не знал что AOID каждый раз меняется при обновлении (это точная информация?). AOGUID не уникален, так как имеются объекты с одинаковым AOGUID но с разными LIVESTATUS и NEXT и PREV идентификаторами.

Answer

Точнее сказать, что AOID может меняться при обновлении.

В ФИАС в одной таблице лежат объекты (адреса) и их версии. Уникальный идентификатор адреса — AOGUID. Уникальный идентификатор версии адреса — AOID. Версии создаются при каждом изменении адреса.

Соответственно, более-менее стабильным идентификатором адреса является именно AOGUID. Его и возвращает «Дадата».

Можно еще один вопрос в догонку, Почему house_fias_id содержит не глобальный идентификатор дома (по аналогии с вышеперечисленным), а идентификатор записи дома?  

house_fias_id содержит HOUSEGUID. Это как раз глобальный идентификатор дома. Идентификатор записи дома (версии) — это HOUSEID. Его «Дадата» не возвращает.

Хорошо, тогда вот например дом который содержит две записи с глобальным идентификатором "2ba08204-31de-4827-8291-38da4780a3e1". Возвращая одну запись, вы какую имеете ввиду? с идентификатором записи = "2ba08204-31de-4827-8291-38da4780a3e1" или = "f0c30245-602b-4bb3-bd95-810ed181de2c" и как понять это в логике?


«Дадата» всегда возвращает актуальную версию адресного объекта (она одна). Для данного дома это запись с HOUSEID = f0c30245-602b-4bb3-bd95-810ed181de2c

В БД ФИАС актуальную версию дома можно отличить от прочих по значению ENDDATE > now()

Спасибо!

Я правильно понимаю, что актуальную запись дома надо определять по Уникальному глобальному идентификатору и ENDDATE > now() которая хранится в БД фиас? Я правильно понимаю, что в БД не может быть две и более записи удовлетворяющим этому условию?

Да, в таблице ФИАС HOUSE сочетание HOUSEGUID + (ENDDATE > now()) теоретически даёт уникальность. Две таких записи быть не должно. Но на практике это невозможно гарантировать, потому что в DBF нет constraints, и на уровне БД никто уникальность не проверяет (если где-то она и проверяется в оригинальных БД налоговой, мы этого не знаем).