Convention du nom de la base de données: colonne DATETIME

Quelle est votre convention de nommage pour les colonnes DATETIME (dans mon cas, en utilisant MS SQL Server)

Pour une colonne qui stocke lorsque la ligne a été créé CreatedDatetime ça a du sens, ou LastModifiedDatetime.

mais pour une table simple, disons une appelée Event, créeriez-vous des colonnes appelées:

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

ou

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

si vous n'utilisez aucune des deux conventions: veuillez fournir le nom de la colonne que vous voulez utiliser.

38
demandé sur Peter Bridger 2009-09-04 18:15:51

9 réponses

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

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.).

Être descriptif. Être cohérent.

76
répondu Steven 2017-10-31 04:26:20

pourquoi L'appeler EventDateTime, quand vous n'utilisez pas EventIDInt, ou EventEnbaledVarchar? Pourquoi insérer le type de données dans le nom de la colonne? (Ma règle de base est, s'ils accèdent aux données dans une table, ils ont intérêt à savoir quels sont les types de données de la colonne, parce que sinon ils ne savent pas avec quoi ils travaillent.)

de nos jours, je préfère ce que je considère comme des noms de colonnes descriptifs, tels que:

Créatedate

DateCreated

CreatedAt

CreatedOn (s'il n'y a pas de portion de temps)

AddedOn (pourrait être sémantique plus appropriée, selon les données)

choisir une" étiquette " et l'utiliser de façon consistante dans chaque table qui nécessite que les données de type est également une bonne chose. Par exemple, avoir une colonne "CreateDate" dans (presque) chaque table est très bien, car alors vous saurez toujours quelle colonne dans chaque table vous dira quand une rangée a été créée. Ne vous raccrochez pas au "mais ils tous doivent avoir l'argument des noms uniques"; si vous écrivez une requête, vous feriez mieux de savoir de quelles tables vous tirez chaque colonne.

--Edit--

je viens de me rappeler une exception que j'ai faite dans le passé. Si une colonne DateTime (ou SmallDateTime) ne contient aucune portion de temps, juste la date, comme "rappel" j'ai mis "Date" dans le nom de la colonne, comme "BilledDate" au lieu de "Billed" ou "Billeddon". Cela ne devrait pas s'appliquer lors du suivi quand les lignes ont été ajoutées, puisque vous voudriez le temps ainsi.

13
répondu Philip Kelley 2009-09-04 14:27:47

le nom doit indiquer la signification commerciale des données dans la colonne... "DateTime" est juste le Type de données. Est-il lorsque l'événement qui s'est passé? quand ça a été enregistré? quand il a été stocké dans le DB? Lorsque les données ont été modifiées?

si elle communique efficacement la signification de ce que contient la colonne, le nom est correct. "DateTime" n'est pas bien. "EventDateTime" n'est très légèrement mieux. Si la table contient des événements, alors n'importe quel champ datetime dans la table est un EventDateTime (elle enregistre quelques datetime liées à l'événement). Bien que s'il y a seulement colonne datetime dans une table "Events", alors EventDateTime implique que c'est quand l'événement s'est produit, donc c'est probablement ok.

choisir ou sélectionner le nom de façon à communiquer le ce qui signifie de la valeur...

étant donné la question modifiée, certains noms suggérés pourraient être:

est survenue, ou est survenue à un moment donné, ou Occurrredutc, (ou Occurrredutclocal), ou, si les événements dans votre modèle d'affaires ont une durée, alors peut-être StartedUtc, ou BeganUtc, ou InitiatedUtc, etc.

13
répondu Charles Bretana 2009-09-04 14:41:18

je préfère créer des colonnes dans la deuxième forme--bien que je voudrais probablement un nom plus descriptif que Datetime, selon ce que son utilisation serait.

Edit: dans ce genre de situation, je pourrais en fait utiliser un hybride pour ce champ simple, et le faire 'EventDate', 'StartDate', ou quelque chose de similaire.

4
répondu Brisbe42 2009-09-04 14:23:00

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.

3
répondu Ruffles 2009-09-04 14:16:59

J'appellerais la colonne HappensAt, parce que la ligne décrit un événement et l'attribut (colonne) dans les détails de la question quand il arrive. En règle générale, j'essaie de nommer mes tables avec des noms singuliers et mes attributs avec des phrases qui peuvent être utilisées pour lire, comme

nom de la table(clé) columname columnvalue

alors je pourrais dire

événement(131) HappensAt Déc 21, 2009, 21:30

cependant ce n'est pas une règle inviolable. J'avais notez toujours la date de naissance de quelqu'un dans une colonne de date de Naissance, pas une colonne de WasBornOn. Vous devez garder à l'esprit les usages courants du langage naturel quand vous nommez des choses. S'efforcer de naturel, d'utilisation et le reste suivra. Suivez les règles aveuglément et vos lecteurs se battront pour la compréhension.

2
répondu holdenweb 2009-09-04 14:44:06

peut-être que c'est juste moi, mais je ne crois pas que vous devriez nommer vos colonnes avec des types de données, ni répliquer le nom de la table partout dans les champs.

2
répondu Fernando 2009-09-04 14:51:31

il y a beaucoup de bonnes réponses ici, donc je ne vais pas dupliquer. Mais rappelez-vous ne nommez jamais une colonne un mot réservé!!!

en outre, j'aime vraiment les noms de colonne dans l'option 1.

2
répondu KM. 2017-06-02 19:47:25

je serais probablement utiliser quelque chose comme "WhenRaisedUtc".

1
répondu Av Pinzur 2009-09-04 14:21:27