Skip to content

AIMBAT Database Models

erDiagram
    AimbatStation ||--o{ AimbatSeismogram : "records"
    AimbatEvent ||--o{ AimbatSeismogram : "has"
    AimbatEvent ||--o| AimbatEventParameters : "has"
    AimbatEvent ||--o| AimbatEventQuality : "has"
    AimbatEvent ||--o{ AimbatSnapshot : "has"
    AimbatSeismogram ||--o| AimbatDataSource : "has"
    AimbatSeismogram ||--o| AimbatSeismogramParameters : "has"
    AimbatSeismogram ||--o| AimbatSeismogramQuality : "has"

    AimbatSnapshot ||--o| AimbatEventParametersSnapshot : "has"
    AimbatSnapshot ||--o{ AimbatSeismogramParametersSnapshot : "has"
    AimbatSnapshot ||--o| AimbatEventQualitySnapshot : "has"
    AimbatSnapshot ||--o{ AimbatSeismogramQualitySnapshot : "has"

    AimbatEventParameters ||--o{ AimbatEventParametersSnapshot : "snapshots"
    AimbatSeismogramParameters ||--o{ AimbatSeismogramParametersSnapshot : "snapshots"
    AimbatEventQuality ||--o{ AimbatEventQualitySnapshot : "snapshots"
    AimbatSeismogramQuality ||--o{ AimbatSeismogramQualitySnapshot : "snapshots"

    AimbatStation {
        uuid id PK
        string name
        string network
        string location
        string channel
        float latitude
        float longitude
        float elevation
    }

    AimbatEvent {
        uuid id PK
        timestamp time UK
        float latitude
        float longitude
        float depth
        timestamp last_modified
    }

    AimbatSeismogram {
        uuid id PK
        timestamp begin_time
        timedelta delta
        timestamp t0
        uuid station_id FK
        uuid event_id FK
        dict extra
    }

    AimbatDataSource {
        uuid id PK
        string sourcename UK
        datatype datatype
        uuid seismogram_id FK
    }

    AimbatEventParameters {
        uuid id PK
        uuid event_id FK
    }

    AimbatSeismogramParameters {
        uuid id PK
        uuid seismogram_id FK
    }

    AimbatEventQuality {
        uuid id PK
        uuid event_id FK
    }

    AimbatSeismogramQuality {
        uuid id PK
        uuid seismogram_id FK
    }

    AimbatSnapshot {
        uuid id PK
        timestamp time UK
        string comment
        string parameters_hash
        uuid event_id FK
    }

    AimbatEventParametersSnapshot {
        uuid id PK
        uuid snapshot_id FK
        uuid parameters_id FK
    }

    AimbatSeismogramParametersSnapshot {
        uuid id PK
        uuid seismogram_parameters_id FK
        uuid snapshot_id FK
    }

    AimbatEventQualitySnapshot {
        uuid id PK
        uuid event_quality_id FK
        uuid snapshot_id FK
    }

    AimbatSeismogramQualitySnapshot {
        uuid id PK
        uuid seismogram_quality_id FK
        uuid snapshot_id FK
    }

Relationships Summary

  • AimbatStationAimbatSeismogram: One-to-Many (a station records many seismograms)
  • AimbatEventAimbatSeismogram: One-to-Many (an event has many seismograms)
  • AimbatEventAimbatEventParameters: One-to-One (an event has one set of parameters)
  • AimbatEventAimbatEventQuality: One-to-One (an event has one quality record)
  • AimbatEventAimbatSnapshot: One-to-Many (an event can have many snapshots)
  • AimbatSeismogramAimbatDataSource: One-to-One (a seismogram has one datasource)
  • AimbatSeismogramAimbatSeismogramParameters: One-to-One
  • AimbatSeismogramAimbatSeismogramQuality: One-to-One
  • AimbatSnapshotAimbatEventParametersSnapshot: One-to-One
  • AimbatSnapshotAimbatSeismogramParametersSnapshot: One-to-Many
  • AimbatSnapshotAimbatEventQualitySnapshot: One-to-One
  • AimbatSnapshotAimbatSeismogramQualitySnapshot: One-to-Many

Notes

  • All primary keys are UUIDs
  • Foreign keys use CASCADE delete
  • UK = Unique Key
  • FK = Foreign Key
  • Snapshot tables store historical copies of parameters and quality metrics for rollback/analysis