Nel caso di Oracle, ti consigliamo di non nominare le colonne 'id' o 'name' o qualcosa di generico.
Il problema è che per impostazione predefinita nelle versioni precedenti , Oracle tenterà di unire le tabelle in base a nomi di colonna simili, quindi se ho dato un nome tutto corretto, ho anche finito per specificare la clausola di join predefinita tra le mie tabelle.
Ma anche se si sta non utilizzando Oracle, non scegliendo nomi che appaiono in più tabelle, ma significa anche che non si devono poi passare attraverso la briga di aliasing ogni volta che dovete fare un selezionare tra due tabelle:
SELECT
instrument.name as instrument_name,
instrument.abbr as instrument_abbr,
source.name as source_name,
source.abbr as source_abbr,
...
FROM ...
Quindi, se le selezioni su più tabelle sono la norma, i nomi di colonne più lunghi ti risparmiano la digitazione. (se stai usando solo una tabella alla volta ... hai davvero bisogno di un database relazionale?)
... e il salvataggio della digitazione ci porta a un altro problema in Oracle - almeno in 8i (la versione corrente quando ho seguito i corsi di Oracle SQL Tuning e Data Modeling) la memorizzazione nella cache dei piani di esecuzione si basa solo sui primi così tanti caratteri del query (non ricordi il valore esatto ... 1024?), quindi se hai query che variano solo di qualcosa fino alla fine della clausola where e un elenco davvero lungo di colonne che stai estraendo, tu può incorrere in un hit delle prestazioni in quanto non è possibile memorizzare correttamente nella cache il piano di esecuzione.
Oracle aveva una guida sulla selezione di quelli che sostengono che fossero nomi di tabelle e colonne, che in pratica è una guida per la rimozione di lettere fino a circa 5-8 caratteri, ma non me ne è mai importato molto.
...
Dato che le cose vanno diversamente:
- le colonne sono sempre singolari (le tabelle sono sempre plurali)
- tutti i nomi sono in minuscolo, nel caso in cui ci sia qualcosa che distingue tra maiuscole e minuscole
- come risultato di quanto sopra, utilizzare i trattini bassi anziché la custodia del cammello.
aggiornamento : per coloro che non hanno familiarità con il comportamento dei join di Oracle, vedere l'ultimo esempio su Mastering Oracle SQL: Condizioni di join , dove menziona:
Quello che è successo? Il motivo sta nel fatto che, oltre a supplier_id, queste due tabelle hanno un'altra coppia di colonne con un nome comune. Quella colonna è il nome. Pertanto, quando si richiede un join naturale tra il fornitore e le tabelle delle parti, il join ha luogo non solo equiparando la colonna supplier_id delle due tabelle, ma anche la colonna del nome delle due tabelle viene equiparata. Poiché, il nome del fornitore non corrisponde al nome della parte dello stesso fornitore, la query non restituisce righe.
Sotto "vecchia sintassi del join" (8i e precedenti), "NATURAL JOIN" era il comportamento del join predefinito e credo che lo sia ancora se non si specifica una condizione di join. Una volta che 'NATURAL JOIN' era un'opzione ufficiale in 9i, la raccomandazione generale era di non usarla , perché una cattiva denominazione delle colonne può rovinarti, che è il mio che sto sostenendo per i nomi di buone colonne.