53 votes

Convention sur le nom de la base de données : Colonne DATETIME

Quelle est votre convention d'appellation pour les colonnes DATETIME (dans mon cas, j'utilise MS SQL Server) ?

Pour une colonne qui stocke la date de création de la ligne Date de création a du sens, ou Date de la dernière modification .

Mais pour un tableau simple, disons un tableau intitulé "Événement", vous créeriez des colonnes intitulées "Événement", "Événement" et "Événement" :

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

o

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

Si vous n'utilisez ni l'une ni l'autre de ces conventions : Veuillez indiquer le nom de la colonne que vous utiliseriez.

102voto

Steven Points 3146

Je nomme normalement les colonnes DATETIME comme suit ACTION_WORD_on: created_on, completed_on, etc.

En ACTION_WORD définit ce que la colonne représente, et le suffixe ( _on ) indique que la colonne représente le temps.

D'autres suffixes (ou même des préfixes) peuvent être utilisés pour spécifier le type de données ( _at , _UTC , when_ etc).

Soyez descriptif. Soyez cohérent.

8 votes

J'apprécie la suggestion d'utiliser _on . J'utilise normalement _at . Mais j'ai cherché cette question parce que certains mots d'action + _at sont ambiguës quant à la question de savoir si la colonne porte sur le temps ou sur le lieu. _on concerne plus explicitement le temps.

17voto

Philip Kelley Points 19032

Pourquoi l'appeler EventDateTime, si vous n'utilisez pas également EventIDInt ou EventEnbaledVarchar ? Pourquoi inclure le type de données dans le nom de la colonne ? (Ma règle de base est la suivante : s'ils accèdent aux données d'une table, ils ont intérêt à connaître le type de données de la colonne, sinon ils ne savent pas avec quoi ils travaillent).

Aujourd'hui, je préfère ce que j'appelle des noms de colonnes descriptifs, comme par exemple :
Date de création
Date de création
Créé le
CrééOn (s'il n'y a pas de portion de temps)
AddedOn (peut être sémantiquement plus approprié, en fonction des données)

Il est également utile de choisir une "étiquette" et de l'utiliser de manière cohérente dans tous les tableaux qui requièrent ce type de données. Par exemple, avoir une colonne "CreateDate" dans (presque) tous les tableaux est une bonne chose, car vous saurez alors toujours quelle colonne de chaque tableau vous indiquera la date de création d'une ligne. Ne vous laissez pas arrêter par l'argument "mais elles doivent toutes avoir des noms uniques" ; si vous écrivez une requête, vous avez tout intérêt à savoir de quelles tables vous tirez chaque colonne.

--Edit--

Je viens de me souvenir d'une exception que j'ai faite dans le passé. Si une colonne DateTime (ou SmallDateTime) ne contient pas de partie temporelle, mais uniquement la date, je mettrais "Date" dans le nom de la colonne, par exemple "BilledDate" au lieu de "Billed" ou "BilledOn". Cela ne devrait pas s'appliquer au suivi de l'ajout de lignes, puisque vous voudriez également connaître l'heure.

1 votes

Merci pour vos exemples de noms de colonnes - C'est ce que j'espérais, quelque chose qui me permette de sortir de l'ornière des noms.

0 votes

En réponse pourquoi ne pas suffixer int... Le suffixe DateTime est logique car il ne s'agit pas seulement du type, mais aussi de la valeur qu'il représente. Integer ne décrit que le type, pas la valeur qu'il représente. Si le nom de la table est event, il est évident qu'il s'agit de l'événement DataTime, de la même manière que "name" serait le nom de l'événement. On ne dirait pas event_name. Je ne propose pas cette solution, j'explique simplement ce que je soupçonne être la pensée de l'auteur de la première affiche.

14voto

Charles Bretana Points 59899

Le nom doit indiquer la signification commerciale des données contenues dans la colonne... "DateTime" est simplement le type de données. S'agit-il du moment où l'événement s'est produit ? du moment où il a été enregistré ? du moment où il a été stocké dans la base de données ? Quand les données ont-elles été modifiées pour la dernière fois ?

S'il communique efficacement la signification de ce que la colonne contient, le nom est parfait. "DateTime" n'est pas correct. "EventDateTime" est seulement très légèrement mieux. Si la table contient des événements, tout champ de type date dans la table est un EventDateTime (il enregistre une date liée à l'événement). Toutefois, s'il n'y a que des un dans une table "Events", EventDateTime implique qu'il s'agit de la date à laquelle l'événement s'est produit, ce qui est probablement correct.

Choisissez ou sélectionnez le nom de manière à ce qu'il communique le nom de l'entreprise. sens de la valeur...

Compte tenu de la question éditée, quelques noms pourraient être suggérés :

Occurred, ou OccurredDateTime, ou OccurredUTC, (ou OccurredLocal), ou, si les événements de votre modèle d'entreprise ont une durée, peut-être StartedUtc, ou BeganedUtc, ou InitiatedUtc, etc.

0 votes

Dans ce cas, quel nom de colonne utiliseriez-vous ?

2 votes

@Peter- lisez la dernière phrase : "[Choisissez] le nom de manière à ce qu'il communique la sens de la valeur". Vous n'avez pas décrit la signification de la colonne datetime dans votre table, nous ne pouvons donc pas encore vous recommander un nom de colonne plus significatif.

0 votes

Commentaire juste - j'ai mis à jour la question originale avec des commentaires de code expliquant la signification de chaque colonne.

4voto

Brisbe42 Points 878

Je préfère créer des colonnes sous la deuxième forme - même si je voudrais probablement un nom plus descriptif que Datetime, en fonction de l'utilisation qui en sera faite.

Modification : dans ce type de situation, je pourrais en fait opter pour un champ hybride et le nommer "EventDate", "StartDate", ou quelque chose de similaire.

0 votes

Dans le cas de l'événement, quel nom de colonne utiliseriez-vous à la place de "Datetime" ?

2voto

Ruffles Points 71

J'éviterais d'utiliser des types de données pour les noms de colonnes (une colonne DATETIME appelée Datetime), donc je vote pour la première option.

0 votes

Les noms de colonnes uniques sont plus faciles à utiliser. Si vous avez DateTime (comme nom) dans 10 tables différentes, vous devrez toujours préfixer le nom de la colonne avec le nom de la table dans les requêtes, etc. J'opte donc pour la première option.

2 votes

@Marc : D'une certaine manière, il s'agit juste d'une différence d'un seul caractère. Il n'est pas beaucoup plus difficile de référencer Event.Id que EventId. Que le préfixe soit attaché au nom de la colonne, ou que vous deviez le faire lorsque vous utilisez des jointures, les deux ont leurs avantages/inconvénients.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X