Boas práticas de nomenclatura em bancos de dados SQL Server
- #SQL Server
Padrões de Nomenclatura para Banco de Dados SQL Server
Vi no curso de SQL em alguns momentos o uso de nomes de tabelas no plural, e isso chamou minha atenção. Trabalhei em multinacionais e empresas de pequeno porte, e com bases de dados gigantescas, e se tem algo que deixa qualquer um desesperado é um banco de dados que não tem padrões claros e bem definidos, e pior ainda, sistemas legados em que há nomes de tabelas no plural e singular para a mesma entidade (ex. tabela cliente e tabela clientes).
Algumas regras básicas e gerais podem evitar enormes dores de cabeça, como:
- Não usar espaço em branco;
- Não usar hífen, acentos e caracteres especiais;
- Não usar palavras reservadas como: INSERT, DELETE, SELECT e etc.;
- Não usar mais que 30(trinta) caracteres;
- Aliadas a essas limitações, seguem abaixo também algumas sugestões:
- Não usar verbos;
- Escrever em maiúsculo ou minúsculo;
- Não utilizar palavras no plural;
- Não usar preposições;
- Não usar números;
- Não usar nomes próprios;
- Separe os nomes com underline;
- Crie nomes sucintos e objetivos;
- O nome não pode ter várias interpretações;
- Todos os objetos devem possuir um prefixo, com exceção das tabelas operacionais
Trabalhando com times .net, os seguintes padrões são muito utilizados.
Normas gerais:
- Use letras minúsculas.
- Separe palavras e prefixos com "_" (underline), nunca use espaços.
- Qualquer tabela temporária, que poderá ser excluída após a utilização, deve acompanhar da data em seu nome ddMMyyyy. Ex: tb_sio_migracao_usuario_10112003
- Crie uma sigla de 3 letras que possa expressar o nome do banco de dados.
Tabelas
- Crie uma sigla de 3 letras que possa expressar o nome da tabela.
- Toda tabela deve iniciar com “tb” seguido da sigla do sistema e o nome da tabela: Ex: tb_sia_nome_tabela Use nomes no singular, nunca plural.
- Evite nomes com acrônimos, abreviados ou concatenados.
- Para uma tabela associativa (n:n), concatene o nome das duas tabelas envolvidas, ficando a tabela principal na frente. Campos/Colunas
- A chave primária deve ter o nome da tabela com o prefixo "cod" quando for do tipo inteiro.
- Chaves estrangeiras devem ter o mesmo nome das chaves primárias às quais elas se referem; no caso de autorrelacionamento, segue o mesmo nome e antes da sigla da tabela, deve colocar um descritivo que sinalize a sua função. Ex: cod_fornecedor_matriz_for
- Todo nome de campo deve ser composto por 3 caracteres expressando o tipo do campo, concatenado com o nome do campo e com a sigla da tabela de origem. Ex: int_idade_pes (campo de tipo inteiro que armazena a idade na tabela pessoa)
- Use nomes no singular, nunca plural.
- As siglas dos tipos do campo podem conter variações predefinidas que não afetarão a leitura do desenvolvedor. Conforme tabela abaixo:
Views
- As “Views” seguem as mesmas regras de Tabelas, mudando apenas o prefixo de “tb” para “vw”
Stored Procedures
- As “stored procedures” iniciam com “sp” acompanhado da sigla do sistema, o nome da ação e da tabela envolvida.
- As ações que acompanham o nome da “stored procedure” são:
- Listar (pode retornar mais de 1 resultado)
- Consultar (só pode retornar 1 resultado)
- Incluir (terá como ação principal a inserção de 1 registro)
- Alterar (terá como ação principal a alteração de 1 registro)
- Excluir (terá como ação principal a exclusão de 1 registro)
- No nome da “stored procedure” após a sigla do banco, o nome não deve ser separado por “_” (underline) e sim tudo junto com as iniciais em maiúsculo, expressando uma função e sua ação, de forma que fique bastante claro para o desenvolvedor. Ex: sp_sia_ListarNfePorCnpjEmissor
Functions
As “Functions” seguem as mesmas regras da “Stored Procedure”, mudando apenas o prefixo de “sp” para “fc”.