Home    |    Concepts   |   API   |   Samples
Concepts > Versioning
Database Schema

Shared metadata tables

The versioned database is implemented through a combination of system tables that maintain metadata for the entire instance, and tables that log changes on a per versioned DBMS table basis. At the database level, three tables maintain the shared system metadata. These tables store the list of versions, the state tree, and the list of tables modified in each state. Note that the tables listed below will be modified with "sde_" in SQL Server and PostgreSQL databases.

Database
Schema
Diagram

 

Each version is identified by name, with an owner, description, and associated database state. This table defines the different versions that the database contains and provides a list of available versions to be presented to the user. These versions are used to access specific database states by the application. The version name and ID are unique.

When the VERSIONS table is first created by ArcSDE, a default version will be inserted into the table. This default version will be named DEFAULT, will be owned by the sde administrator, and granted PUBLIC access. The initial state_id will be set to 0, and the description string will read Instance Default Version. Since the default version has been granted PUBLIC access, any user can change the state of the default.

ArcGIS requires the presence of the default version. If you should inadvertently delete the default version, you can replace it with the following SQL insert statement.

insert into versions value ('DEFAULT','SDE',1,1,0,'Instance default version.',null,null,SYSDATE);

Name Data Null? Description
name SE_STRING_TYPE(64) NOT NULL The unique name of the version
owner SE_STRING_TYPE(32) NOT NULL The version owner
version_id SE_INTEGER_TYPE NOT NULL The unique ID of the version
status SE_INTEGER_TYPE NULL Specifies whether the version is available to the public or if it is privately accessed by the owner
state_id SE_INTEGER_TYPE NOT NULL The ID of the database state to which this version points
description SE_STRING_TYPE(64 in SQL Server 65 in all other DBMSs) NOT NULL An optional text description of the version
parent_name SE_STRING_TYPE(64) NOT NULL The name of this version's Parent version
parent_owner SE_STRING_TYPE(32) NOT NULL The name of the owner of the Parent Version
parent_version_id SE_INTEGER_TYPE NOT NULL The ID of Version which is the Parent of this version.
creation_time SE_DATE_TYPE NOT NULL The date/time that this version was created
The STATES table accounts for all of the states that have been created over time, thus maintaining a list of all database states. For each state, the creation time, closing time, parent, and owner are maintained. Using the information in this table joined with STATE_LINEAGES, the entire versioned database history can be reconstructed.

When a state is created, a state ID is assigned and a record is added to this table.

The STATES table maintains the following properties:

System Table Purpose Null? Description
state_id SE_INTEGER_TYPE NOT NULL A unique integer ID for this state, assigned by ArcSDE
owner SE_STRING_TYPE(32) NOT NULL The user who created this state
creation_time SE_DATE_TYPE NOT NULL The date/time that this state was created
closing_time SE_DATE_TYPE NULL The date/time that this state was closed
parent_state_id SE_INTEGER_TYPE NOT NULL This state's parent State_ID
lineage_name SE_INTEGER_TYPE NOT NULL References the state's lineage stored in the STATE_LINEAGES table

If a state is currently OPEN, that is, the owner can make changes within the state, the CLOSE_TIME will be NULL. Once a state has been closed, the CLOSE_TIME value will be a legal (not NULL) date.

The Parent_State_ID column is a convenience for searching, and is redundant with the last value of the lineage list. Without the Parent_State_ID column, the lineage must be tracked for each state to determine its parent.

The STATE_LINEAGES table stores the lineage of each state. A new lineage name is created for each version. Each time a state is added, the lineage name and the state ID are added. When a state is added that is a new version, the ancestry state lineage of the parent state are added with the lineage name.

System Table Purpose Null? Description
lineage name SE_INTEGER_TYPE NOT NULL Leaf node name that describes a state
lineage_id SE_INTEGER_TYPE NOT NULL Individual states of a leaf node

This table maintains the list of all tables that are modified in each state of the database. This information aids in quickly determining if conflicts exist between versions or states of the database.

The MVTABLES_MODIFIED table maintains a record of all tables modified by state. This information allows applications to determine which tables need to be checked for changes when reconciling potential conflicts between versions and states in the database.

The MVTABLES_MODIFIED table has the following schema:
 

System Table Purpose Null? Description
state_id SE_INTEGER_TYPE NOT NULL The state in which this table was modified
registration_id SE_INTEGER_TYPE NOT NULL The Registration ID of the table that was modified in the state

See also

Versioned Database Tables (Delta tables)

feedback | privacy | legal