- Everything belongs to a project. Almost every table carries a direct link to its project, and the few that do not inherit it from their parent.
- Every record has a unique identifier and timestamps.
The fleet registry
This is the backbone. Everything else in the platform ultimately points at something here. Reading it in order:1
A vehicle type describes a class of vehicle
Not an individual train — a model. Everything structural hangs off the type, so it is
defined once and applies to every vehicle of that type.
2
Product groups organise the vehicle into functional groups
A tree following the EN 15380-2 standard — brakes, doors, bogies, and so on, each
subdividing further. Standard top levels are seeded automatically; the rest is defined
per vehicle type.
3
Slots are the mounting positions
A slot is a place where a component can sit — “bogie 1, axle 2, left wheel”. Each slot
belongs to a product group and lists which component types are allowed in it. Slots can
nest inside other slots.
4
Vehicles and components are the instances
A vehicle has a vehicle number and carries its current mileage and operating hours. A
component has a serial number, a status, and its own lifetime mileage.
A component has no direct link to a vehicle. Which component is mounted where lives in
a separate record with dates on it, so that mounting history is preserved rather than
overwritten. That record is
VehicleConfiguration, below.Mounting and maintenance
Vehicle configuration is the mounting log. One row per mount event, with the dismount date left empty while the component is still fitted. Two rules are enforced by the database itself: a component can be mounted in only one place at a time, and a slot can hold only one component at a time. Maintenance plans belong to a vehicle type or a component type, never both. Each plan holds tasks, and a task defines an interval with a tolerance. Maintenance records are the preventative work that was performed, imported daily. Planned occurrences are projections of work not yet done, generated by the Planner.What attaches to the fleet
The remaining modules all hang off a vehicle or a component.Where each entity comes from
Whether a record is imported or created in the application determines whether you can edit it. Imported records are read-only in the platform — an edit would be overwritten by the next day’s file.Two exceptions worth knowing. Vehicles and components are created in the application
but carry an external identifier so imported rows can be matched to them. And on an
imported maintenance task, the manhour and cost estimates are maintained in the
application by the Planner role — the import does not touch them.