数据库名称约定:DATETIME列

什么是DATETIME列的命名约定(在我的情况下,使用MS SQL Server)

对于存储创build行时CreatedDatetime有意义的列或LastModifiedDatetime

但是对于一个简单的表格,让我们说一个叫Event的东西,你会创build一个名为:

EventID, // Primary key EventDatetime, // When the event is happening EventEnabled // Is the event is on 

要么

 ID, // Primary key Datetime, // When the event is happening Enabled // Is the event is on 

如果您不使用惯例:请提供您将使用的列名称。

我通常将DATETIME列命名为ACTION_WORD_on: created_on, completed_on, etc.

ACTION_WORD定义列表示的内容,后缀( _on )表示列表示时间。

其他后缀(甚至前缀)可以用来指定数据types( _at_UTC_UTC等)。

是描述性的。 始终如一。

为什么叫EventDateTime,当你不使用EventIDInt或EventEnbaledVarchar? 为什么在列名中包含数据types? (我的经验法则是,如果他们访问表中的数据,他们会更好地知道列数据types是什么,否则他们不知道他们在做什么。)

这些天我更喜欢我所描述的列名,比如:
CREATEDATE
创builddate
CreatedAt
CreatedOn(如果没有时间部分)
AddedOn(根据数据,可能更适合于semanitcally)

select一个“标签”,并在每个需要这种数据的表格中使用它,也是一件好事。 例如,在(几乎)每个表中都有一个“CreateDate”列是没有问题的,因为那样你总能知道每一个表中的哪一列会告诉你什么时候创build了一行。 不要挂上“但他们都必须有独特的名字”的说法; 如果你正在写一个查询,你最好知道你从哪个表中拉出每一列。

– 编辑 –

我刚刚回想起过去我曾经做过的一个例外。 如果DateTime(或SmallDateTime)列不包含时间部分,只是date,作为“提醒”,我会在列名称中join“Date”,如“BilledDate”而不是“Billed”或“BilledOn”。 这在追踪添加行时不适用,因为您也需要时间。

该名称应该传达什么业务数据的意义是在列…“date时间”只是数据的types。 事件发生了吗? 当它被logging? 当它被存储在数据库中? 当数据最后修改?

如果它有效地传达了列所包含的内容的意义,名称是好的。 “DateTime”不好。 “EventDateTime”只是稍微好一点。 如果表中包含事件,则表中的任何date时间字段都是EventDateTime(它logging与该事件相关的某个date时间)。 虽然如果“Events”表中只有一个date时间列,那么EventDateTime意味着事件发生的时间,所以这很可能是正确的。

select或select名称,以便传达值的含义

鉴于编辑的问题,一些build议的名称可能是:

发生或OccurredDateTime或OccurredUTC(或OccurredLocal),或者如果您的业务模型中的事件有持续时间,则可能是StartedUtc,BeganUtc或InitiatedUtc等

我更喜欢以第二种forms创build列 – 尽pipe我可能需要一个比Datetime更具描述性的名称,具体取决于它的用途。

编辑:在这种情况下,我实际上可能会select一个单一字段的混合,并将其设置为“EventDate”,“StartDate”或类似的东西。

我会避免使用数据types的列名称(一个DATETIME列date时间),所以我投了第一个选项。

我会调用列HappensAt,因为行描述事件和问题的属性(列)细节发生时。 一般来说,我尝试用单数名词和我的属性用可以用来阅读的短语来命名我的表格

表名(键)columname columnvalue

所以我可以说

事件(131)发生在2009年12月21日21:30

但这不是一个不可侵犯的规定。 我仍然logging出生date列中的某个人的date,而不是WasBornOn列。 当你命名的时候,你必须记住自然语言的常见用法。 争取自然使用,其余的将随之而来。 盲目遵守规则,你的读者会为理解而努力。

也许这只是我,但我不相信你应该用数据types命名你的列,既不复制整个字段的表名。

这里有很多很好的答案,所以我不会重复。 但请记住,永远不要命名一列保留字!

另外,我真的很喜欢选项1中的列名称。

我可能会使用像“ WhenRaisedUtc ”的东西。