Kiedy bezpiecznie jest używać ObjectID jako kluczy w klasie relacji?

14

Zawsze unikałem używania ObjectID przy definiowaniu klas relacji. Rozumiem, że niektóre działania na geobazie zresetują identyfikatory obiektów (takie jak import / eksport). Jednak widzę, że wiele osób z nich korzysta.

Czy jestem po prostu paranoikiem, czy są przypadki, w których można bezpiecznie używać identyfikatorów obiektów podczas definiowania klasy relacji?

Kirk Kuykendall
źródło

Odpowiedzi:

16

Identyfikatory obiektów są obsługiwane tylko przez Kopiuj / Wklej. Żadne narzędzie do importu lub eksportu ich nie utrzymuje. Zasadniczo nie zaleca się używania ObjectID w klasach relacji. Jeśli wszystkie twoje dane są naprawdę statyczne, powinno działać poprawnie, ale zawsze będzie ryzyko podczas importowania lub eksportowania danych.

Lance Shipman
źródło
4

O ile to możliwe, relacje opieram na innych kluczowych polach. Używanie ObjectID sprawiało mi problemy w przeszłości z dokładnych powodów wymienionych przez Lance'a. W projektach, w których dane są przesyłane tam iz powrotem między naszym serwerem SDE a serwerem klienta, użycie ObjectID do powiązania tabel oznacza konieczność wykonywania różnych operacji na tabelach w celu utrzymania relacji.

Nawet jeśli nie planują przenoszenia danych, nadal wolę używać innego pola dla kluczy. Z mojego doświadczenia wynika, że ​​klienci zwykle nie do końca rozumieją konsekwencje swoich działań dla baz danych GIS i często psują rzeczy, nie zdając sobie z tego sprawy. Miałem przypadki, w których klienci przenoszą dane w sposób, który zmienia ObjectID. Moje projekty zazwyczaj wymagają niestandardowego kodu, który jest zgodny z bazą danych, i nie lubię polegać na zrozumieniu systemu przez klientów, aby zapobiec awariom. Dlatego wolę używać innych pól dla kluczy podstawowych i relacji, pól, które mogę kontrolować.

Jeff Berry
źródło