Respostas:
Você deve descrever o objetivo da coluna e não necessariamente o tipo de dados. Você pode incluir data / hora / carimbo de data / hora no nome, mas também deve incluir o significado. Por exemplo
Adicionar data / hora / carimbo de data e hora no final é particularmente útil quando a ausência da adição entra em conflito com outra coluna. Por exemplo, uma tabela pode precisar de um Status e um StatusTime.
Como cerca xyz_at
de um timestamp
e xyz_on
para um date
campo - por exemplo, start_at
ou start_on
?
Normalmente, eu evitaria incluir o tipo de dados no nome do campo - muito melhor se você puder inferir o que precisa saber sobre o tipo no nome de qualquer campo ( description
é improvável que um campo chamado seja um integer
) - mas ser capaz de informar a diferença entre a timestamp
e a date
geralmente é útil.
Eu uso:
updated_at
Poderia ser. Mas acho que a resposta é, como sempre na nomeação, usar o nome mais conciso que remove toda ambiguidade realista. Ou seja, se em um contexto particular há potencial para uma certa confusão, eliminá-lo, mas não use nomes que são mais detalhado do que é necessário para que
Eu olhei para o seu perfil e ele diz que você trabalha com o SQL Server e no SQL Server o tipo de dados TIMESTAMP não tem nada a ver com data ou hora e é usado para o tipo de versão que carimba as linhas. Isso é muito útil para identificar quais linhas foram modificadas a partir de um determinado momento.
Se você usar o TIMESTAMP, não precisará especificar um nome de coluna e o SQL Server criará uma coluna "TimeStamp" para você. Mas é recomendável usar o tipo de dados "ROWVERSION" e, nesse caso, você deve especificar o nome da coluna.
Qual é o melhor nome para uma coluna como essa? Depende, e eu usaria algo como VersionStamp, RV etc ... O que eu considero importante NÃO é como você o nomeia, mas você está usando isso de forma consistente em todos os aspectos.
HTH
Ref: http://msdn.microsoft.com/en-us/library/ms182776(v=sql.90).aspx
Descobri que o uso de nomes de colunas como create_time
, update_time
e expire_time
leva a uma melhor legibilidade quando se trata de nomeação e especificações de métodos (RSpec).
Prefiro usar um prefixo de DT para carimbos de data. Por exemplo: DTOpened, DTClosed, DTLastAccessed. Isso permite listar todos os DTxxxx para uma referência rápida de todos os carimbos de data em uma determinada tabela.
Eu trabalho na Texas Instruments, e em seus sistemas eles usam xxxx_ dttm
Eu prefiro usar convenções que já existem.
As linguagens de programação e Unix têm uma convenção amplamente aceita mtime
para o horário de modificação
Para a hora da criação,
btime
crtime
otime
(não pergunte, adivinhando "origem").Então, para mim, eu escolho mtime
e crtime
para metadados.
Para dados fornecidos pelo usuário, eu vou com o que o campo representa. Se é um aniversário, eu apenas digo user_birthday
.
No que diz respeito à precisão, para alguns, parece pendurá-los com muita precisão. Você pode armazenar o seu birthdate
como um carimbo de data / hora (afinal, você nasceu tecnicamente a uma hora do dia), mas as especificações SQL transmitem de maior precisão para menor precisão; portanto, se você estiver usando um banco de dados decente, isso não deve ser um problema. . No próprio aplicativo, você sempre pode truncar quando necessário. Ou seja, eu nunca iria birthday_date
.
Eu usaria um prefixo significativo e _TSMP como sufixo, por exemplo, CREATION_TSMP ou LAST_UPDATE_TSMP
Conforme sugerido por @Evan Carroll, siga os padrões existentes, a menos que você tenha motivos fortes para quebrar esse padrão.
Se isso é algo novo, você pode seguir qualquer resposta que melhor lhe convier.
Eu uso * _on e * _by porque isso me ajuda a mantê-lo consistente para quando e quem da linha:
- created_on & created_by
- updated_on & updated_by
- deleted_on & deleted_by -- soft delete
- approved_on & approved_by