# Dicionário do núcleo implementado | Tabela | Identidade e relações | Regras | | ----------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | investment_items | UUID; código único; tipo; título; versão | Representação canónica interna; não duplica a oportunidade pública | | investment_item_opportunities | item UUID → opportunity bigint único | Correspondência explícita; conserva ID, slug e URLs existentes | | investment_item_projects | item UUID → project UUID único | Correspondência só com evidência; não inferida por nome | | investment_zones | UUID; código único; operador FK organizations; fonte FK | Categoria zee/zfi/industrial_park/pending; publicação independente, editor/revisor, conteúdo PT/EN, versão; soft-delete | | investment_legal_sources | UUID; proprietário e validador FK users | Diploma/artigo/URL/entidade/vigência; pending/validated/revoked; outra pessoa valida; alteração documental requer nova referência | | investment_zone_links | item ↔ zona, par único | Papel, associação, prioridade, principal/secundária, evidência, período, fonte jurídica opcional, editor/validador e versão | | investment_zone_relations | zona ↔ exactamente um cluster/corredor/projecto | FKs explícitas e índice único por dimensão; múltiplas zonas por âncora; mesmas regras temporais e de validação | | investment_zone_geometries | zona ↔ geo_geometries | Finalidade, fonte, entidade, data, permissão de publicação, editor/revisor GIS; estatuto não inferido por localização | | investment_zone_revisions | zona/versão únicos | Snapshot encriptado, SHA-256, actor/acção/data; trigger recusa UPDATE/DELETE | | investment_submission_zones | submission UUID → zona UUID | Versão consultada e finalidade; origem preservada no protocolo, sem listas relacionais em JSON | Campos jurídicos e coordenadas não têm valores reais predefinidos. As migrations não semeiam estatutos, percentagens ou entidades. As restrições de geometria existentes asseguram 2D, SRID 4326, não vazio, tipo correcto, validade topológica e limites terrestres. Todas as novas FKs usam restrição de eliminação. ## Relações ER ```mermaid erDiagram investment_items ||--o{ investment_item_opportunities : maps opportunities ||--o| investment_item_opportunities : preserves_id investment_items ||--o{ investment_item_projects : maps projects ||--o| investment_item_projects : preserves_id investment_items ||--o{ investment_zone_links : associates investment_zones ||--o{ investment_zone_links : contains_relation investment_zones ||--o{ investment_zone_relations : territorial projects |o--o{ investment_zone_relations : anchor_or_complement economic_clusters |o--o{ investment_zone_relations : cluster development_corridors |o--o{ investment_zone_relations : corridor investment_legal_sources |o--o{ investment_zones : legal_reference organizations |o--o{ investment_zones : operator investment_zones ||--o{ investment_zone_geometries : locates geo_geometries ||--o{ investment_zone_geometries : shape investment_zones ||--o{ investment_zone_revisions : snapshots ``` Na relação territorial exactamente uma das três FKs de destino está preenchida. Operador não equivale a empresa instalada; cadastro empresarial e documentos existentes continuam separados. Revisão da zona não valida automaticamente as suas associações ou perímetros.