Define fields in tables

Fields are the components that provide structure for a table. You can't have a table without fields. For instance, you can create an empty table that has fields defined but no rows (records).

In databases, fields are used to maintain relationships between tables. This is done by creating matching fields in two or more tables. For example, if you stored a table named toy_store in a database and you also stored a staff table to track the employees in each store, you would create a common field between the two tables that would be populated with, for instance, a store ID. The store ID value for a specific toy store would be the same in both tables.

Below, a STORE_ID field has been added to the toy_store table:

The toy_store table with the store ID field.
The toy_store table with the STORE_ID field is shown.

The toy_store table is linked to an employee table by the store ID. The table below shows three employees of The Play House:

Employee table
The employee table is linked to the toy_store table by the STORE_ID field.

Certain fields are also used to maintain relationships between tables and their attribute indexes.

Fields in a table store the same category of data in the same data type. For example, if you have a CUSTOMER_NAME field in a table of customers, the entries for this field are all customer names and are stored as text. You wouldn't mix the entries; that is, you wouldn't put a customer name in this field for one record and a product name in the same field for another record.

When you create a table or add fields to an existing table, you define the data type used to store the data in each field. In some cases, you also specify the length of the field.

Field names

Field names are the names you give to the columns in a table. The names should indicate what data is contained in each column. For example, when you create a feature class in ArcGIS, the table is prepopulated with an ObjectID field and a shape field. The ObjectID field contains the unique ID number for each object in the feature class. The shape field defines the type of shape stored in the feature class: point, line, polygon, multipoint, or multipatch.

You can also use set phrases to indicate the type of column. For example, if you create a separate unique ID on a table that you will use for indexing purposes, you might name the field ID_UK, with UK indicating this is a unique key.

Field names in the same table must be unique; for instance, you can't have two fields with the name ObjectID. Field names must also start with a letter and not contain spaces or reserved words. See File geodatabase size and name limits, Mobile geodatabase size and name limits, or Database and cloud data warehouse data in ArcGIS for more information about database-specific limitations.

Certain field names appear in ArcGIS with their fully qualified names for tables stored in an enterprise geodatabase. For example, if you create or import a polygon feature class that contains a field named Area, the database, schema, and table name are appended to it. This is the name you see in the attribute table of the feature class. That means for a polygon feature class named archsites, stored in the prof schema of the museum database, the Area field would be MUSEUM.PROF.ARCHSITES.AREA.

The following list contains all the field names that are fully qualified in an enterprise geodatabase:

  • FID
  • AREA
  • LEN
  • POINTS
  • NUMOFPTS
  • ENTITY
  • EMINX
  • EMINY
  • EMAXX
  • EMAXY
  • EMINZ
  • EMAXZ
  • MIN_MEASURE
  • MAX_MEASURE

For cases such as this, you might consider using a different field name or a field alias.

Rename fields

You can rename fields in a table or feature class in the fields view.

To rename a field, right-click the feature class or table in the Catalog pane and click Data Design > Fields. This opens the fields view, where you can modify field properties. Double-click the field name cell that you want to change and type a new field name. To commit your changes, click the Save button Save in the Changes group on the Fields tab.

The following fields cannot be renamed:

  • ObjectID and global ID fields
  • Any shape-related field: Shape, shape length, shape area
  • The enabled, ancillary role, or network weight fields of a network feature class
  • Representation fields
  • Fields in a feature class participating in a network dataset, terrain, or parcel fabric
  • Fields used for editor tracking
  • Relationship class primary key and foreign key fields
  • The subtype field
  • Raster fields

Field name rules and limitations

The following table lists supported field name character rules:

CharacterStart of nameOther positionIn alias

Letters (A–Z)

YesYesYes

Underscore ( _ )

YesYes

Digits (0–9)

YesYes

Spaces

Yes

Symbols (other than underscore)

Yes

Superscript letters and digits

Yes

Subscript letters and digits

Yes

Additional field name rules and limitations are as follows:

Field aliases

Field aliases allow you to assign an alternate name for a field. You typically use field names that are as short as possible to convey what data is stored in that field. You cannot use spaces or special characters in the field name, and certain fields appear in the table with their fully qualified names. In these cases, you can use a field alias to give the field a more descriptive name. For example, if you have a field named ST_SUFX that stores the type of street, which is indicated by the suffix used on the street name, you can give this field an alias of Street name suffix.

Learn how to set a field alias

Tip:

Geoprocessing methods allow you to validate table and field names. See Validating table and field names in Python for more information.

Use domains to control field values

Attribute domains are rules that indicate valid values for a field in a table in a geodatabase. They enforce data integrity by restricting the data values a user can add to a specific field.

You can apply attribute domains to fields only if there was a definable set or range of specific values possible for that field. For example, a field that stores the answer to the survey question What is your favorite food? is difficult to apply a domain to, since there are a large number of responses that can be given. However, a field storing data on eye color can have an attribute domain assigned to it, because there are only a few possible valid values.

  • Black
  • Brown
  • Blue
  • Green
  • Hazel
  • Gray
  • Violet

Using an attribute domain for a field storing eye color data ensures consistency of the values. If data collectors are allowed to type any color in a text field for eye color, you might end up with any of the following for blue eyes:

  • Azure
  • Navy
  • Sky blue
  • Cobalt
  • Aquamarine

Attribute domains also prevent misspellings or typographical errors. Even if data collectors know to only use the term blue for blue eyes, they might misspell the word (bleu) or mistakenly type the wrong letter when typing the word (vlue) in a text field.

Types of attribute domains

There are two types of attribute domains you can use to restrict field values: coded value domain and range domain.

Coded value domain

A coded value domain uses codes to define a set of allowed values for a field that stores discrete data. You can use a coded value domain for most field data types.

Note:

  • Domains on Date, Date only, and Time only field types support only whole second-based precision.
  • Domains on Global ID, Object ID, Blob, Raster, and Timestamp offset fields are not supported with coded value and range.

For the eye color field, you could create a coded domain using one of the following example code sets:

  • Example 1
    • Blk = Black
    • Brn = Brown
    • Blu = Blue
    • Grn = Green
    • Hzl = Hazel
    • Gra = Gray
    • Vlt = Violet
  • Example 2
    • 1 = Black
    • 2 = Brown
    • 3 = Blue
    • 4 = Green
    • 5 = Hazel
    • 6 = Gray
    • 7 = Violet

Range domain

A range domain defines a range of allowed numeric values for a field.

The field must be a numeric or date data type to use a range domain. You can apply a range domain to short integer, long integer, big integer, float, double, date, date only, and time only field types. An example of a field to which you might apply a range domain is one that stores data on birth weights for single live births of western lowland gorillas in zoos. The range would run from the lowest weight (1 kg) to the highest (2.5 kg).

Learn more about attribute domains

Learn how to create and manage domains

Use subtypes

Subtypes are classifications within a feature class or table in a geodatabase. They allow you to logically group features based on a unique characteristic or behavior of the data. This characteristic or behavior is represented by the values of one field in the table. For example, for a table of hydrology, you could have subtypes for different types of waterways, such as creeks, streams, channels, canals, and rivers. For each of these subtypes, you could apply different topology rules, connectivity rules, default values, and relationship rules.

Using subtypes to store groups of related features can improve query performance. If you stored the different types of data in separate feature classes instead of using subtypes, you would have a greater number of feature classes in the database, and it could take longer to search.

The following rules apply when using subtypes:

  • Only one field in a table or feature class can have subtypes applied to it.
  • The field on which you base the subtype must be a long or short integer field.
  • You can apply different topology and relationship rules to different subtypes.
  • You can apply different attributes or coded domains to other fields in the table based on subtypes.
    Note:

    You apply the domain to a field for a specific subtype.

Learn more about subtypes

Learn more about how to create and manage subtypes