в п.4 сохраняются значения поля GlobalID в новом, уже перепроецированном, классе
вп.5 загрузчик ArcCatalog'а тоже
изменяет значения поля GlobalID (являетсяпервичным ключом для будущего Relationship Class) - и тут вопрос: почему при перепроецировании GlobalID сохраняется, а при загрузке – нет?
При этом GlobalID = уникальный идентификатор в рамках всей БГД. Но даже если я перепроецирую класс в ту же БГД, где находится исходный класс, то легко возникает ситуация, что в одной БГД есть 2 объекта с одинаковыми GlobalID. А это выглядит странно… хотя и может быть удобно в данном конкретном случае для меня в п.6 в таблице сохраняются значения вторичного ключа
но т.к.после п.5 были изменены значения первичного ключа, то восстановить связь между загруженными объектами и записями таблицы становится просто невозможно (первичный ключ не совпадает со вторичным)
Поправьте меня, если я ошибаюсь в своих ожиданиях. Если есть связанные данные и есть «умный» загрузчик – то ожидается, что весь этот ум будет способен перенести весь массив данных, раз они всё равно уже связаны и как раз Загрузчик объектов умеет работать со связанными штуками. Мы тут поразмышляли с коллегами на тему загрузки… было бы логично, чтобы загрузка связанных данных работала со всеми связанными данными (уже ведь имеется в БГД описание связи) и, даже если при этом меняется значение первичного ключа, то тогда аналогично меняется и значение вторичного ключа.
Остается непонятным, была ли (или, возможно, будет?)возможность загружать связанные данные... конструкцию связанных классов/таблиц в БГД создать можно, но далее такие данные можно использовать либо в исходной БГД, либо просто копируя весь класс целиком в новую БГД (в этом случае при копировании связанные классы/таблицы "тянутся" в новое местоназначение)? Агрегировать в одной БГД информацию из разных БГД с такими конструкциями уже становится невозможно... но не всегда есть возможность сразу сделать железобетонную БГД и никогда её больше не менять (зачастую такая ситуация – это некий идеал, к которому мы все стремимся), также может быть ситуация, что пользователи работают в нескольких БГД одинаковой структуры, а в какой-то момент данные из этих БГД хотелось бы собрать в одну общую.
про Загрузчик объектов в
справке указано :
С помощью Загрузчика объектов вы можете загружать данные в классы объектов геометрической сети, в классы объектов, участвующие в отношениях с применением сообщений, или в классы, имеющие объектно-связанные аннотации.Эта фразав рамках работы сArcGIS означает лишь то, что да, мы можем загружать объекты в такую конструкцию связанных классов/таблиц; НОтолько по-отдельности, без учета наличия Relationship Class’а?
Если есть желание также перенести исвязанные данные, то пользователю требуется многоискать решениеили делать всё руками... или писать скрипты/add-in’ы (если получится сделать самому или найти того, кто это сможет сделать).
Про тип данных GlobalID в
справке написано:
Глобальные идентификаторы: типы данных GlobalID и GUID хранят строки наподобие строк записей реестра, состоящие из 36 символов, заключенных в фигурные скобки. Эти строки уникально определяют объект или запись таблицы внутри и вне базы геоданных. В большей степени этот тип данных используется для управления отношениями, особенно в управлении данными, версионном редактировании, обновлениях на изменение и репликациях. Попробовала также решить эту задачу и через Data Interoperability. В принципе, это можно сделать с сохранением значений поля GlobalID везде, где требуется. Но есть одно но… тип таких полей после обработки Data Interoperability становится не globalid, а просто guid. И тут уже теряютсяиные настройки классов/БГД (для уверенности в корректном реплицировании корпоративных БГД нужно поле типа globalid… наверное, и ещё что-то найдется).