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 Event
EventId
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.
"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
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
Iré con * startTime *. – JoJo