← Back to case study

Entity-relationship diagram

Target PostgreSQL schema — 10 tables across 8 subject areas. Synthetic schema for portfolio purposes.

erDiagram
    CULTIVARS ||--o{ LICENCES : "licensed under"
    CULTIVARS ||--o{ BLOCKS : "planted as"
    CULTIVARS ||--o{ NURSERY_ORDERS : "ordered as"
    CULTIVARS ||--o{ IMPORT_EXPORT_PERMITS : "moved under"
    STAKEHOLDERS ||--o{ LICENCES : "holds"
    STAKEHOLDERS ||--o{ BLOCKS : "manages"
    STAKEHOLDERS ||--o{ NURSERY_ORDERS : "places"
    LICENCES ||--o{ ROYALTY_CONTRACTS : "governs"
    ROYALTY_CONTRACTS ||--o{ ROYALTY_TRANSACTIONS : "settles"
    BLOCKS ||--o{ PATHOLOGY_TESTS : "tested via"
    BLOCKS ||--o{ QUARANTINE_RECORDS : "quarantined via"
    IMPORT_EXPORT_PERMITS ||--o{ QUARANTINE_RECORDS : "requires"

    CULTIVARS {
        int cultivar_id PK
        string cultivar_name
        string species
        string plant_type
        string release_status
    }
    STAKEHOLDERS {
        int stakeholder_id PK
        string stakeholder_name
        string stakeholder_type
        string region
    }
    LICENCES {
        int licence_id PK
        int cultivar_id FK
        int stakeholder_id FK
        string licence_type
        string status
    }
    BLOCKS {
        int block_id PK
        int cultivar_id FK
        int stakeholder_id FK
        string block_type
        string block_status
    }
    PATHOLOGY_TESTS {
        int test_id PK
        int block_id FK
        string test_type
        string result
    }
    ROYALTY_CONTRACTS {
        int contract_id PK
        int licence_id FK
        numeric royalty_rate
        string calculation_basis
    }
    ROYALTY_TRANSACTIONS {
        int transaction_id PK
        int contract_id FK
        numeric amount_due
        string payment_status
    }
    NURSERY_ORDERS {
        int order_id PK
        int cultivar_id FK
        int stakeholder_id FK
        string order_status
    }
    IMPORT_EXPORT_PERMITS {
        int permit_id PK
        int cultivar_id FK
        string direction
        string permit_status
    }
    QUARANTINE_RECORDS {
        int quarantine_id PK
        int permit_id FK
        int block_id FK
        string clearance_status
    }