Dans le cas d'Oracle, vous voudrez ne pas nommer les colonnes 'id' ou 'name' ou quoi que ce soit de générique.
Le problème est que par défaut dans les anciennes versions , Oracle tentera de joindre les tables sur la base de noms de colonnes similaires, donc si j'ai bien nommé tout, j'ai fini par spécifier la clause de jointure par défaut entre mes tables.
Mais même si vous n'utilisez pas Oracle, en ne choisissant pas les noms qui apparaissent dans plusieurs tables, cela signifie également que vous n'avez pas à passer par la difficulté de créer un alias à chaque fois que vous devez faire une sélection sur deux tables:
SELECT
instrument.name as instrument_name,
instrument.abbr as instrument_abbr,
source.name as source_name,
source.abbr as source_abbr,
...
FROM ...
Ainsi, si les sélections multi-tables sont la norme, des noms de colonne plus longs vous évitent de taper. (si vous n'utilisez qu'une seule table à la fois ... avez-vous vraiment besoin d'une base de données relationnelle?)
... et l'enregistrement de la frappe nous amène à un autre problème dans Oracle - au moins dans 8i (la version actuelle lorsque j'ai suivi les cours Oracle SQL Tuning et Data Modeling) la mise en cache des plans d'exécution est basée uniquement sur les premiers caractères du (vous ne vous souvenez pas de la valeur exacte ... 1024?), donc si vous avez des requêtes qui ne varient que par quelque chose à la fin de la clause where, et une très longue liste de colonnes que vous extrayez, vous peut se heurter à un impact sur les performances car il ne peut pas mettre correctement en cache le plan d'exécution.
Oracle avait un guide sur la sélection de ce qu'ils prétendent être de bons noms de table et de colonne, qui est essentiellement un guide pour supprimer les lettres jusqu'à ce qu'il y ait environ 5 à 8 caractères, mais je ne m'en suis jamais beaucoup soucié.
...
Au fur et à mesure que les choses évoluent:
- les colonnes sont toujours singulières (les tableaux sont toujours pluriels)
- tous les noms sont en minuscules, juste au cas où quelque chose est sensible à la casse
- en raison de ce qui précède, utilisez des traits de soulignement au lieu de l'étui à chameau.
mise à jour : pour ceux qui ne connaissent pas le comportement de jointure d'Oracle, voir le dernier exemple sur la maîtrise d'Oracle SQL: Conditions de jointure , où il mentionne:
Qu'est-il arrivé? La raison réside dans le fait que, à part fournisseur_id, ces deux tables ont une autre paire de colonnes avec un nom commun. Cette colonne est le nom. Ainsi, lorsque vous demandez une jointure naturelle entre le fournisseur et les tables de pièces, la jointure a lieu non seulement en égalant la colonne supplier_id des deux tables, mais la colonne de nom des deux tables est également équivalente. Étant donné qu'aucun nom de fournisseur n'est identique au nom de pièce de ce même fournisseur, aucune ligne n'est renvoyée par la requête.
Sous «ancienne syntaxe de jointure» (8i et versions antérieures), «NATURAL JOIN» était le comportement de jointure par défaut, et je pense qu'il l'est toujours si vous ne spécifiez pas de condition de jointure. Une fois que 'NATURAL JOIN' était une option officielle dans 9i, la recommandation générale était de ne pas l'utiliser , car un mauvais nom de colonne peut vous gâcher, ce que je préconise pour de bons noms de colonne.