Come dovrei meglio denominare i miei campi data / ora?


57

Quando sto cercando di creare alcuni campi data / ora (o altri campi stile / data), qual è il modo migliore per nominarli? Dovrei solo mettere record_timestamp?

Risposte:


42

Dovresti descrivere lo scopo della colonna e non necessariamente il tipo di dati. Puoi includere data / ora / data / ora nel nome, ma dovresti anche includerne il significato. Per esempio

  • Data di creazione
  • Data d'inizio
  • StatusTime
  • Accessed
  • aggiornato

L'aggiunta di Data / Ora / Timestamp e simili alla fine è particolarmente utile quando l'assenza dell'aggiunta sarebbe in conflitto con un'altra colonna. Ad esempio, una tabella potrebbe richiedere sia uno Status sia uno StatusTime.


2
Solo per aggiungere i miei due centesimi. Ho lavorato con molti sistemi MRP legacy e ho trovato spesso creati CreatedOnUtc e UpdatedOnUtc.
Geovani Martinez,

6
Penso che "Accesso" e "Aggiornato" possano essere ambigui, dal momento che può anche implicare un valore booleano (almeno nel mondo di Ruby)
Artur Beljajev,

2
@GeovaniMartinez che può essere fonte di confusione, come molti database SQL, incluso PostgreSQL, archiviare in UTC e leggere nel fuso orario del client.
Evan Carroll,

E se si suppone che l'unità di tempo sia UTC vs System Local, specificare _UTC nel nome della colonna. Grazie a tutti noi che devono mantenere il codice in un secondo momento.
Jonathan Fite,

L'accesso e l'aggiornamento potrebbero essere ambigui con l'accesso o l'aggiornamento dell'OMS, il che è una cosa abbastanza comune da tenere traccia
Joe Phillips,

27

Che ne dici xyz_atdi un timestampe xyz_onper un datecampo - ad es. start_atO start_on?

Normalmente eviterei di includere il tipo di dati nel nome del campo - molto meglio se puoi dedurre ciò che devi sapere sul tipo dal nome di qualsiasi campo ( descriptionè improbabile che un campo chiamato sia un integer) - ma potrei dire la differenza tra a timestampe a dateè spesso utile.


16

Io uso:

  • created_at
  • updated_at

2
"at" può implicare anche la posizione. Che dire di "quando" invece di "a"?
Sepster,

1
"at" o "as at" sono usati frequentemente nei documenti legali e finanziari per riferirsi a quando è successo qualcosa. english.stackexchange.com/questions/112770/…
Neil McGuigan

3
Può ancora essere ambiguo. Cosa succede se è necessario conoscere l'ora e il luogo in cui è stato aggiornato? updated_atpotrebbe essere neanche. Ma penso che la risposta sia, come sempre con la denominazione, utilizzare il nome più conciso che rimuove tutta l'ambiguità realistica. Vale a dire se in un particolare contesto esiste il potenziale per una certa confusione, eliminarla, ma non usare nomi più prolissi di quanto richiesto per quello
nafg

1
che ne dici di "on". Anche se implica una data più di una volta, è ancora abbastanza ovvio
Joe Phillips,

6

Ho esaminato il tuo profilo e mi dice che lavori con SQL Server e in SQL Server il tipo di dati TIMESTAMP non ha nulla a che fare con la data o l'ora e viene utilizzato per il tipo di versione che timbra le righe. Questo è molto utile per identificare quali righe sono state modificate da un determinato momento.

Se si utilizza TIMESTAMP, non è necessario specificare un nome di colonna e SQL Server creerà una colonna "TimeStamp" per te. Ma si consiglia di utilizzare il tipo di dati "ROWVERSION" e in questo caso è necessario specificare il nome della colonna.

Qual è il nome migliore per una colonna come questa? Dipende, e userei qualcosa come VersionStamp, RV ecc ... Quello che considero importante NON è come lo chiami, ma lo stai usando in modo coerente su tutta la linea.

HTH

Rif: http://msdn.microsoft.com/en-us/library/ms182776(v=sql.90).aspx

http://msdn.microsoft.com/en-us/library/ms182776.aspx


3

Ho scoperto che l'uso di nomi di colonna come create_time, update_timee expire_timeporta a una migliore leggibilità quando si tratta di denominazione e specifiche dei metodi (RSpec).


1

Preferisco usare un prefisso di DT per i timbri data. Ad esempio: DTOpened, DTClosed, DTLastAccessed. Questo mi consente di elencare tutti i DTxxxx per un rapido riferimento di tutti i timbri data in una determinata tabella.



1

Preferisco usare convenzioni già esistenti.

Unix e linguaggi di programmazione hanno una convenzione ampiamente accettata mtimeper il Tempo di modifica

Per il momento della creazione,

  • BSD e Windows usano la nascita
  • Windows utilizza anche il tempo di creazione
  • usa xstat btime
  • ext4 usa crtime
  • Uso di JFS e btrfs otime(non chiedere, indovinando "origine").

Quindi, per me, scelgo mtimee crtimeper i metadati.

Per i dati forniti dall'utente, vado con ciò che il campo rappresenta. Se è un compleanno, dico solo user_birthday.

Per quanto riguarda la precisione, per alcuni sembra appenderli a troppa precisione. Puoi archiviarlo birthdatecome un timestamp (dopo tutto quello che sei nato tecnicamente in un momento della giornata), ma le specifiche SQL hanno cast da una maggiore precisione a una minore precisione, quindi se stai usando un database decente questo non dovrebbe essere un problema . Nella tua stessa app, puoi sempre troncare quando necessario. Vale a dire, non ci andrei mai birthday_date.


0

Vorrei utilizzare un prefisso significativo e _TSMP come suffisso, ad esempio CREATION_TSMP o LAST_UPDATE_TSMP


0

Per mantenere la coerenza tra i nomi delle colonne, ti suggerirei la seguente sintassi:

dateCreated
dateUpdated
dateAccessed
dateStarted
date...

0

Come suggerito da @Evan Carroll, segui gli standard esistenti a meno che tu non abbia validi motivi per interrompere il modello.

Se si tratta di qualcosa di nuovo, puoi seguire qualsiasi risposta più adatta a te.

Uso * _on e * _by perché mi aiuta a mantenerlo coerente per quando e chi della riga:

- created_on & created_by
- updated_on & updated_by
- deleted_on & deleted_by -- soft delete
- approved_on & approved_by
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.