数据库名称约定:DATETIME列

Pet*_*ger 42 database sql-server naming-conventions

DATETIME列的命名约定是什么(在我的例子中,使用MS SQL Server)

对于存储行创建时的列,CreatedDatetime有意义,或LastModifiedDatetime.

但是对于一个简单的表,让我们说一个名为Event的表,你会创建一个名为:

EventID,                 // Primary key
EventDatetime,           // When the event is happening
EventEnabled             // Is the event is on
Run Code Online (Sandbox Code Playgroud)

要么

ID,                      // Primary key
Datetime,                // When the event is happening
Enabled                  // Is the event is on
Run Code Online (Sandbox Code Playgroud)

如果您既不使用约定:请提供您将使用的列名称.

Ste*_*ven 81

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

ACTION_WORD定义了什么的列表示,和后缀(_on)指示该列表示时间.

其他后缀(或者甚至前缀)可以被用于指定的数据类型(_at,_UTC,when_等).

具有描述性.始终如一.

  • 我喜欢使用`_on`的建议.我通常使用`_at`.但是我搜索了这个问题,因为某些动作词+`_at`是不明确的,无论该列是关于时间还是位置.`_on`更明确地讲述时间. (3认同)

Phi*_*ley 14

当你不使用EventIDInt或EventEnbaledVarchar时,为什么称它为EventDateTime?为什么要包含列名中的数据类型?(我的经验法则是,如果他们访问表中的数据,他们更好地知道列数据类型是什么,'否则他们不知道他们正在使用什么.)

这些天我更喜欢我认为的描述性列名,例如:
CreateDate
DateCreated
CreatedAt
CreatedOn(如果没有时间部分)
AddedOn(可能是semanitcally更合适,具体取决于数据)

选择一个"标签"并在每个需要该类数据的表中一致地使用它也是一件好事.例如,在(几乎)每个表中都有一个"CreateDate"列很好,因为这样你就会知道每个表中的哪一列会告诉你何时创建了一行.不要挂断"但他们都必须有独特的名字"的说法; 如果您正在编写查询,则最好知道从哪个表中提取每个列.

- 编辑 -

我刚刚回忆起我过去做过的一个例外.如果DateTime(或SmallDateTime)列不包含时间部分,只包含日期,作为"提醒"我将"日期"放在列名中,例如"BilledDate"而不是"Billed"或"BilledOn".在追踪添加行时,这不应该适用,因为您也需要时间.


Cha*_*ana 13

名称应该传达数据的业务含义在列中..."DateTime"只是数据的类型.事件发生的时候?什么时候录制?什么时候存储在DB中?上次修改数据时?

如果它有效地传达了列包含的含义,那么名称就可以了."DateTime"不太好."EventDateTime"只是略微好一些.如果表保存事件,则表中的任何datetime字段都是EventDateTime(它记录与事件相关的某些日期时间).虽然如果"事件"表中只有一个日期时间列,那么EventDateTime意味着它发生在事件发生时,所以这可能没问题.

选择或选择名称,以便传达价值的含义 ......

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

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

  • @ Peter-阅读最后一句:"[选择]名称,以便传达价值的*含义*." 您尚未在表中描述datetime列的含义,因此我们无法推荐更有意义的列名. (2认同)