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{ B means 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.
  • StructureAsset and ServicingActivity are 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.