web-dev-qa-db-fra.com

Nom de colonne Nommage Conventions et meilleures pratiques

Je voudrais un avis d'expert sur les meilleures pratiques en matière de Nommage de la colonne .

Le fond est que selon Wikipedia , la syntaxe suivante,

SELECT ... FROM Employees JOIN Timesheets USING (EmployeeID);

est plus efficace que

SELECT ... FROM Employees JOIN Timesheets ON (Employees.EmployeeID = Timesheets.EmployeeID);

Cependant, le JOIN ... USING Syntaxe fonctionne uniquement de Toutes les colonnes de clés primaires ont des noms uniques globalement. Ainsi, je me demande si cela est considéré comme la bonne chose à faire.

Personnellement, j'ai toujours l'habitude de créer des tables avec la colonne PK id et la colonne de clé étrangère othertable_id. Mais ainsi, il n'est pas possible d'utiliser USING ou NATURAL JOIN.

Tous les liens vers des styles de conception ou des guides de meilleure pratique pour la conception de la table seraient également appréciés!

19
Kerrek SB

Cela a été demandé avant.

Où vous avez des noms communs et très ambigus, puis préfixez le nom de la table. C'est-à-dire que tout ce que vous êtes susceptible d'avoir à alias dans presque toutes les questions.

Donc, pour une table d'employé, j'aurais

EmployeeID
EmployeeName
Comment
Salary
StartDate
EndDate
InsertedDateTime
...

Et Wikipedia dit en fait:

L'utilisation de la construction est plus que de simple sucre syntaxique, cependant, car le jeu de résultats diffère de l'ensemble de résultats de la version avec le prédicat explicite. Spécifiquement, toutes les colonnes mentionnées dans la liste Utilisation n'apparaîtront qu'une seule fois, avec un nom non qualifié, plutôt qu'une fois pour chaque table dans la jointure.

C'est une colonne de moins. Vous n'utiliseriez jamais SELECT * De toute façon, donc le point est discutable ...

13
gbn

Le livre suivant parle d'utiliser ID comme SQL AntiPattern et I Gree avec l'auteur que c'est. http://www.amazon.com/sql-antiipatterns-programming-pragmatiques-programmers/dp/1934356557/ref=sr_1_1?s=books&ie=utf8&qid=1330025134&sr=1-1

C'est un problème particulier lorsque vous effectuez des rapports complexes et avez besoin de plus d'un identifiant que vous avez ensuite à alias. L'utilisation de la table ID de table facilite également l'identification de la bonne FK à rejoindre (car elles ont le même nom) et permettent aux erreurs de rejoindre la mauvaise chose moins probable.

Cela dit, de nombreuses bases de données ne prennent pas en charge l'utilisation de la syntaxe qui rend le problème que vous avez soulevé non un problème pour ces bases de données.nor Dès que de nombreuses bases de données prennent en charge à l'aide d'une jointure naturelle que je ne recommanderais pas que l'utilisation de quelque nature que ce soit alors qu'ils peuvent changer. si les structures de table changent. Supposons donc que vous ajoutez un champ appelé modifiésDate aux deux tables, vous ne voudrez pas vous inscrire à ce sujet, mais la jointure naturelle le ferait.

6
HLGEM

Il est préférable de donner explicitement le nom de la table et le nom de la colonne comme les employés.employeeid avec des expressions où une inscription existe

4
Eralper