Why do the IDs in the database not match the GO IDs?

FAQ tags: 

The GO SQL database employs the common practice of using surrogate IDs for primary keys. These are intended to be internal to the database, and not exposed to the casual user. In addition, they are not stable and will change with each release. For example, the term table has columns including:

  • id -- internal numeric identifier
  • acc -- public GO ID
  • name -- term label

The id column is the primary key for the term table used as a foreign key in tables that link here, such as term2term.

The acc column contains the GO identifier - eg GO:0008150.

See also additional notes on the schema.