System Diagram
The Bridge Maintenance data model, mapped — 21 models, 34 relationships
🔍 For serious exploration, open the Interactive Diagram Viewer — it adds pan, mouse-wheel zoom, fit-to-screen, full-screen mode, a full ERD, and a focus mode that draws just one model and its neighbours at a chosen depth. The diagrams below are the readable, static summary.
Architecture Overview
The model has four areas: the structure register (what is maintained), the servicing activity catalogue (the manual's standard activities and their rules), scheduling & work delivery (when and how servicing happens), and defects & escalation (what servicing finds and how it escalates). Every arrow means "one row of the left model is referenced by many rows of the right model".
flowchart LR
subgraph REG["🌉 Structure register"]
StructureAsset --> MaintenanceEnvelope
StructureComponentGroup
end
subgraph CAT["📚 Activity catalogue"]
UnitOfMeasurement --> ServicingActivity
ServicingActivity --> ServicingActivityDetail
ServicingActivity --> ActivityRequirement
ServicingActivity --> ActivityProcedureStep
ServicingActivity --> ActivityPlanningPoint
ServicingActivity --> ApprovalRequirement
end
subgraph OPS["🔧 Scheduling & work delivery"]
ServicingSchedule --> FrequencyVariation
ServicingWorkOrder --> ServicingWorkOrderLine
ServicingWorkOrder --> WorkEvidence
ServicingWorkOrder --> ServicingCostRecord
ServicingWorkOrder --> ChemicalApplicationRecord
end
subgraph DEF["⚠️ Defects & escalation"]
Defect --> InspectionIssue
Defect --> ExternalAuthorityNotification
EnvironmentalConstraint
end
StructureAsset --> ServicingSchedule
StructureAsset --> ServicingWorkOrder
StructureAsset --> Defect
ServicingActivity --> ServicingSchedule
ServicingActivity --> ServicingWorkOrder
StructureComponentGroup --> ServicingSchedule
Module 1: Structure Register
What is maintained — every bridge and culvert with its maintenance envelope, plus the component groups servicing is organised around.
erDiagram
StructureAsset ||--o{ MaintenanceEnvelope : "structure_asset_id"
StructureAsset ||--o{ EnvironmentalConstraint : "structure_asset_id"
StructureAsset ||--o{ ExternalAuthorityNotification : "structure_asset_id"
StructureComponentGroup ||--o{ ServicingSchedule : "component_group_id"
StructureComponentGroup ||--o{ ServicingWorkOrder : "component_group_id"
StructureComponentGroup ||--o{ Defect : "component_group_id"
Module 2: Servicing Activity Catalogue
The manual's standard activities (805R1 timber preservation, 815R2 deck cleaning, …) and everything attached to each: the detail block, plant/ material/manpower requirements, procedure steps, planning points and approval requirements. A new manual edition is a data load, not a software release.
erDiagram
UnitOfMeasurement ||--o{ ServicingActivity : "unit_of_measurement_id"
ServicingActivity ||--o{ ServicingActivityDetail : "activity_id"
ServicingActivity ||--o{ ActivityRequirement : "activity_id"
ServicingActivity ||--o{ ActivityProcedureStep : "activity_id"
ServicingActivity ||--o{ ActivityPlanningPoint : "activity_id"
ServicingActivity ||--o{ ApprovalRequirement : "activity_id"
ServicingActivity ||--o{ EnvironmentalConstraint : "activity_id"
Module 3: Scheduling & Work Delivery
When and how servicing happens: evidence-based schedules (frequencies varied only via recorded Frequency Variations), and work orders carrying lines, evidence, costs and chemical application records.
erDiagram
StructureAsset ||--o{ ServicingSchedule : "structure_asset_id"
ServicingActivity ||--o{ ServicingSchedule : "activity_id"
ServicingSchedule ||--o{ FrequencyVariation : "servicing_schedule_id"
StructureAsset ||--o{ ServicingWorkOrder : "structure_asset_id"
ServicingActivity ||--o{ ServicingWorkOrder : "activity_id"
ServicingWorkOrder ||--o{ ServicingWorkOrderLine : "work_order_id"
ServicingWorkOrder ||--o{ WorkEvidence : "work_order_id"
ServicingWorkOrder ||--o{ ServicingCostRecord : "work_order_id"
ServicingWorkOrder ||--o{ ChemicalApplicationRecord : "work_order_id"
Module 4: Defects & Escalation
What servicing finds: defects rectified in scope, or escalated as Inspection Issues requesting Level 2/3 inspection — with external authority notifications where required.
erDiagram
StructureAsset ||--o{ Defect : "structure_asset_id"
StructureComponentGroup ||--o{ Defect : "component_group_id"
Defect ||--o{ InspectionIssue : "defect_id"
StructureAsset ||--o{ InspectionIssue : "structure_asset_id"
Defect ||--o{ ExternalAuthorityNotification : "defect_id"
StructureAsset ||--o{ ExternalAuthorityNotification : "structure_asset_id"
Reading the Diagrams
A ||--o{ Bmeans one row of A is referenced by many rows of B (the label is the foreign-key column on B).- Arrows in the overview point the same way: parent → children.
StructureAssetandServicingActivityare the two hubs — almost every operational record references both.
Diagrams are derived from the generated schema metadata
(apps/bridge_maintenance/generated/json/bridge_maintenance_relationship_metadata.json).
If the DSL schema changes, regenerate that metadata and update this page and
the viewer's embedded data.