Relationships between Records in Content Management Systems

This blog post contains information about relationships between records in content management systems.

Content management systems provide mixed support for hierarchical and relational record structures. CMS developers define content types, where each record can have values for the fields defined in its content type. Records can have relationships with other records. Together, content types and record relationships define the information architecture of the solution.

Records that contain metadata about media assets expose the URL of the binary resource. Some text content records can have URLs that define implicit record hierarchies.

Some CMS products represent records in hierarchies, where each record can have a parent and any number of descendants or records are organized into nested folders. Content delivery solutions use various types of relationships between records to drive functionality such as navigation on websites.

In hierarchical representations, records have implicit relationships with their parent and descendant records. For example, the records with the URL / is the parent of the record with the URL /hr and the grandparent of the record with the URL /hr/jobs, which are the child and grandchild of that record. Hierarchical relationships are useful in constructing navigation but can be used in other ways. For example, records in a hierarchy can define the values that appear in two drop-down lists, where the section in the first drop-down controls values available in the second.

Records can reference other records explicitly. For example, a record that represents a page about a product may contain a list of records that contain information about related products. Fields that contain rich text can reference other content and media records by ID and by URL. CMS products provide field types that allow CMS users to select other records when editing a record. The relationship is implicitly bidirectional: a record that references another record is implicitly referenced by the record that it references.

Records can reference intermediary records, or tags, that other records reference. Often in combination with search engines, solutions use tags to drive faceted navigation and other filtering, for example restricting search results for products to those with certain tags.

Records can contain references to records in other content repositories and external systems. Custom field types in content types can allow CMS users to select records in external systems. External systems may also store references to records in content management systems.

Reference can use IDs, URL or URL paths, names, or potentially other keys to reference other records. In general, manage references by ID whenever possible and construct paths at runtime. For example, construct sitemap.xml and robots.txt dynamically based on metadata from page records in their hierarchical structure rather than by hard-coding paths. Reference records by path (location in a hierarchy) when it is not possible to map paths to records at runtime or when paths are unwieldly and unlikely to change.

Search indexes often contain references to records in content management systems.

Search engines, artificial intelligence, and other systems can determine relationships between records.

Code can contain references to records by ID, URL or path, or otherwise.

I have been in content management for more than 20 years, but it is more than possible that I missed something. If you have additional perspectives on relationships between records in content management systems, please comment on this blog post.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: