2009-09-04 13 views
35

¿Cuál es su convención de nombres para las columnas DATETIME (en mi caso, el uso de MS SQL Server)base de datos convención: la columna DATETIME

Para una columna que almacena cuando se creó la fila CreatedDatetime tiene sentido, o lastModifiedDateTime.

Pero para una tabla sencilla, digamos que una llamada de eventos, crearía columnas denominadas:

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 desea utilizar ni el Convenio: Por favor ingrese la columna nombre que usarías.

Respuesta

68

normalmente I Nombre columnas DATETIME como ACTION_WORD_on: created_on, completed_on, etc.

El ACTION_WORD define lo que la columna representa, y el sufijo (_on) indica que la columna representa el tiempo.

Otros sufijos (o incluso prefijos) se pueden utilizar para especificar el tipo de datos (_at, _UTC, when_, etc).

Sea descriptivo. Se consistente.

+0

Me gusta la sugerencia de usar '_on'. Normalmente uso '_at'. Pero busqué esta pregunta porque ciertas palabras de acción + '_at' son ambiguas sobre si la columna es sobre la hora o la ubicación. '_on' es más explícitamente sobre el tiempo. – rojobuffalo

3

Evitaría el uso de tipos de datos para los nombres de columna (una columna DATETIME llamada Fecha y hora), por lo que votaré por la primera opción.

+0

Los nombres de columna únicos son más fáciles de trabajar.Si tiene DateTime (como nombre) en 10 tablas diferentes, siempre debe usar prefijo el nombre de la columna con el nombre de la tabla en las consultas, etc. Así que voy a la primera opción. – Marc

+2

@Marc: En cierto modo, es solo una diferencia de un solo carácter. No es mucho más difícil hacer referencia a Event.Id en comparación con EventId. Ya sea que el prefijo esté adjunto al nombre de la columna, o algo que tenga que hacer cada vez que use uniones, ambos tienen sus ventajas/inconvenientes. – Brisbe42

4

Prefiero crear columnas en el segundo formulario, aunque probablemente querría un nombre más descriptivo que el de Datetime, dependiendo de su uso.

Editar: En este tipo de situación, en realidad podría ir con un híbrido para ese campo único, y hacerlo 'EventDate', 'StartDate', o algo similar.

+0

En el caso del evento, ¿qué usarías en lugar de 'Datetime' como el nombre de la columna? –

12

El nombre debe comunicar qué significado comercial de los datos se encuentra en la columna ... "DateTime" es solo el tipo de datos. ¿Es cuando ocurrió el evento? cuando fue grabado? cuando fue almacenado en la base de datos? ¿Cuándo se modificaron los datos por última vez?

Si comunica eficazmente el significado de lo que contiene la columna, el nombre está bien. "DateTime" no está bien. "EventDateTime" es solo muy ligeramente mejor. Si la tabla contiene eventos, entonces cualquier campo de fecha y hora en la tabla es un EventDateTime (registra alguna fecha y hora relacionada con el evento). Aunque si solo hay una columna de fecha y hora en una tabla de "Eventos", EventDateTime implica que es cuando ocurrió el evento, por lo que probablemente sea correcto.

elegir o seleccionar el nombre por lo que se comunica el significado del valor ...

Dada pregunta editado, algunos nombres sugeridos podrían ser:

cometido, o OccurredDateTime o OccurredUTC, (o OccurredLocal), o, si los eventos en su modelo comercial tienen duración, entonces quizás StartedUtc, o BeganUtc, o InitiatedUtc, etc.

+0

Entonces, en este caso, ¿qué usarías como el nombre de la columna? –

+2

@ Peter- lea la última oración: "[Elija] el nombre para que comunique el * significado * del valor". No ha descrito el significado de la columna de fecha y hora en su tabla, por lo que no podemos recomendar un nombre de columna más significativo todavía. –

+0

Comentario justo: he actualizado la pregunta original con comentarios de código que explican el significado de qué columna. –

1

Probablemente usaría algo como "WhenRaisedUtc".

13

¿Por qué llamarlo EventDateTime, cuando también no utiliza EventIDInt o EventEnbaledVarchar? ¿Por qué incluir el tipo de datos en el nombre de la columna? (Mi regla general es que, si están accediendo a los datos en una tabla, es mejor que conozcan los tipos de datos de las columnas, porque de lo contrario no saben con qué están trabajando.)

En estos días yo prefiero lo que pienso de nombres de columna como descriptivos, tales como:
CreateDate
DateCreated
CreatedAt
CreatedOn (si no hay porción de tiempo)
AddedOn (podría ser semanitcally más apropiado, dependiendo de los datos)

Escoger una "etiqueta" y usarla consistentemente en cada tabla que requiera datos amables también es algo bueno. Por ejemplo, tener una columna "CreateDate" en (casi) todas las tablas está bien, porque entonces siempre sabrá qué columna de cada tabla le indicará cuándo se creó una fila. No se cuelgue con el argumento "pero todos deben tener nombres únicos"; si está escribiendo una consulta, es mejor que sepa de qué tablas está sacando cada columna.

--Edit--

acabo de recordar una excepción que he hecho en el pasado. Si una columna DateTime (o SmallDateTime) no contiene una porción de tiempo, solo la fecha, como un "recordatorio" pondría "Fecha" en el nombre de la columna, como "FechaHorada" en lugar de "Facturado" o "Facturado". Esto no debería aplicarse al rastrear cuándo se agregaron las filas, ya que también querría la hora.

+1

Gracias por sus ejemplos de nombre de columna - Esto es lo que estaba esperando, algo para mantener mi mente fuera de su rutina –

2

Llamaría a la columna HappensAt, porque la fila describe un evento y el atributo (columna) en detalles de la pregunta cuando ocurre. Como regla general trato de nombrar mis tablas con nombres singulares y mis atributos con frases que se pueden utilizar para leer, como columnvalue

nombre de tabla (clave) columname

Así que entonces sería capaz de decir

evento (131) HappensAt 21 de diciembre de 2009, 21:30

Sin embargo, esto no es una regla inviolable. Todavía registraría la fecha en que alguien nació en una columna de BirthDate, no en una columna de WasBornOn. Debe tener en cuenta los usos comunes del lenguaje natural cuando nombra cosas. Esfuércese por el uso natural y el resto seguirá. Sigue las reglas a ciegas y tus lectores lucharán por la comprensión.

2

hay muchas buenas respuestas aquí, así que no voy a duplicarlas. Pero recuerde ¡nunca nombre una columna como palabra reservada!

también, me gusta mucho los nombres de columna en la opción 1.

+0

Si alguna vez tiene que lidiar con una base de datos con columnas, tablas y otros nombres "imposibles", recuerde que el estándar SQL reserva los comillas dobles para citar los nombres, por lo que '" THIS COLUMN "' es un nombre de columna válido . En las pocas ocasiones en que he usado una palabra clave, he preferido cambiar el nombre de inmediato, así que no tengo idea de si esto se extiende a las palabras clave SQL. ¿Por qué incluso acercarse a la posible fuente de dolor? – holdenweb

2

Tal vez eso es sólo conmigo, pero no creo que se debe asignar nombres a las columnas con tipos de datos, ni replicar el nombre de la tabla en todo los campos .

Cuestiones relacionadas