Objetos de Banco de Dados
Objetos de Banco de Dados
Todos os objetos de banco de dados seguem um padrão de nomenclatura rigoroso. Ao olhar para qualquer objeto, você deve conseguir identificar imediatamente: o que é, de qual módulo e o que faz.
Padrão Geral de Nomenclatura
TIPO_KPT_[MODULO]_[DESCRICAO]
Onde:
- TIPO: Prefixo que identifica o tipo do objeto
- KPT: Namespace Keeptor (identifica que pertence aos nossos desenvolvimentos)
- MODULO: Abreviação do módulo de negócio (3 letras)
- DESCRICAO: O que o objeto faz, em UPPER_SNAKE_CASE
Abreviações de Módulos
| Abreviação | Módulo | Exemplos de uso |
|---|---|---|
COR | Core (compartilhado) | Usuários, Organizações, Permissões |
FIN | Financeiro | Contas a pagar/receber, Fluxo de caixa |
EST | Estoque | Produtos, Movimentações, Inventário |
COM | Comercial | Pedidos, Vendas, Clientes |
FIS | Fiscal | Notas fiscais, Impostos, SPED |
RHU | Recursos Humanos | Funcionários, Folha, Ponto |
INT | Integrações | APIs externas, Sincronizações |
Dica: Se o módulo ainda não tem abreviação, defina com o Tech Lead antes de criar objetos. Sempre 3 letras.
Objetos do Dia a Dia
Estes são os objetos que você vai criar e usar na rotina de desenvolvimento em projetos de clientes.
Stored Procedures (STP)
Formato:
STP_KPT_[MODULO]_[ACAO]_[ENTIDADE]
O que são: Stored Procedures encapsulam lógica de negócio que envolve múltiplas operações no banco. Use quando a operação precisa de transação atômica, performance crítica ou manipulação de dados em lote.
Quando usar:
- Operações que envolvem múltiplas tabelas em uma transação
- Processamento em lote (batch)
- Cálculos complexos que são mais eficientes no banco
- Operações chamadas por múltiplos sistemas
Quando NÃO usar:
- CRUD simples (use a aplicação Java)
- Lógica de validação que muda frequentemente (mantenha na aplicação)
Exemplos:
| Procedure | O que faz |
|---|---|
STP_KPT_FIN_CALCULAR_IMPOSTO | Calcula impostos de um lançamento |
STP_KPT_FIN_FECHAR_CAIXA | Fecha o caixa do dia com totalizadores |
STP_KPT_EST_ATUALIZAR_SALDO | Recalcula saldo após movimentação |
STP_KPT_COM_GERAR_PEDIDO | Cria pedido com itens e calcula totais |
STP_KPT_INT_SINCRONIZAR_CLIENTES | Sincroniza clientes com sistema externo |
Erros Comuns:
| Errado | Correto | Por quê |
|---|---|---|
SP_CALCULA_IMPOSTO | STP_KPT_FIN_CALCULAR_IMPOSTO | Falta namespace KPT e módulo |
STP_KPT_PROC1 | STP_KPT_FIN_FECHAR_CAIXA | Nome genérico, impossível saber o que faz |
STP_KPT_FIN_calculaDesconto | STP_KPT_FIN_CALCULAR_DESCONTO | Deve ser UPPER_SNAKE_CASE |
Triggers (TRG)
Formato:
TRG_KPT_[MODULO]_[TABELA]
O que são: Triggers são gatilhos automáticos que disparam quando um evento ocorre em uma tabela (INSERT, UPDATE, DELETE). O banco executa automaticamente — sem precisar chamar explicitamente.
Quando usar:
- Auditoria automática (log de quem alterou o quê)
- Manter campos calculados atualizados
- Validações que devem acontecer independente de onde vem o dado
- Sincronização entre tabelas relacionadas
Quando NÃO usar:
- Lógica de negócio complexa (use Stored Procedure)
- Chamadas externas (API, email, etc.)
- Operações demoradas (trigger bloqueia a transação)
Exemplos:
| Trigger | O que faz |
|---|---|
TRG_KPT_FIN_LANCAMENTO | Ao inserir/atualizar lançamento, atualiza saldo da conta |
TRG_KPT_EST_MOVIMENTO | Ao registrar movimento, atualiza saldo do produto |
TRG_KPT_COM_PEDIDO | Ao atualizar pedido, recalcula totais |
TRG_KPT_COR_USUARIO | Ao alterar usuário, registra log de auditoria |
Regra Importante:
Máximo 1 trigger por tabela. Se precisar de múltiplas ações, consolide em uma única trigger com a lógica interna separada por tipo de evento (IF inserting, IF updating, etc.).
Erros Comuns:
| Errado | Correto | Por quê |
|---|---|---|
TRG_LANCAMENTO | TRG_KPT_FIN_LANCAMENTO | Falta namespace e módulo |
TRIGGER_KPT_FIN_LANC | TRG_KPT_FIN_LANCAMENTO | Prefixo deve ser TRG, nome deve ser completo |
Functions (FNC)
Formato:
FNC_KPT_[MODULO]_[ACAO]
O que são: Functions são operações que retornam um valor. Diferente de Procedures (que executam ações), Functions calculam e devolvem um resultado. Podem ser usadas diretamente em queries SQL (SELECT, WHERE, etc.).
Quando usar:
- Cálculos reutilizáveis (desconto, imposto, conversão)
- Validações que retornam verdadeiro/falso
- Formatação de dados no banco
- Transformações usadas em múltiplas queries
Quando NÃO usar:
- Operações com efeitos colaterais (INSERT, UPDATE, DELETE) — use Procedure
- Lógica que muda frequentemente — mantenha na aplicação Java
Exemplos:
| Function | Retorno | O que faz |
|---|---|---|
FNC_KPT_FIN_CALCULAR_DESCONTO | DECIMAL | Calcula desconto baseado em regras |
FNC_KPT_FIN_CONVERTER_MOEDA | DECIMAL | Converte valor entre moedas |
FNC_KPT_COM_VALIDAR_CPF | BOOLEAN | Valida se CPF é válido |
FNC_KPT_COM_VALIDAR_CNPJ | BOOLEAN | Valida se CNPJ é válido |
FNC_KPT_COR_FORMATAR_TELEFONE | VARCHAR | Formata telefone com máscara |
Uso em Queries:
SELECT
produto_nome,
preco_unitario,
FNC_KPT_FIN_CALCULAR_DESCONTO(preco_unitario, categoria_id) AS desconto
FROM TGFPRO
WHERE FNC_KPT_COM_VALIDAR_CPF(cliente_cpf) = TRUE;Views (VW)
Formato:
VW_KPT_[MODULO]_[DESCRICAO]
O que são: Views são consultas salvas que funcionam como tabelas virtuais. Não armazenam dados — apenas definem uma query que é executada quando consultada. Simplificam queries complexas e centralizam lógica de consulta.
Quando usar:
- Relatórios que combinam múltiplas tabelas
- Consultas usadas frequentemente por múltiplas partes do sistema
- Abstrair complexidade do schema para a aplicação
- Dashboards e KPIs
Quando NÃO usar:
- Se a query é simples (SELECT de uma tabela)
- Se precisa de parâmetros dinâmicos (use Function ou Procedure)
Exemplos:
| View | O que mostra |
|---|---|
VW_KPT_FIN_RELATORIO_VENDAS | Consolidado de vendas por período |
VW_KPT_FIN_FLUXO_CAIXA | Entradas e saídas do caixa |
VW_KPT_EST_SALDO_ESTOQUE | Saldo atual por produto/depósito |
VW_KPT_EST_PRODUTOS_MINIMO | Produtos abaixo do estoque mínimo |
VW_KPT_COM_PEDIDOS_ABERTOS | Pedidos pendentes de faturamento |
Quick Reference — Objetos do Dia a Dia
| Tipo | Prefixo | Formato | Exemplo |
|---|---|---|---|
| Stored Procedure | STP | STP_KPT_[MOD]_[ACAO]_[ENTIDADE] | STP_KPT_FIN_CALCULAR_IMPOSTO |
| Trigger | TRG | TRG_KPT_[MOD]_[TABELA] | TRG_KPT_EST_MOVIMENTO |
| Function | FNC | FNC_KPT_[MOD]_[ACAO] | FNC_KPT_COM_VALIDAR_CPF |
| View | VW | VW_KPT_[MOD]_[DESCRICAO] | VW_KPT_FIN_FLUXO_CAIXA |
Objetos de Banco — Desenvolvimento Keeptor Interno
Os objetos abaixo são utilizados exclusivamente em desenvolvimento no banco de dados próprio da Keeptor (Plataforma Keeptor, produtos internos). Em projetos de clientes, estes objetos já existem no banco do ERP e você não precisa criá-los.
Indexes (IDX)
IDX_KPT_[TABELA]_[CAMPO(S)]
Exemplo: IDX_KPT_COM_PEDIDO_DATA, IDX_KPT_COM_PEDIDO_CLIENTE_STATUS
Regra: Toda coluna usada frequentemente em WHERE ou JOIN deve ter índice. Revise o plano de execução (EXPLAIN) antes de criar.
Primary Keys (PK)
PK_KPT_[TABELA]
Exemplo: PK_KPT_COM_PEDIDO, PK_KPT_FIN_LANCAMENTO
Foreign Keys (FK)
FK_KPT_[TABELA_ORIGEM]_[TABELA_DESTINO]
Exemplo: FK_KPT_COM_PEDIDO_CLIENTE (pedido referencia cliente)
Unique Constraints (UK)
UK_KPT_[TABELA]_[CAMPO]
Exemplo: UK_KPT_COR_USUARIO_EMAIL (email único por usuário)
Check Constraints (CK)
CK_KPT_[TABELA]_[CAMPO]
Exemplo: CK_KPT_FIN_LANCAMENTO_VALOR (valor deve ser > 0)
Sequences (SEQ)
SEQ_KPT_[MODULO]_[ENTIDADE]
Exemplo: SEQ_KPT_COM_PEDIDO (sequência numérica de pedidos)
Quick Reference — Objetos Keeptor Interno
| Tipo | Prefixo | Formato | Exemplo |
|---|---|---|---|
| Index | IDX | IDX_KPT_[TABELA]_[CAMPO] | IDX_KPT_COM_PEDIDO_DATA |
| Primary Key | PK | PK_KPT_[TABELA] | PK_KPT_COM_PEDIDO |
| Foreign Key | FK | FK_KPT_[ORIGEM]_[DESTINO] | FK_KPT_COM_PEDIDO_CLIENTE |
| Unique | UK | UK_KPT_[TABELA]_[CAMPO] | UK_KPT_COR_USUARIO_EMAIL |
| Check | CK | CK_KPT_[TABELA]_[CAMPO] | CK_KPT_FIN_LANC_VALOR |
| Sequence | SEQ | SEQ_KPT_[MOD]_[ENTIDADE] | SEQ_KPT_COM_PEDIDO |
Regra absoluta: Todo objeto de banco DEVE seguir este padrão. Objetos fora do padrão serão rejeitados.