The primary differences between this and a standard relational database are:
- record-definitions are not fixed
- records can have a hierarchical relationship with each other
The code will be designed to use a standard relational database (MySQL) as a back-end, but it may be that this concept is ultimately more compatible with other types of databases (e.g. object databases).
This concept is designed to be a more flexible and intuitive way of handling relationships between groups of data fields.
- A "type" is a way of representing data in all forms needed for using it (typically: internal/native, storage, and display).
- A "field" is a named slot that has a particular type and belongs to a record.
- A "cell" is a field that contains particular data and belongs to exactly one record.
- A "record" consists of any collection of cells.
- A "record template" consists of any collection of fields.
- A "table" consists of a collection of records, and may have
Notes: fields have parents, that's how they get grouped; parent is also a field? we do need to be able to do hierarchy somehow, anyway.