En el caso de Oracle, usted querrá no nombrar columnas 'id' o 'nombre' o algo genérico.
El problema es que, de manera predeterminada, en versiones anteriores , Oracle intentará unir tablas basadas en nombres de columnas similares, por lo que si he nombrado todo bien, también he terminado especificando la cláusula de unión predeterminada entre mis tablas.
Pero incluso si usted está no utilizar Oracle, al no eligiendo nombres que aparecen en varias tablas, sino que también significa que no se tiene que pasar por la molestia de añadir un alias cada vez que tenga que hacer un seleccione a través de dos tablas:
SELECT
instrument.name as instrument_name,
instrument.abbr as instrument_abbr,
source.name as source_name,
source.abbr as source_abbr,
...
FROM ...
Por lo tanto, si las selecciones de varias tablas son la norma, los nombres de columna más largos le ahorran escribir. (si solo usa una tabla a la vez ... ¿realmente necesita una base de datos relacional?)
... y guardar la escritura nos lleva a otro problema en Oracle, al menos en 8i (la versión actual cuando tomé los cursos de Oracle SQL Tuning y Data Modeling) el almacenamiento en caché de los planes de ejecución se basa solo en los primeros caracteres del consulta (no puede recordar el valor exacto ... 1024?), por lo que si tiene consultas que solo varían según algo al final de la cláusula where, y una lista realmente larga de columnas que está extrayendo, usted puede encontrarse con un impacto en el rendimiento ya que no puede almacenar en caché el plan de ejecución correctamente.
Oracle tenía una guía para seleccionar lo que dicen que son buenos nombres de tabla y columna, que es básicamente una guía para eliminar letras hasta que tenga entre 5 y 8 caracteres, pero nunca me importó demasiado.
...
A medida que las cosas van aparte de eso:
- las columnas son siempre singulares (las tablas son siempre plurales)
- todos los nombres son minúsculas, en caso de que haya algo que distinga entre mayúsculas y minúsculas
- Como resultado de lo anterior, use guiones bajos en lugar de mayúsculas y minúsculas.
actualización : para aquellos que no están familiarizados con el comportamiento de combinación de Oracle, consulte el último ejemplo sobre Dominio de Oracle SQL: Condiciones de combinación , donde menciona:
¿Que pasó? La razón radica en el hecho de que, además de supplier_id, estas dos tablas tienen otro par de columnas con un nombre común. Esa columna es el nombre. Entonces, cuando solicita una unión natural entre el proveedor y las tablas de partes, la unión se lleva a cabo no solo al igualar la columna proveedor_id de las dos tablas, sino que también se iguala la columna de nombre de las dos tablas. Como ningún nombre de proveedor es igual al nombre de parte de ese mismo proveedor, la consulta no devuelve filas.
Bajo 'antigua sintaxis de unión' (8i y anterior), 'NATURAL JOIN' era el comportamiento de unión predeterminado, y creo que todavía lo es si no especifica una condición de unión. Una vez que 'NATURAL JOIN' era una opción oficial en 9i, la recomendación general era no usarla , porque el mal nombre de la columna puede arruinarte, lo cual es mi defensa de los buenos nombres de columna.