Version 4 (modified by viani, 17 years ago) (diff) |
---|
Padrões de Nomenclatura para Banco de Dados
TOC(heading=Workflow,depth=1,WF/Changelog,WF/Documentacao,WF/Instalacao,WF/Links,WF/Propostas)?
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):
- eliminar 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 e nomelivro).
- evita a necessidade de envolver nomes com colchetes (ex: [nome livro] oh '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:
- ordena a tabela resultado da junção com as entidades relacionadas.
- expressa o propósito de composição da tabela.
- deve ser evitado quando houver muitas tabelas com junção para as mesmas entidades originais.
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 completamente óbvio.
- se houver múltiplas chaves estrangeiras se referenciando a uma mesma tabela, prefixe o campo da chave estrangeira com um adjetivo descritivo apropriado (adjetivo_nome_campo, ex: technical_funcionario_id).