[BD] Padronização de Nomes de Tabelas e Colunas de Banco de Dados

Publicado: 01/10/2013 em Backup, Bases de Dados, Segurança da Informação, Softwares, SQL
Tags:, , , ,
databasemodel1
Pode-se dizer que, em muitos aplicativos, atualmente, o banco de dados é a ‘alma’ do sistema. Acredito que grande parte dos softwares atualmente pode ser vista basicamente como ferramentas criadas para inserir, extrair e realizar algum processamento sobre dados de uma empresa ou órgão.

Durante o processo de desenvolvimento, estas manipulações sobre os dados podem ser muito dificultadas caso o banco de dados não tenha sido bem organizado ou não se tenha utilizado alguma metodologia para sua criação. Bem, no momento eu não estou falando sobre um banco de dados relacional e normalizado até a 3ª forma normal, mas sim da própria escolha dos nomes de tabelas e colunas do banco.

Quando você cria um banco de dados pequeno, com poucas tabelas, isso não parece um assunto muito importante, mas quando você precisa trabalhar com sistemas com centenas de tabelas, as coisas mudam. Poderá ser um suplício conseguir extrair alguma infomação de um banco que não segue nenhuma regra sobre a nomeação das tabelas, relacionamentos e colunas.

Por esse motivo resolvi criar um pequeno tutorial propondo uma metodologia para a criação de nomes de tabelas e colunas do banco de dados. Este tutorial foi feito com base na observação de práticas comuns em bancos de dados ‘bem feitos’ e na minha própria experiência como desenvolvedor.

Acredito que a utilização metodologias como essa irá reduzir os custos de desenvolvimento e manutenção do software, facilitando e tornando mais intuitiva a construção de queries SQL para inserção e extração de dados.

Um grande problema com a nomenclatura dos bancos de dados é que não há padrões, uma coisa que um desenvolvedor considera uma boa prática, outro pode achar algo ruim. É uma questão de gosto e costume. Meu principal objetivo com esse post é realizar uma discutição sobre o assunto e tornar o desenvolvimento mais rápido e intuitivo, portanto quero incentivar críticas ao modelo proposto e a colaboração com novas idéias.

Como já foi dito, o tutorial contém um apanhado de práticas comuns em bancos de dados, como a utilização de abreviaturas e prefixos, mais algumas adaptações minhas para tornar a localização dos dados e dos relacionamentos mais intuitiva.

Bem, vamos logo ao tutorial:
1 Disposições Gerais

Todos os nomes serão escritos em letras maiúsculas, preferencialmente sem a utilização de artigos ou pronomes como, por exemplo, “de”, “das” ou “com”. Não é permitida a utilização de caracteres especiais, acentos ou cedilha em qualquer nome. Todas as palavras e abreviações devem ser separadas pelo caractere underscore ( _ ). Exemplo: PESSOAS_FISICAS.

2 Abreviaturas

As abreviaturas serão constituídas sempre por 3 caracteres. Caso a abreviatura já tenha sido usada, encontrar uma solução que torne a identificação intuitiva, preferencialmente alterando o 3º caractere da abreviatura utilizando a próxima consoante no nome correspondente.
Exemplo:
Nome: Servicos Amb. Abreviatura: SEA
Nome: Servicos Autorizacoes. Abreviatura: SET

Número de palavras Norma Exemplo
1 Palavra Utilizar as 3 primeiras letras da palavra Nome: Pessoas
Abreviatura: PES
2 Palavras Utilizar as 2 primeiras letras da primeira palavra e a 1ª letra da segunda palavra Nome: Pessoas Físicas
Abreviatura: PEF
3 ou mais Palavras Utilizar a 1ª letra das duas primeiras palavras e a 1ª letra da última palavra Nome: Tipos Contrato Prestadores
Abreviatura: TCP

3 Abreviatura dos Módulos

Os nomes das tabelas terão, como prefixo, a abreviatura do módulo ao qual pertence ou do módulo ao qual está mais intrinsecamente ligado ou do módulo ao qual a tabela está mais intuitivamente associada.
Exemplos:
a) A Tabela PAGAMENTOS pertence ao módulo COBRANÇA – COB_PAG_PAGAMENTOS
b) A Tabela PESSOAS_FISICAS é utilizada por muitos módulos, mas é intuitivamente associada ao módulo CADASTRO – CAD_PEF_PESSOAS_FISICAS

O objetivo de utilizar o prefixo com a abreviatura do módulo é agrupar as tabelas de cada módulo na lista de tabelas.

4 Nomes de Tabelas

Todos os nomes de tabelas, sempre que aplicável, deverão ser escritos no plural e devem seguir o seguinte protótipo:
{ABREVIATURA DO MÓDULO}_{ABREVIATURA DA TABELA}_{NOME DA TABELA}
Exemplo:
CAD_PEF_PESSOAS_FISICAS

Todos os nomes de tabelas devem ser escritos por extenso, utilizando o nome mais intuitivo para identificação da tabela, sem utilização de abreviaturas, exceto em casos em que o nome da tabela for extremamente grande.

4.1 Tabelas Auxiliares n/n

Em tabelas que resolvem relacionamentos n/n, os nomes das tabelas serão o nome completo da tabela principal mais o nome da tabela auxiliar, ou o nome da tabela de maior relevância mais a tabela de menos relevância. Considerar o item 5.3 – Relações de Pertinência.
{ABREVIATURA TABELA PRINCIPAL}_{NOME TABELA PRINCIPAL}_{NOME TABELA AUXILIAR}
Exemplos:

ADM_GRUPOS – Tabela principal, a que contém as entidades tabela secundária.
ADM_USUARIOS – Tabela secundária, usuários pertencem a grupos.
ADM_GRUPOS_USUARIOS – Resolução da relação n/n.

CAD_PES_PESSOAS
CAD_END_ENDERECOS
CAD_PES_PESSOAS_ENDERECOS

FIN_PED_PEDIDOS
FIN_MAT_MATERIAIS
FIN_PED_PEDIDOS_MATERIAIS

5 Nomes de Colunas

Todas as colunas escritas em letras minúsculas e serão compostas somente pela abreviatura da tabela e o nome da coluna, de acordo com o seguinte protótipo:
{abreviatura da tabela}_{nome da coluna}
Exemplo:
pes_nome

5.1 Chaves Primárias

Todas as chaves primárias terão como nome completo da tabela mais a palavra ‘id’, de acordo com o protótipo.
{abreviatura da tabela}_{nome da tabela}_id
Exemplo:
pes_pessoas_id

5.2 Chaves Estrangeiras

Todas as chaves estrangeiras terão o prefixo da tabela a que pertence e o nome da chave primária da tabela a qual faz referência, incluindo a abreviatura.
{abreviatura da tabela}_{nome da chave primária referenciada}
Exemplo:
PESSOA_FISICA se relaciona com a tabela PROFISSOES através da seguinte chave estrangeira: pef_pro_profissoes_id

5.3 Relações de Pertinência

Quando houver uma relação de pertinência de um atributo pertencer em relação a uma entidade em uma tabela, o nome da coluna deverá ser o nome do atributo, seguido pelo nome da entidade a qual ele pertence:
{abreviatura da tabela}_{nome do atributo}_{nome da entidade}
Exemplos:
Na tabela COBRANCA existem valores do titular, dos dependentes e das co-participações.
cob_valor_titular
cob_valor_dependente
cob_valor_co_participacao

5.4 Outros Nomes

Os nomes dos atributos devem seguir sempre o mesmo padrão, evitando diferenças entre as tabelas na referência do mesmo atributo. Por exemplo, sempre que se referir a um nome de alguma entidade, utilizar a palavra ‘nome’. O mesmo para “valor”, “tipo”, “data”, etc.
Exemplos:
CAD_PES_PESSOAS.pes_nome,
CAD_LOG_LOGRADOUROS.log_nome,
CAD_BAN_BANCOS.ban_nome,
CAD_PES_PESSOAS.pes_data_nascimento,
CAD_PES_PESSOAS.pes_data_inclusao,

6 Resumo 

Abreviaturas

Número de palavras Norma Exemplo
1 Palavra Utilizar as 3 primeiras letras da palavra Nome: Pessoas
Abreviatura: PES
2 Palavras Utilizar as 2 primeiras letras da primeira palavra e a 1ª letra da segunda palavra Nome: Pessoas Físicas
Abreviatura: PEF
3 ou mais Palavras Utilizar a 1ª letra das duas primeiras palavras e a 1ª letra da última palavra Nome: Tipos Contrato Prestadores
Abreviatura: TCP

Nomes de Tabelas
{ABREVIATURA DO MÓDULO}_{ABREVIATURA DA TABELA}_{NOME DA TABELA}

Tabelas Auxiliares n/n
{ABREVIATURA TABELA PRINCIPAL}_{NOME TABELA PRINCIPAL}_{NOME TABELA AUXILIAR}

Nomes de Colunas
{abreviatura da tabela}_{nome da coluna}

Chaves Primárias
{abreviatura da tabela}_{nome da tabela}_id

Chaves Estrangeiras

{abreviatura da tabela}_{nome da chave primária referenciada}

Relações de Pertinência
{abreviatura da tabela}_{nome do atributo}_{nome da entidade}

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s