The following picture depicts (a slightly simplified version of) the MyTimetable data model. It can be used during development of custom data providers. These data providers can provide data to MyTimetable through a web service or a database. In case of a database, we currently prefer a Microsoft SQL Server database, but PostgreSQL or MySQL are possible as well.
The base entity of MyTimetable is an Event, which represent one activity in the timetable. Each activity optionally has a type, department, zero or more locations and zero or more staff members attached to it. The locations and staff members can also be kept in a denormalised format in the same table as the events, to further simplify the data model.
Events are grouped in timetables. Each timetable represents an entry the user can choose themselves in the interface (e.g., 'add timetable of class B' ), or represents a student or staff member (in case of personalised timetables). For some data providers, timetables are automatically formed from the locations or staff members attached to the events.
Every entity requires a unique identifier (ID), which should be the same identifier at all times. This ID may be used to save certain user settings, so changing or non-unique IDs are not possible and will cause problems.
Every entity can have a host key, which represent a system identifier (e.g., student number or staff login name). A unique value is strongly recommended.