数据库名称约定:DATETIME列

时间:2009-09-04 14:15:51

标签: sql-server database naming-conventions

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

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

但是对于一个简单的表,假设一个名为Event的表,你会创建一个名为:

的列
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

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

9 个答案:

答案 0 :(得分:80)

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

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

其他后缀(甚至前缀)可用于指定数据类型(_at_UTCwhen_等。

具有描述性。保持一致。

答案 1 :(得分:14)

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

这些天我更喜欢我所说的描述性列名,例如:
  CREATEDATE
  dateCreated会
  CreatedAt
  CreatedOn(如果没有时间部分)
  AddedOn(可能在语义上更合适,取决于数据)

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

- 编辑 -

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

答案 2 :(得分:13)

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

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

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

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

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

答案 3 :(得分:4)

我更喜欢以第二种形式创建列 - 虽然我可能想要一个比Datetime更具描述性的名称,具体取决于它的用途。

编辑:在这种情况下,我实际上可能会使用该单一字段的混合,并使其成为'EventDate','StartDate'或类似的东西。

答案 4 :(得分:3)

我会避免使用数据类型作为列名(名为Datetime的DATETIME列),所以我投票给第一个选项。

答案 5 :(得分:2)

我会调用HappensAt列,因为该行描述了一个事件,并且当发生时,该问题属性(列)。作为一般规则,我尝试使用单数名词命名我的表格,并使用可用于阅读的短语命名我的属性,例如

tablename(key)columname columnvalue

所以我可以说

event(131)HappensAt Dec 21,2009,21:30

然而,这不是一个不可侵犯的规则。我还会在BirthDate专栏中记录某人出生的日期,而不是WasBornOn专栏。当你命名时,你必须牢记自然语言的共同用法。力争自然使用,其余的将随之而来。盲目遵守规则,你的读者将难以理解。

答案 6 :(得分:2)

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

另外,我非常喜欢选项1中的列名。

答案 7 :(得分:2)

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

答案 8 :(得分:1)

我可能会使用类似“WhenRaisedUtc”的内容。