Relaciones entre Entidades¶
Esta sección describe las relaciones clave entre entidades, incluyendo claves foráneas y cardinalidad.
Jerarquía Geográfica¶
erDiagram
mng_country ||--o{ mng_admin_1 : "tiene"
mng_admin_1 ||--o{ mng_admin_2 : "tiene"
mng_admin_2 ||--o{ mng_location : "tiene"
mng_country ||--o{ mng_cultivar : "configura"
mng_country ||--o{ mng_soil : "configura"
mng_country ||--o{ mng_country_indicator : "configura"
mng_country ||--o{ mng_country_climate_measure : "configura"
mng_country ||--o{ mng_data_source : "tiene"
mng_country ||--o{ forecast : "pronósticos para"
Cadena de Configuración de Cultivos¶
erDiagram
mng_crop ||--o{ mng_cultivar : "tiene"
mng_crop ||--o{ mng_soil : "tiene"
mng_crop ||--o{ mng_phenological_stage : "tiene"
mng_crop ||--o{ mng_season : "tiene"
mng_cultivar ||--o{ mng_setup : "configura"
mng_soil ||--o{ mng_setup : "configura"
mng_season ||--o{ mng_setup : "configura"
mng_setup ||--o{ mng_configuration_file : "usa"
Dominio de Pronóstico¶
erDiagram
mng_country ||--o{ forecast : "tiene"
forecast ||--o{ forecast_analogue : "usa análogos"
Dominio de Datos Climáticos¶
erDiagram
mng_location ||--o{ climate_historical_daily : "tiene"
mng_location ||--o{ climate_historical_monthly : "tiene"
mng_location ||--o{ climate_historical_climatology : "tiene"
mng_location ||--o{ climate_historical_indicator : "tiene"
mng_climate_measure ||--o{ climate_historical_daily : "mide"
mng_climate_measure ||--o{ climate_historical_monthly : "mide"
mng_climate_measure ||--o{ climate_historical_climatology : "mide"
mng_indicators ||--o{ climate_historical_indicator : "define"
Modelo de Seguridad¶
erDiagram
role ||--o{ users : "tiene"
users ||--o{ user_access : "tiene"
role ||--o{ user_access : "tiene"
mng_country ||--o{ user_access : "otorga acceso a"
Resumen de Cardinalidad¶
| Entidad Fuente | Entidad Destino | Cardinalidad | Columna FK |
|---|---|---|---|
| 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 |
Estructura del Paquete ORM¶
aclimate_v3_orm/
database/ # Base SQLAlchemy, engine, sesión
enums/ # 7 archivos de enumeraciones compartidas
models/ # 31 archivos de entidades SQLAlchemy
schemas/ # 31 archivos de esquemas Pydantic
services/ # 31 archivos de lógica de negocio
validations/ # 31 archivos de integridad de datos
migrations/ # Scripts versionados con Alembic
versions/ # Scripts de migración individuales