🗂 Estrutura Geral
O banco de dados foi projetado para gerenciar informações de produtores, áreas de plantio, produtos, variedades, tipos de solo, irrigação, plantios e safras.
A modelagem garante rastreabilidade desde o produtor até a safra colhida.
📑 Tabelas
1. produtores
Armazena informações sobre os produtores rurais.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| nome | VARCHAR(255) | Nome do produtor |
| cpf_cnpj | VARCHAR(20) | Documento do produtor |
| telefone | VARCHAR(20) | Contato |
| VARCHAR(255) | Email do produtor | |
| endereco | TEXT | Endereço completo |
| criado_em | TIMESTAMP | Data de criação do registro |
2. areas_plantio
Representa as áreas de plantio vinculadas a um produtor.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| produtor_id | INTEGER (FK) | Referência para produtores
|
| nome | VARCHAR(255) | Nome da área |
| tipo_solo_id | INTEGER (FK) | Referência para tipo_solo
|
| tipo_irrigacao_id | INTEGER (FK) | Referência para tipo_irrigacao
|
| tipo_cultivo | VARCHAR(100) | Cultura plantada (ex: soja, milho) |
| poligono_geo | geometry(Polygon,4326) | Representação espacial da área |
| ativo | BOOLEAN | Indica se a área está ativa |
| criado_em | TIMESTAMP | Data de criação do registro |
3. tipo_solo
Define os tipos de solo possíveis.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| nome | VARCHAR(100) | Nome do tipo de solo |
| descricao | TEXT | Detalhes adicionais |
4. tipo_irrigacao
Define os métodos de irrigação utilizados.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| nome | VARCHAR(100) | Nome do tipo de irrigação |
| descricao | TEXT | Detalhes adicionais |
5. produtos
Lista os produtos agrícolas cadastrados.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| nome | VARCHAR(100) | Nome do produto |
| criado_em | TIMESTAMP | Data de criação do registro |
6. variedades
Armazena variedades específicas de cada produto.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| produto_id | INTEGER (FK) | Referência para produtos
|
| nome | VARCHAR(100) | Nome da variedade |
| criado_em | TIMESTAMP | Data de criação do registro |
7. plantios
Representa os plantios realizados em determinada área.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| area_id | INTEGER (FK) | Referência para areas_plantio
|
| produto_id | INTEGER (FK) | Referência para produtos
|
| variedade_id | INTEGER (FK) | Referência para variedades
|
| data_plantio | DATE | Data do plantio |
| previsao_colheita | DATE | Data estimada da colheita |
| data_colheita | DATE | Data efetiva da colheita |
| quantidade_plantada | DECIMAL | Quantidade plantada |
| quantidade_colhida | DECIMAL | Quantidade colhida |
| criado_em | TIMESTAMP | Data de criação do registro |
8. safras
Controla os ciclos de safras relacionados aos plantios.
| Campo | Tipo | Descrição |
|---|---|---|
| id | SERIAL (PK) | Identificador único |
| plantio_id | INTEGER (FK) | Referência para plantios
|
| ciclo | VARCHAR(50) | Nome do ciclo (ex: 2024/2025) |
| status | VARCHAR(50) | Situação da safra (ativo, colhido, etc.) |
| criado_em | TIMESTAMP | Data de criação do registro |
🔗 Relacionamentos
- 1 Produtor → N Áreas de Plantio
- 1 Área de Plantio → N Plantios
- 1 Produto → N Variedades
- 1 Plantio → 1 Safra
- Áreas de Plantio estão vinculadas a tipo de solo e tipo de irrigação.
🌍 Integração com PostGIS
A tabela areas_plantio possui o campo poligono_geo do tipo geometry(Polygon, 4326), que permite armazenar os limites geográficos das áreas em coordenadas WGS84.
Benefícios
- Armazenamento de áreas reais de plantio.
- Cálculo de área e perímetro.
- Identificação de sobreposição de áreas.
- Consulta de proximidade entre áreas.
- Integração com sistemas de mapas (Leaflet, Mapbox, QGIS, etc.).
Exemplos de uso
Inserindo uma área poligonal
INSERT INTO areas_plantio (
produtor_id, nome, tipo_solo_id, tipo_irrigacao_id, tipo_cultivo, poligono_geo, ativo, criado_em
) VALUES (
1,
'Área Leste',
2,
1,
'Soja',
ST_GeomFromText(
'POLYGON((-51.23 -30.01, -51.22 -30.01, -51.22 -30.00, -51.23 -30.00, -51.23 -30.01))',
4326
),
TRUE,
NOW()
);
Consultando a área em hectares
SELECT
ST_Area(poligono_geo::geography)/10000 AS hectares
FROM areas_plantio;
Verificando sobreposição entre áreas
SELECT a1.id, a2.id
FROM areas_plantio a1, areas_plantio a2
WHERE a1.id <> a2.id
AND ST_Intersects(a1.poligono_geo, a2.poligono_geo);
Calculando distância entre duas áreas
SELECT
a1.id AS area1,
a2.id AS area2,
ST_Distance(a1.poligono_geo::geography, a2.poligono_geo::geography) AS distancia_metros
FROM areas_plantio a1, areas_plantio a2
WHERE a1.id = 1 AND a2.id = 2;
📌 Conclusão
Esta modelagem fornece uma base sólida para o gerenciamento de informações agrícolas, com suporte a dados espaciais via PostGIS, possibilitando análises avançadas e integração com sistemas de geolocalização.
