Entity Relationships¶
This section describes the key relationships between entities, including foreign keys and cardinality.
Geographic Hierarchy¶
erDiagram
mng_country ||--o{ mng_admin_1 : "has"
mng_admin_1 ||--o{ mng_admin_2 : "has"
mng_admin_2 ||--o{ mng_location : "has"
mng_country ||--o{ mng_cultivar : "configures"
mng_country ||--o{ mng_soil : "configures"
mng_country ||--o{ mng_country_indicator : "configures"
mng_country ||--o{ mng_country_climate_measure : "configures"
mng_country ||--o{ mng_data_source : "has"
mng_country ||--o{ forecast : "forecasts for"
Crop Configuration Chain¶
erDiagram
mng_crop ||--o{ mng_cultivar : "has"
mng_crop ||--o{ mng_soil : "has"
mng_crop ||--o{ mng_phenological_stage : "has"
mng_crop ||--o{ mng_season : "has"
mng_cultivar ||--o{ mng_setup : "configures"
mng_soil ||--o{ mng_setup : "configures"
mng_season ||--o{ mng_setup : "configures"
mng_setup ||--o{ mng_configuration_file : "uses"
Forecast Domain¶
erDiagram
mng_country ||--o{ forecast : "has"
forecast ||--o{ forecast_analogue : "uses analogue"
Climate Data Domain¶
erDiagram
mng_location ||--o{ climate_historical_daily : "has"
mng_location ||--o{ climate_historical_monthly : "has"
mng_location ||--o{ climate_historical_climatology : "has"
mng_location ||--o{ climate_historical_indicator : "has"
mng_climate_measure ||--o{ climate_historical_daily : "measures"
mng_climate_measure ||--o{ climate_historical_monthly : "measures"
mng_climate_measure ||--o{ climate_historical_climatology : "measures"
mng_indicators ||--o{ climate_historical_indicator : "defines"
Security Model¶
erDiagram
role ||--o{ users : "has"
users ||--o{ user_access : "has"
role ||--o{ user_access : "has"
mng_country ||--o{ user_access : "grants access to"
Cardinality Summary¶
| Source Entity | Target Entity | Cardinality | FK Column |
|---|---|---|---|
| MngCountry | MngAdmin1 | 1:N | country_id |
| MngAdmin1 | MngAdmin2 | 1:N | admin_1_id |
| MngAdmin2 | MngLocation | 1:N | admin_2_id |
| MngCountry | MngCultivar | 1:N | country_id |
| MngCrop | MngCultivar | 1:N | crop_id |
| MngCountry | MngSoil | 1:N | country_id |
| MngCrop | MngSoil | 1:N | crop_id |
| MngCultivar | MngSetup | 1:N | cultivar_id |
| MngSoil | MngSetup | 1:N | soil_id |
| MngSeason | MngSetup | 1:N | season_id |
| MngSetup | MngConfigurationFile | 1:N | setup_id |
| MngCountry | Forecast | 1:N | country_id |
| Forecast | ForecastAnalogue | 1:N | forecast_id |
| MngLocation | ClimateHistoricalDaily | 1:N | location_id |
| MngLocation | ClimateHistoricalMonthly | 1:N | location_id |
| MngLocation | ClimateHistoricalClimatology | 1:N | location_id |
| MngLocation | ClimateHistoricalIndicator | 1:N | location_id |
| MngClimateMeasure | ClimateHistoricalDaily | 1:N | measure_id |
| MngClimateMeasure | ClimateHistoricalMonthly | 1:N | measure_id |
| MngIndicator | ClimateHistoricalIndicator | 1:N | indicator_id |
| MngCrop | MngPhenologicalStage | 1:N | crop_id |
| MngPhenologicalStage | PhenologicalStageStress | 1:N | phenological_stage_id |
| MngStress | PhenologicalStageStress | 1:N | stress_id |
| MngCountry | MngCountryIndicator | 1:N | country_id |
| MngIndicator | MngCountryIndicator | 1:N | indicator_id |
| MngCountryIndicator | MngIndicatorsFeatures | 1:N | country_indicator_id |
| MngCountry | MngCountryClimateMeasure | 1:N | country_id |
| MngClimateMeasure | MngCountryClimateMeasure | 1:N | measure_id |
| MngCountry | MngDataSource | 1:N | country_id |
| Role | User | 1:N | role_id |
| User | UserAccess | 1:N | user_id |
| Role | UserAccess | 1:N | role_id |
| MngCountry | UserAccess | 1:N | country_id |
ORM Package Structure¶
aclimate_v3_orm/
database/ # SQLAlchemy Base, engine, session
enums/ # 7 shared enumeration files
models/ # 31 SQLAlchemy entity files
schemas/ # 31 Pydantic schema files
services/ # 31 business logic files
validations/ # 31 data integrity files
migrations/ # Alembic version-controlled scripts
versions/ # Individual migration scripts