🗂 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
produtores
1. 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 |
areas_plantio
2. 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 |
tipo_solo
3. 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 |
tipo_irrigacao
4. 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 |
produtos
5. 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 |
variedades
6. 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 |
plantios
7. 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 |
safras
8. 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.