Page database structure
The Xperience database stores pages (nodes in the content tree of websites) in several interconnected tables:
Database table | Description |
CMS_Tree | Stores:
Contains only one record for each page, regardless of the number of language versions. The table does not store any versioned data. |
CMS_Document | Stores:
May contain multiple records per page, one for each language version. Some of the page columns are versioned. |
Coupled data tables | Stores the fields of individual page types. For example, an Article page type could have a coupled table named DancingGoat_Article with columns defined for article pages, such as ArticleTitle, ArticleSummary, ArticleText.
|
Page attachments and versions
Database table | Description |
CMS_Attachment | Stores files uploaded to the database as page attachments. Includes all types of page attachments:
|
CMS_VersionHistory | Stores page 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 page versions. The main purpose of this table is to avoid redundancy for page versions that use the same attachments. When a page 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 page versions and their page attachments. |
Products
Products represent merchandise or services in online stores. The system associates product objects (SKUs) with pages representing product types.
The primary product data is stored in the COM_SKU database table.
- Pages representing products are bound to the related SKU through the NodeSKUID column of the CMS_Tree table.
- Most product columns are versioned and covered by workflow (exceptions include the product image, as well as the Track inventory and Available items properties).
- If a product page is available in multiple language versions AND covered by workflow, the versioned product properties are NOT shared between different language versions of a single product. Any updates of the product Price (or other key properties) need to be made separately for each language version.
Page relationships
Database table | Description |
CMS_Relationship | Stores records representing relationships between two pages. Used for both:
|
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. |