Saltar a contenido

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