es CMS

Conceptual thoughts on effectively managing hierarchical data

There is no space in a hierarchized society that is not itself hierarchized and that does not express hierarchies... PierreBourdieu

Based on these thoughts I am experimenting with a system which is capable of managing hierarchical data in a simple and intuitive way. The working title is esCMS, however, obviously not a good choice. So this will change soon.

With this project I try to provide a simple yet powerful framework with the following priorities in mind:

  • - Node-based database driven management of hierarchical structures.
  • - Rock solid user rights management (probably *nix inspired)
  • - Versioning as a key component

Data storage and management

Common database systems are not really designed to store hierarchical data, they are just flat tables. esCMS uses ModifiedPreorderTreeTraversal to manage hierarchized data efficiently. The tree information is stored in a separate table (named _struct). Every node (read every table row of table _struct) contains information about its place in the hierarchy, its data type and a unique ID. Each data type has its own database table. This way we achieve quite good normalization. Foreign keys between data-type tables are possible, however, not necessary, because the relations can always be determined by querying the _struct table.

User rights management

At the moment the implementation is very rudimentary. Future user rights management will probably include group, owners, modifiers and read, write and execute restrictions at node level.

Versioning

Automatic versioning will maintain a global changelog history (table _log). Table _struct and each data-type table will have it's own version information to make multiple user access and diff-handling more flexible.

Application Design

To create specific applications with esCMS there will exist logic master information to determine the way you are able to work with and alter the structure and data-types.