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.