Você é um assistente especializado em SQL e análise de dados. Vou fornecer informações sobre a estrutura do meu banco de dados PostgreSQL de uma LOJA e preciso que você:
Entenda profundamente a estrutura das tabelas, relacionamentos e o modelo de negócio
Gere consultas SQL quando eu solicitar em linguagem natural
Explique as consultas geradas de forma clara
Otimize as queries sempre que possível
Sugira melhorias quando identificar oportunidades
Este é um banco de dados de uma LOJA DE VAREJO que vende produtos diversos. O sistema gerencia:
Vendas : registro de vendas aos clientes com diferentes formas de pagamento
Estoque : controle de produtos disponíveis e movimentações
Clientes : cadastro de clientes com endereços
Produtos : catálogo de produtos organizados por categoria
Funcionários : equipe organizada por departamentos
Fornecedores : empresas que fornecem os produtos
Análises : visões agregadas para relatórios gerenciais
📊 ESTRUTURA COMPLETA DO BANCO DE DADOS
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_categoria
integer
-
NO
nextval('categorias_id_categoria_seq'::regclass)
2
nome
character varying
100
NO
null
3
descricao
text
-
YES
null
4
ativo
boolean
-
YES
true
5
data_criacao
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_cliente
integer
-
NO
nextval('clientes_id_cliente_seq'::regclass)
2
nome
character varying
150
NO
null
3
cpf
character varying
11
YES
null
4
email
character varying
150
YES
null
5
telefone
character varying
15
YES
null
6
data_nascimento
date
-
YES
null
7
genero
character varying
20
YES
null
8
ativo
boolean
-
YES
true
9
data_cadastro
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id
integer
-
NO
nextval('demo_id_seq'::regclass)
2
name
character varying
200
NO
''::character varying
3
hint
text
-
NO
''::text
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_departamento
integer
-
NO
nextval('departamentos_id_departamento_seq'::regclass)
2
nome
character varying
100
NO
null
3
descricao
text
-
YES
null
4
ativo
boolean
-
YES
true
5
data_criacao
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_endereco
integer
-
NO
nextval('enderecos_clientes_id_endereco_seq'::regclass)
2
id_cliente
integer
-
YES
null
3
tipo_endereco
character varying
50
YES
null
4
logradouro
character varying
200
YES
null
5
numero
character varying
10
YES
null
6
complemento
character varying
100
YES
null
7
bairro
character varying
100
YES
null
8
cidade
character varying
100
YES
null
9
estado
character varying
2
YES
null
10
cep
character varying
8
YES
null
11
principal
boolean
-
YES
false
12
data_cadastro
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_estoque
integer
-
NO
nextval('estoque_id_estoque_seq'::regclass)
2
id_produto
integer
-
YES
null
3
quantidade_atual
integer
-
NO
0
4
quantidade_minima
integer
-
YES
10
5
quantidade_maxima
integer
-
YES
1000
6
ultima_atualizacao
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_movimentacao
integer
-
NO
nextval('estoque_movimentacao_id_movimentacao_seq'::regclass)
2
id_produto
integer
-
YES
null
3
tipo_movimentacao
character varying
20
NO
null
4
quantidade
integer
-
NO
null
5
motivo
text
-
YES
null
6
id_funcionario
integer
-
YES
null
7
data_movimentacao
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_forma_pagamento
integer
-
NO
nextval('formas_pagamento_id_forma_pagamento_seq'::regclass)
2
nome
character varying
50
NO
null
3
ativo
boolean
-
YES
true
4
taxa_percentual
numeric
-
YES
0
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_fornecedor
integer
-
NO
nextval('fornecedores_id_fornecedor_seq'::regclass)
2
razao_social
character varying
200
NO
null
3
nome_fantasia
character varying
200
YES
null
4
cnpj
character varying
14
NO
null
5
email
character varying
150
YES
null
6
telefone
character varying
15
YES
null
7
endereco
text
-
YES
null
8
cidade
character varying
100
YES
null
9
estado
character varying
2
YES
null
10
cep
character varying
8
YES
null
11
ativo
boolean
-
YES
true
12
data_cadastro
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_funcionario
integer
-
NO
nextval('funcionarios_id_funcionario_seq'::regclass)
2
nome
character varying
150
NO
null
3
cpf
character varying
11
NO
null
4
email
character varying
150
NO
null
5
telefone
character varying
15
YES
null
6
cargo
character varying
100
YES
null
7
salario
numeric
-
YES
null
8
id_departamento
integer
-
YES
null
9
data_contratacao
date
-
NO
null
10
ativo
boolean
-
YES
true
11
data_cadastro
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_item_venda
integer
-
NO
nextval('itens_venda_id_item_venda_seq'::regclass)
2
id_venda
integer
-
YES
null
3
id_produto
integer
-
YES
null
4
quantidade
integer
-
NO
null
5
preco_unitario
numeric
-
NO
null
6
subtotal
numeric
-
NO
null
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_produto
integer
-
NO
nextval('produtos_id_produto_seq'::regclass)
2
nome
character varying
200
NO
null
3
descricao
text
-
YES
null
4
codigo_barras
character varying
50
YES
null
5
id_categoria
integer
-
YES
null
6
id_fornecedor
integer
-
YES
null
7
preco_custo
numeric
-
NO
null
8
preco_venda
numeric
-
NO
null
9
margem_lucro
numeric
-
YES
null
10
ativo
boolean
-
YES
true
11
data_cadastro
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_venda
integer
-
NO
nextval('vendas_id_venda_seq'::regclass)
2
id_cliente
integer
-
YES
null
3
id_funcionario
integer
-
YES
null
4
id_forma_pagamento
integer
-
YES
null
5
data_venda
timestamp without time zone
-
YES
CURRENT_TIMESTAMP
6
valor_total
numeric
-
NO
null
7
desconto
numeric
-
YES
0
8
valor_final
numeric
-
NO
null
9
status
character varying
50
YES
'CONCLUIDA'::character varying
🔍 VW_DESEMPENHO_VENDEDORES
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_funcionario
integer
-
YES
null
2
nome
character varying
150
YES
null
3
cargo
character varying
100
YES
null
4
departamento
character varying
100
YES
null
5
total_vendas
bigint
-
YES
null
6
valor_total_vendido
numeric
-
YES
null
7
ticket_medio
numeric
-
YES
null
🔍 VW_PRODUTOS_ESTOQUE_BAIXO
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_produto
integer
-
YES
null
2
nome
character varying
200
YES
null
3
codigo_barras
character varying
50
YES
null
4
categoria
character varying
100
YES
null
5
quantidade_atual
integer
-
YES
null
6
quantidade_minima
integer
-
YES
null
7
fornecedor
character varying
200
YES
null
8
telefone_fornecedor
character varying
15
YES
null
🔍 VW_PRODUTOS_MAIS_VENDIDOS
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_produto
integer
-
YES
null
2
nome
character varying
200
YES
null
3
codigo_barras
character varying
50
YES
null
4
categoria
character varying
100
YES
null
5
quantidade_vendida
bigint
-
YES
null
6
valor_total_vendido
numeric
-
YES
null
7
numero_vendas
bigint
-
YES
null
Posição
Coluna
Tipo
Tamanho
Aceita NULL
Valor Padrão
1
id_cliente
integer
-
YES
null
2
nome
character varying
150
YES
null
3
email
character varying
150
YES
null
4
total_compras
bigint
-
YES
null
5
valor_total_gasto
numeric
-
YES
null
6
ticket_medio
numeric
-
YES
null
7
ultima_compra
timestamp without time zone
-
YES
null
Tipo
Quantidade
Tabelas Base
13
Views
4
Total de Objetos
17
🔑 Tabelas por Número de Colunas
Tabela
Colunas
enderecos_clientes
12
fornecedores
12
funcionarios
11
produtos
11
vendas
9
clientes
9
estoque_movimentacao
7
estoque
6
itens_venda
6
categorias
5
departamentos
5
formas_pagamento
4
demo
3
🔗 Relacionamentos Identificados (via FKs)
enderecos_clientes → clientes (id_cliente)
estoque → produtos (id_produto)
estoque_movimentacao → produtos (id_produto)
estoque_movimentacao → funcionarios (id_funcionario)
funcionarios → departamentos (id_departamento)
itens_venda → vendas (id_venda)
itens_venda → produtos (id_produto)
produtos → categorias (id_categoria)
produtos → fornecedores (id_fornecedor)
vendas → clientes (id_cliente)
vendas → funcionarios (id_funcionario)
vendas → formas_pagamento (id_forma_pagamento)