2009-09-04 4 views
35

Qual è la vostra convenzione di denominazione per colonne datetime (nel mio caso, con MS SQL Server)database convenzione: colonna datetime

per una colonna che memorizza quando la riga è stato creato CreatedDateTime ha un senso, o LastModifiedDatetime.

Ma per una semplice tabella, diciamo uno chiamato Evento, vuoi creare colonne chiamati:

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 

Se devi usare né convenzione: Si prega di fornire la colonna nome che useresti.

risposta

68

normalmente citarne colonne DateTime come ACTION_WORD_on: created_on, completed_on, etc.

Il ACTION_WORD definisce la colonna rappresenta, e il suffisso (_on) indica che la colonna rappresenta il tempo.

Altri suffissi (o anche prefissi) possono essere utilizzati per specificare il tipo di dati (_at, _UTC, when_, ecc.).

Essere descrittivo. Sii coerente.

+0

Mi piace il suggerimento di usare '_on'. Di solito uso '_at'. Ma ho cercato questa domanda perché certe parole di azione + '_at' sono ambigue se la colonna riguarda il tempo o la posizione. '_on' è più esplicitamente sul tempo. – rojobuffalo

3

Eviterei di utilizzare i tipi di dati per i nomi di colonna (una colonna DATETIME chiamata Datetime), quindi voterò per la prima opzione.

+0

I nomi di colonna univoci sono più facili da utilizzare.Se hai DateTime (come nome) in 10 diverse tabelle, devi sempre usare il prefisso del nome della colonna con il nome della tabella nelle query ecc. Quindi vado per la prima opzione. – Marc

+2

@Marc: In un certo senso, è solo una differenza di carattere. Non è molto più difficile fare riferimento a Event.Id rispetto a EventId. Sia che il prefisso sia collegato al nome della colonna, o qualcosa che devi fare quando usi i join, entrambi hanno i loro vantaggi/svantaggi. – Brisbe42

4

preferisco per creare colonne nella seconda forma - anche se probabilmente sarei voglio un nome più descrittivo di Datetime, a seconda di quale sarebbe il suo utilizzo.

Edit: In questo tipo di situazione, che potrebbe effettivamente andare con un ibrido per questo singolo campo, e renderlo 'EventDate', 'StartDate', o qualcosa di simile.

+0

Nel caso dell'evento, cosa utilizzeresti invece di "Data/ora" come nome della colonna? –

12

Il nome deve comunicare ciò che le imprese significato dei dati è nella colonna ... "DateTime" è proprio il tipo di dati. È quando l'evento è successo? quando è stato registrato? quando è stato memorizzato nel DB? Quando i dati sono stati modificati l'ultima volta?

Se comunica in modo efficace il significato di ciò che la colonna contiene, il nome va bene. "DateTime" non va bene. "EventDateTime" è solo leggermente migliore. Se la tabella contiene eventi, qualsiasi campo datetime nella tabella è un EventDateTime (registra alcuni dati datetime relativi all'evento). Anche se c'è solo uno colonna datetime in una tabella "Eventi", quindi EventDateTime implica che è quando l'evento è accaduto, così che è probabilmente ok.

scegliere o selezionare il nome in modo che comunica la significa del valore ...

Dato domanda cura, alcuni nomi suggeriti potrebbero essere:

si è verificato, o OccurredDateTime o OccurredUTC, (o OccurredLocal), o, se gli eventi nel tuo modello aziendale hanno durata, allora forse StartedUtc, o BeganUtc, InitiatedUtc, ecc.

+0

Quindi, in questo caso, quale useresti come nome della colonna? –

+2

@ Peter- leggi l'ultima frase: "[Scegli] il nome in modo che comunichi il * significato * del valore." Non hai descritto il significato della colonna datetime nella tua tabella, quindi non possiamo ancora consigliare un nome di colonna più significativo. –

+0

Commento corretto: ho aggiornato la domanda originale con i commenti del codice che spiegano il significato di quale colonna. –

1

Probabilmente userò qualcosa come "WhenRaisedUtc".

13

Perché chiamarlo EventDateTime, quando non si usa anche EventIDInt, o EventEnbaledVarchar? Perché includere il tipo di dati nel nome della colonna? (La mia regola generale è che, se stanno accedendo ai dati in una tabella, sanno meglio quali sono i tipi di dati della colonna, perché altrimenti non sanno con cosa stanno lavorando.)

In questi giorni preferisco quello che penso di nomi di colonne come descrittivi, come ad esempio:
CreateDate
DateCreated
CreatedAt
createdOn (se non c'è parte di tempo)
AddedOn (potrebbe essere semanitcally più appropriato, a seconda dei dati)

Scegliere una "etichetta" e usarla in modo coerente in ogni tabella che richiede dati di questo tipo è anche una buona cosa. Ad esempio, avere una colonna "CreateDate" in (quasi) ogni tabella va bene, perché in questo modo saprai sempre quale colonna in ogni tabella ti dirà quando è stata creata una riga. Non rimanere sbigottito dall'argomento "ma tutti devono avere nomi univoci"; se stai scrivendo una query, è meglio sapere da quali tabelle stai tirando ogni colonna.

--Edit--

ho appena ricordato un'eccezione che ho fatto in passato. Se una colonna DateTime (o SmallDateTime) non contiene alcuna porzione di tempo, solo la data, come "promemoria", inserisco "Data" nel nome della colonna, ad esempio "Fatturazione" invece di "Fatturato" o "Fatturato". Questo non dovrebbe essere applicato durante il tracciamento quando sono state aggiunte righe, dal momento che si desidera anche l'ora.

+1

Grazie per gli esempi del nome della colonna - Questo è quello che speravo, qualcosa per non pensare al suo noming rut –

2

Vorrei chiamare la colonna HappensAt, perché la riga descrive un evento e l'attributo (colonna) nei dettagli della domanda quando si verifica. Come regola generale cerco di chiamare i miei tavoli con sostantivi singolari ei miei attributi con frasi che possono essere utilizzati per leggere, come

nometabella (chiave) columname columnvalue

Quindi vorrei quindi essere in grado di dire

evento

(131) HappensAt 21 dicembre 2009, 21:30

Tuttavia questa non è una regola inviolabile. Registrerei ancora la data in cui qualcuno è nato in una colonna Data di nascita, non in una colonna di WasBornOn. Devi tenere a mente gli usi comuni del linguaggio naturale quando dai un nome alle cose. Impegnarsi per l'uso naturale e il resto seguirà. Segui le regole alla cieca e i tuoi lettori lotteranno per la comprensione.

2

qui ci sono molte buone risposte, quindi non duplicherò. Ma ricorda non nominare mai una colonna una parola riservata !!!

anche, mi piace molto i nomi delle colonne in opzione 1.

+0

Se si rimane bloccati nel dover gestire un database con colonna "impossibile", tabella e altri nomi, ricordare che lo standard SQL riserva la doppia virgoletta per citare i nomi, quindi "QUESTA COLONNA" è un nome di colonna valido . Nelle poche occasioni in cui ho effettivamente utilizzato una parola chiave, ho preferito rinominarlo immediatamente, quindi non ho idea se questo si estenda alle parole chiave SQL. Perché persino avvicinarsi alla potenziale fonte di dolore? – holdenweb

2

forse è solo me, ma io non credo che si dovrebbe assegnare un nome alle colonne con tipi di dati, né replicare il nome della tabella in tutto i campi .