Document database structure

The Kentico database stores documents (nodes in the content tree of websites) in several joined tables:

Database table

Description

CMS_Tree

Stores:

  • Data that determines the position of documents in the website content tree
  • Basic document properties that are shared between all language versions of the same document

Contains only one record for each document, regardless of the number of language versions. The tables does not store any versioned data.

CMS_Document

Stores:

May contain multiple records per document, one for each language version. Some of the document columns are versioned.

Coupled data tables
(CONTENT_<doc type>)

Stores the fields of individual document types.

For example, the News document type has the CONTENT_News coupled table with the columns defined for news documents, such as NewsTitle, NewsSummary, NewsText.

  • Records in the coupled data tables are bound to documents through the DocumentForeignKeyValue column of the CMS_Document table.
  • The document type of tree nodes is determined by the NodeClassID column in the CMS_Tree table.
  • Container document types, such as Folder, do not have a coupled table.
  • Every language version of a document has its own record in the corresponding coupled data table.
  • All columns in coupled data tables are versioned.

The relationships between document database tables

Document attachments and versions

Database table

Description

CMS_Attachment

Stores files uploaded to the database as document attachments.

CMS_VersionHistory

Stores document versions, including older versions and versions that are being edited. When a version is published, the system updates the corresponding records in the CMS_Tree and CMS_Document tables using the data of the version record.

CMS_AttachmentHistory

Stores attachments of document versions. The main purpose of this table is to avoid redundancy for document versions that use the same attachments.

When a document version is published, the system updates the records in the CMS_Attachment table using the data of the version record.

CMS_VersionAttachment

Stores relationships between document versions and their document attachments.

Database diagram of all document tables

Document relationships

Database table

Description

CMS_Relationship

Stores records representing relationships between two documents.

CMS_RelationshipName

Stores the relationship names (types) defined in the system.

CMS_RelationshipNameSite

Binding table that connects relationship names to websites. Each entry indicates that a relationship can be used on a given site.

Database diagram of document relationship tables