No caso do Oracle, convém não nomear as colunas 'id' ou 'name' ou qualquer coisa genérica.
O problema é que, por padrão, em versões mais antigas , o Oracle tentará ingressar em tabelas com base em nomes de colunas semelhantes; portanto, se eu nomeei tudo bem, também acabei especificando a cláusula de associação padrão entre minhas tabelas.
Mas mesmo que você não esteja usando o Oracle, não escolhendo nomes que aparecem em várias tabelas, também significa que você não precisará passar pelo problema de criar aliases toda vez que precisar fazer uma seleção em duas tabelas:
SELECT
instrument.name as instrument_name,
instrument.abbr as instrument_abbr,
source.name as source_name,
source.abbr as source_abbr,
...
FROM ...
Portanto, se a seleção de várias tabelas for a norma, os nomes mais longos das colunas economizarão a digitação. (se você estiver usando apenas uma tabela por vez ... você realmente precisa de um banco de dados relacional?)
... e salvar a digitação nos leva a outro problema no Oracle - pelo menos no 8i (a versão atual quando participei dos cursos de Oracle SQL Tuning e Data Modeling), o cache dos planos de execução é baseado apenas nos primeiros tantos caracteres do consulta (não se lembra do valor exato ... 1024?), portanto, se você tiver consultas que variam apenas de alguma forma no final da cláusula where e uma lista realmente longa de colunas que você está extraindo, pode ter um desempenho atingido, pois não pode armazenar em cache o plano de execução corretamente.
A Oracle tinha um guia para selecionar o que eles afirmam ser bons nomes de tabelas e colunas, que é basicamente um guia para remover letras até que tenham entre 5 e 8 caracteres, mas eu nunca me importei muito com isso.
...
Como as coisas vão além disso:
- as colunas são sempre singulares (as tabelas são sempre plurais)
- todos os nomes são minúsculos, caso haja algo que diferencia maiúsculas de minúsculas
- como resultado acima, use sublinhados em vez de estojo de camelo.
update : para aqueles que não estão familiarizados com o comportamento de junção do Oracle, consulte o último exemplo em Mastering Oracle SQL: Join Conditions , em que ele menciona:
O que aconteceu? O motivo está no fato de que, além de supplier_id, essas duas tabelas têm outro par de colunas com um nome comum. Essa coluna é o nome. Portanto, quando você solicita uma junção natural entre o fornecedor e as tabelas de peças, a junção ocorre não apenas igualando a coluna supplier_id das duas tabelas, mas também a coluna de nome das duas tabelas. Como nenhum nome de fornecedor é igual a um nome de peça desse mesmo fornecedor, nenhuma linha é retornada pela consulta.
Sob 'sintaxe de junção antiga' (8i e anterior), 'NATURAL JOIN' era o comportamento de junção padrão, e acredito que ainda será se você não especificar uma condição de junção. Uma vez que 'NATURAL JOIN' era uma opção oficial no 9i, a recomendação geral era não usá-lo , porque a má nomeação de colunas pode estragar tudo, o que eu estou defendendo por bons nomes de colunas.