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!
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 ...
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.
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