2011-02-02 13 views
5

necesito una tabla de MySQL que representa estos datos:Semántica de nombrar una marca de tiempo MYSQL columna

  • 12 de febrero de 17:00 - Verdasco vs Monfils
  • 12 feb, 21:25 - Sampras vs Hewitt
  • Feb 13, 8:15 am - Nishikori vs Del Potro

I quería nombrar la columna de tiempo tiempo, marca de tiempo, o fecha, pero como usted sabe, esas son todas palabras clave reservadas. ¿Cuál es la mejor manera de nombrar una columna de tiempo sin sonar cursi para evitar las limitaciones de nomenclatura?

Respuesta

1

¿Qué es Verdasco VS Monfils? ¿Son ellos eventos? Entonces iría con EventDate o algo similar. Intenta nombrar cómo lo describirías.

+0

"Verdasco VS Monfils" es una próxima pelea de tenis. Iba a nombrar toda la mesa * Eventos *. Se debe entender que todas las columnas están relacionadas con el nombre de la tabla, por lo tanto, ¿duplicar el nombre de la tabla en el nombre de la columna realmente es el camino a seguir? – JoJo

+1

Bueno, no veo ningún problema con eso en general. Pero si nombra los 'eventos 'de su tabla, podría nombrar su columna' starttime'. 'SELECT starttime FROM events 'tendría absolutamente sentido entonces. – alexn

+0

Iré con * startTime *. – JoJo

2

El nombre de columna no debe apuntar al tipo de datos sino a su significado. Me gusta event_start_datetime o created para la marca de tiempo de la creación de esa entrada.

+0

Me gustaría llamarlo * start *, pero también es una palabra clave reservada. – JoJo

2

Prefiero el verbo en tiempo pasado y "Tiempo", es decir, 'createdTime', 'publishedTime', en su caso no puedo encontrar un verbo, pero 'matchTime' se ve bien.

+0

Por lo que vale, 'MatchTime' también fue mi primer pensamiento. –

4

entiendo la sensación de que una columna llamada EventDate en una tabla llamada Events (que, por todas las convenciones DB que he aprendido nunca, debería llamarse Evento ...;)) es redundante, pero tener en cuenta:

tiene una tabla Event con una columna Date y una mesa Booking, cuyos registros representan un cliente de reservar un asiento en un evento, también con una columna Date (que, en este contexto, se refiere a la fecha en que el asiento fue reservado):

SELECT e.Date AS EventDate, b.Date AS BookingDate, [...] 
FROM Event e 
JOIN Booking b ON b.EventId = e.Id 

El tener que dar cuenta de los nombres de las columnas ambiguas en cada uno de esos consulta es una sanción que puede (y hace , en mi opinión) mayores que la supuesta redundancia de Event.EventDate.

Consideremos otro argumento que podemos aplicar a los nombres de las columnas de ID en cada tabla: llamando al PK en EventEventId en lugar de simplemente Id nos permite escribir esta unión criterio:

JOIN Booking b ON b.EventId = e.EventId 

que podemos ver de un vistazo hace referencia a las columnas correctas.

En resumen, si tenemos que tomar la decisión entre llamar la columna Date o EventDate, este último tiene muchos beneficios:

  • Como señala @Benjamin Seiller, una columna debe identificar el significado de la columna, no se necesariamente su tipo de datos
  • Además, ¿qué sucede cuando se tiene una tabla con tres campos de fechas diferentes que representan fechas relevantes para la entidad? Si usted no nombra a todos ellos en función de su significado , ahora tiene que recordar qué campo quiere decir lo ...
  • Tan pronto como deseamos consultar varias tablas, nombres de columnas ambiguas problemas presentes
  • Si columnas que aparecen en varias tablas (como claves externas) tienen nombres explícitos e idénticos, nuestra sintaxis de consulta se vuelve un poco más resistente a errores (como unirse en la columna incorrecta)

Considere todas las situaciones en las que su tabla se puede usar cuando se decidan los nombres de las columnas. En este caso, argumentaré que los beneficios de proporcionar información específica del contexto en el nombre de la columna son muy superiores a la redundancia de repetir el nombre de la tabla.

+0

"Evento" podría ser un poco demasiado genérico en mi humilde opinión. –

+0

No estoy sugiriendo que "Evento" sea un nombre fabuloso para una tabla, pero el OP dijo que quería nombrar la tabla "Eventos", así que ese es el ejemplo que usé. –

Cuestiones relacionadas