Answer
ArcGIS Desktop products require that both standalone and attribute tables have an ObjectID field, which contains a unique, long integer to identify each record. This ID is managed by ESRI software cannot be changed manually.
Shapefiles, geodatabase feature classes, and standalone tables handle the need for an ObjectID differently.
- In a shapefile, the 'FID' field contains the ObjectID, and the values start at zero.
- In a geodatabase feature class or standalone table within a geodatabase, the 'OBJECTID' field contains the ObjectID, and the values start at one.
- In a standalone dBase table, the 'OID' field contains the ObjectID, and the values start at zero.
The different ObjectID fields function differently when the data is edited through ArcGIS Desktop:
- If a record from a shapefile is deleted, the FIDs are renumbered so that they start from 0 and increase sequentially. There is no gap in numbering.
- If a record is deleted from a geodatabase feature class or geodatabase table, the OBJECTIDs are not renumbered, and the gap in the list remains.
- If a record is deleted from a dBase table, the OIDs are renumbered starting from 0. There is no gap in numbering.
Data conversion causes the ObjectID to be rewritten.
- When a geodatabase feature class is exported or converted to shapefile format, or when a geodatabase table is exported to dBase format, the records are renumbered sequentially starting at 0 in the output shapefile or table.
- When a geodatabase feature class is exported or converted to a new geodatabase feature class, or when a geodatabase table is exported or converted to a new geodatabase table, the records are renumbered sequentially starting at 1 in the output feature class or table.
It is important to be aware of these behaviors when selecting fields for joining or relating tables. If a shapefile were to be joined to a feature class using the FID and OBJECTID fields, the shapefile record with FID = 0 would not be matched to a record in the feature class, as there is no record in a feature class with OBJECTID = 0.