wiki:DatabaseOverview

ExiteCMS v8 : Database Overview


Introduction

On this page we will explain the core components of the ExiteCMS database. We will focus here on the what and why, and not on the how. If you are looking for database and table details, you need to be here.


Platform Support

ExiteCMS supports a variety of database platforms, including Oracle, Microsoft SQL Server, MySQL, PostgreSQL, SQLite and ODBC connections.

Note: The ExiteCMS development team develops using MySQL v5.1. We rely heavily on the development and test skills of  EllisLabs and the CodeIgniter community for other database platforms. If you encounter problems using your platform of choice, we would love to hear about it.


Authentication, Authorization and Accounting

The RBAC model as used by ExiteCMS looks (and probably is) quite complex. This is because it has to cater for all sorts of applications, from the simple to the very complex enterprise class developments. The model supports both the traditional RBAC model (using roles, and users and tasks assigned to roles) and a model in which group memberships can be utilized. The model even allows you to assign tasks and roles to groups, which allows you to group roles so they can be assigned to a user very quickly.

The model is discussed in detail on the RBAC model page.


Application Content Tree

The ExiteCMS Web Application Framework utilizes what has been called the Application Content Tree. Where other web based application store their program files on disk in directories, ExiteCMS works with a database driven application structure. Every web page in the application is defined by a theme, a page template from that theme, and modules assigned to that template.

The sites table is the entry point of the content tree. ExiteCMS supports multiple site installations, where a site is mapped to a combination of a hostname and a port number. One of the sites can be marked as default, to cater for unknown hostnames. ExiteCMS also has (currently limited) support for wildcards for both the hostname and the portnumber.

Each site contains a webpage directory structure, stored in the pages table using nested set trees. The tree interface is implemented in the Tree? class, which is an improved implementation of  nstrees, which in turn is based on the excellent work of  Joe Celko.

The model is discussed in detail on the Content Tree model page.