Convenções de nomenclatura para banco de dados
Pode ser besteira, mas em toda empresa que trabalhei ou prestei consultoria, que usavam essas regras tive pouca dificuldade em entender a modelagem.
Geral
Os nomes das tabelas e colunas devem estar minúsculas e as palavras devem ser separadas por underscore , seguindo o padrão snake case. E Os termos devem estar em inglês (não é uma prática essencial mas globaliza a informação), exceto alguns termos que não há tradução apropriada para o inglês . Sempre prefira nomes descritivos, evitando ao máximo contrações. Não use o nome da tabela como prefixo na coluna, isso é uma redundância desnecessária.
Tabelas
Os nomes das tabelas devem estar no plural .
Ex:
-
Bom :
users,posts,roles,room_categories -
Ruim :
user,post,grupos,quarto_categoria
Colunas
Os nomes das colunas devem estar no singular .
No máximo até 30 caracteres.
Não use como prefixo o nome da tabela, isso é redundar informação.
Não use espaços entre as palavras.
Não inicie por números.
Evite acentos, caracteres especiais com exceção do undescore (_).
Sempre e minúsculo.
Ex:
-
Bom :
cpf,name,age -
Ruim :
endereco,posts,idade
Foreign keys
Todas as foreign keys devem seguir o padrão nome_da_tabela_no_singular_id .
Por exemplo, caso a tabela users tenha um relacionameto com a tabela roles , o nome da coluna foreign key da tabela users deve ser role_id .
Primary keys
A primary key de toda tabela deve ser uma coluna de inteiros com incremento automático, chamada id .
Timestamps
Toda tabela deve definir duas colunas para colocar os timestamps: created_at e updated_at . A coluna created_at recebe automaticamente o timestamp do momento que o registro for criado. A coluna updated_at recebe automaticamente o timestamp do momento que o registro for alterado.
Quando houver logs, nesse caso essas colunas não são essenciais na tabela, pois os logs já possuem essa informação.