web-dev-qa-db-ja.com

データベースの命名規則:DATETIME列

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

どちらの規則も使用しない場合:使用する列名を入力してください。

42
Peter Bridger

私は通常、DATETIME列にACTION_Word_on: created_on, completed_on, etc.という名前を付けます

ACTION_Wordは列が何を表すかを定義し、接尾辞(_on)は列が時間を表すことを示します。

他のサフィックス(またはプレフィックス)を使用して、データ型(_at_UTCwhen_など)を指定できます。

説明的であること。一貫性を保つ。

83
Steven

EventIDIntまたはEventEnbaledVarcharも使用しないのに、なぜそれをEventDateTimeと呼ぶのですか?列名にデータ型を含めるのはなぜですか? (私の経験則では、テーブル内のデータにアクセスしている場合は、列のデータ型が何であるかをよく知っています。そうでない場合は、何を扱っているのかわからないためです。)

最近、私は次のような説明的な列名として考えるものを好みます。
日付を作成します
DateCreated
CreatedAt
CreatedOn(時間部分がない場合)
AddedOn(データによっては、意味的に適切な場合があります)

「ラベル」を選び、その種類のデータを必要とするすべてのテーブルで一貫して使用することも良いことです。たとえば、(ほぼ)すべてのテーブルに「CreateDate」列を含めることは問題ありません。これにより、すべてのテーブルのどの列に行が作成されたかが常にわかります。 「しかし、それらはすべて一意の名前を持っている必要があります」という議論にとらわれないでください。クエリを作成している場合は、各列を取得しているテーブルを知っておく必要があります。

-編集-

過去に行った例外を思い出しました。 DateTime(またはSmallDateTime)列に時間部分が含まれず、日付のみが「リマインダー」として含まれる場合は、列名に「Billed」や「BilledOn」の代わりに「BilledDate」などの「Date」を入力します。行がいつ追加されたかを追跡する場合も、時間が必要になるため、これは適用されません。

14
Philip Kelley

名前は、データのビジネス上の意味が列にあることを伝える必要があります...「DateTime」はデータのタイプにすぎません。イベントが起こったときですか?いつ録音されたの? DBに保存されたのはいつですか?データが最後に変更されたのはいつですか?

列に含まれる内容の意味を効率的に伝達する場合、名前は問題ありません。 「DateTime」は問題ありません。 「EventDateTime」はごくわずかに優れています。テーブルにイベントが含まれている場合、テーブル内の日時フィールドはすべてEventDateTimeです(イベントに関連する日時が記録されます)。 「イベント」テーブルにone datetime列しかない場合でも、EventDateTimeは、イベントが発生したときであることを意味します。それはおそらく大丈夫です。

値の意味を伝えるように名前を選択または選択します。

編集された質問を考えると、いくつかの提案された名前は次のようになります。

Occurred、OccurredDateTime、OccurredUTC(またはOccurredLocal)、またはビジネスモデルのイベントに期間がある場合は、StartedUtc、BeganUtc、InitiatedUtcなど。

13
Charles Bretana

私は2番目の形式で列を作成することを好みますが、用途によっては、Datetimeよりもわかりやすい名前が必要になる可能性があります。

編集:この種の状況では、実際にはその単一のフィールドにハイブリッドを使用して、「EventDate」、「StartDate」、または同様のものにすることができます。

4
Brisbe

それは私だけかもしれませんが、列にデータ型の名前を付ける必要はないと思います。また、フィールド全体にテーブル名を複製する必要もありません。

3
Fernando

この行はイベントを記述し、問題の属性(列)は詳細に記述されているため、列をHappensAtと呼びますいつ発生します。原則として、テーブルには単数名詞を使用し、属性には読み取りに使用できるフレーズを使用します。

tablename(key)columname columnvalue

だから私は言うことができるでしょう

イベント(131)発生2009年12月21日21:30

ただし、これは不可侵のルールではありません。 WasBornOn列ではなく、BirthDate列に誰かが生まれた日付を記録します。名前を付けるときは、自然言語の一般的な使用法を覚えておく必要があります。自然な使用法を目指してください、そして残りは続きます。盲目的にルールに従うと、読者は理解に苦労します。

2
holdenweb

ここには良い答えがたくさんあるので、複製しません。ただし、覚えておいてください列に予約語の名前を付けないでください!!!

また、オプション1の列名が本当に気に入っています。

2
KM.

列名にデータ型(Datetimeと呼ばれるDATETIME列)を使用することは避けたいので、最初のオプションに投票します。

2
Ruffles

WhenRaisedUtc」のようなものを使用する可能性があります。

0
Av Pinzur