Forms Data Model Diagram - spencercrose/klamm GitHub Wiki

Current Simplified ERD


erDiagram
    forms ||--o{ form_versions : "has many"
    form_versions ||--o{ containers : "has many"
    containers ||--o{ containers : "can nest"
    containers ||--o{ form_fields : "has many"
    form_fields }|--|| data_types : "uses one"
    field_groups ||--o{ form_fields : "referenced by many"
    form_versions ||--o{ field_group_instances : "has many"
    field_group_instances }|--|| field_groups : "references one"
    field_group_instances }|--|| containers : "is part of"
    form_versions ||--o{ form_instance_fields : "has many"
    form_instance_fields }|--|| form_fields : "references one"

    forms {
        bigserial id PK
        varchar title
        text purpose
        varchar description
        bigint ministry_id FK
        bigint fill_type_id FK
        bigint frequency_id FK
        bigint reach_id FK
        bigint form_repository_id FK
    }

    form_versions {
        bigserial id PK
        bigint form_id FK
        varchar version
        varchar name
        varchar status
        timestamp deployment_date
        bigint requester_id FK
        bigint approver_id FK
    }

    containers {
        bigserial id PK
        bigint form_version_id FK
        bigint container_id FK "self-referencing"
        varchar name
        varchar type
        integer order
    }

    field_groups {
        bigserial id PK
        varchar name
        varchar label
        boolean is_repeater
        text description
    }

    form_fields {
        bigserial id PK
        bigint container_id FK
        bigint field_group_id FK
        bigint data_type_id FK
        varchar name
        varchar label
        integer order
        varchar data_binding
        varchar mask
    }

    field_group_instances {
        bigserial id PK
        bigint form_version_id FK
        bigint container_id FK
        bigint field_group_id FK
    }

    data_types {
        bigserial id PK
        varchar name
        varchar description
    }

    form_instance_fields {
        bigserial id PK
        bigint form_version_id FK
        bigint form_field_id FK
        varchar label
        varchar data_binding
        varchar mask
    }

Refactored ERD