wiki:WF/PadroesdeNomenclaturaparaBancosdeDados

Version 8 (modified by viani, 8 years ago) (diff)

--

Padrões de Nomenclatura para Banco de Dados

Normas gerais

  • Use letras maiúsculas para palavras reservadas (sintaxe) SQL.
  • Use letras minúsculas para elementos de negócio (particulares do projeto em desenvolvimento):
    • elimina a dúvida sobre qual a "caixa" correta assim como outros erros relacionados.
    • aumenta a velocidade de escrita e exatidão.
    • diferencia nomes de tabelas e campos da sintaxe com caixa alta do SQL.
  • Separe palavras e prefixos com "_" (underline), nunca use espaços.
    • melhora legibilidade (ex: nome_livro).
    • evita a necessidade de envolver nomes com colchetes (ex: [nome livro] ou 'nome livro').
    • maior independência de plataforma.
  • Evite usar números.
  • Procure identar os comandos SQL, principalmente se os mesmos forem extensos.
    • Melhora a legibilidade do código
   Exemplo sem identação:

   SELECT filial_id, produto_id, pro_descricao, pro_valor_unitario FROM produto WHERE filial_id = 2
   AND pro_valor_unitario > 100;

   Exemplo com identação:

   SELECT filial_id, produto_id, pro_descricao, pro_valor_unitario
     FROM  produto
     WHERE filial_id          = 2
     AND   pro_valor_unitario > 100;

Tabelas

  • Escolha nomes sem ambiguidade, curtos, não usando mais que duas palavras.
    • distingue tabelas facilmente.
    • facilita nomear campos únicos assim como tabelas de metadados.
  • Use nomes no singular, nunca plural.
    • promove consistência com a nomenclatura de campos de chave primárias e tabelas de metadados.
    • garante ordenação alfabética de uma tabela antes de suas tabelas de metadados ou relacionadas.
    • evita confusão de regras de plural do português ou inglês.
    • estrutura SQL mais "gramatical" (ex: SELECT activity.activity_name --ao invés de-- SELECT activities.activity_name).
  • Evite nomes com acrônimos, abreviados ou concatenados.
    • provê arquitetura auto-documentável.
    • facilita tanto para desenvolvedores quanto para não-desenvolvedores lerem e entenderem.
  • Prefixe as tabelas de metadados (lookup tables) com o nome das tabelas a que elas se relacionam.
    • agrupa tabelas relacionadas (ex: activity_status, activity_type, etc).
    • evita conflitos de nomes de tabelas de metadados de diferentes entidades.
  • Para uma tabela associativa (n:n), concatene o nome das duas tabelas envolvidas:
    • expressa o propósito de composição da tabela.
    • esta regra não se aplica quando houver mais de uma tabela associativa para as mesmas entidades originais
  • Crie comentários para a tabela e para as colunas:
    • facilita a compreensão do propósito da tabela.
    • explica o conteúdo presente em uma coluna.

Campos/Colunas

  • A chave primária deve ter o nome da tabela com o sufixo "_id".
    • permite que a chave primária seja deduzida ou lembrada a partir apenas do nome da tabela (ex: chave primária da tabela "produto" seria "produto_id".
    • consistência com o nome da chave primária.
    • evita a necessidade de usar apelidos (alias) na programação.
    • para tabelas que possuem mais de um campo compondo a chave primária, essa regra não se aplica, sendo que os campos poderão continuar tendo o sufixo "_id", porém o seu nome que antecede tal sufixo terá que ser outro diferente do nome da tabela. Ex: tabela "imobilizado", PK = patrimonio_id + ano_id.
    • quando a chave primária é composta por campos FK, os mesmos permanecerão com os nomes dos campos PK das tabelas relacionadas. Ex: tabela "item_nota_fiscal", a PK seria nota_fiscal_id e item_nota_fiscal_id, onde o campo nota_fiscal_id é a FK que vem de outra tabela e o campo item_nota_fiscal_id é da própria tabela em questão, e ambos juntos formam a PK
  • Chaves estrangeiras devem ter o mesmo nome das chaves primárias às quais elas se referem.
    • faz com que as tabelas às quais elas se referem fique óbvio;
    • se houver múltiplas chaves estrangeiras se referenciando a uma mesma tabela, prefixe o campo da chave estrangeira com um nome descritivo apropriado (adjetivo_nome_campo, ex: titular_funcionario_id, substituto_funcionario_id).

Restrições (Constraints)

  • O nome da chave primária deverá ser formado pelo nome da tabela, acrescido do sufixo _pkey. (Ex: tabela "reserva_sala", chave "reserva_sala_pkey").
  • O nome das chaves estrangeiras deverão ser formados pelo nome da tabela + o sufixo _fknn, onde 'nn' é um sequencia começando em '01'. (Ex: reserva_sala_fk01).
    • O objetivo de nomear as chaves estrangeiras em sequência é simplificar a escrita.

Índices

  • O nome de um índice deverá ser formado pelo nome da tabela + campo indexado + sufixo _idx. (Ex: ocorrencia_servico_id_idx).