Je personnellement préfère (comme il a été indiqué ci - dessus) le Table.ID pour le PK et TableID pour la FK . Même (s'il vous plaît ne me tirez pas dessus) Microsoft Access le recommande.
CEPENDANT, je sais aussi pertinemment que certains outils de génération favorisent le TableID pour PK car ils ont tendance à lier tous les noms de colonnes qui contiennent 'ID' dans le mot, ID INCLUANT !!!
Même le concepteur de requêtes le fait sur Microsoft SQL Server (et pour chaque requête que vous créez, vous finissez par déchirer toutes les relations nouvellement créées inutiles sur toutes les tables sur l'ID de colonne)
AINSI autant que mon OCD interne le déteste, je roule avec la convention TableID . Rappelons-nous que cela s'appelle une base de données , car elle sera la base de nombreuses applications à venir. Et toutes les technologies devraient bénéficier d'un schéma bien normalisé avec une description claire.
Il va sans dire que je trace ma ligne lorsque les gens commencent à utiliser TableName, TableDescription et autres. À mon avis, les conventions devraient faire ce qui suit:
- Nom de la table: Pluralisé. Ex. Employés
Alias de table: Nom complet de la table, singularisé. Ex.
SELECT Employee.*, eMail.Address
FROM Employees AS Employee LEFT JOIN eMails as eMail on Employee.eMailID = eMail.eMailID -- I would sure like it to just have the eMail.ID here.... but oh well
[Mettre à jour]
En outre, il y a quelques articles valides dans ce fil sur les colonnes dupliquées en raison du "type de relation" ou du rôle. Exemple, si un magasin a un EmployeeID , cela me dit squat. Donc, je fais parfois quelque chose comme Store.EmployeeID_Manager . Bien sûr, c'est un peu plus grand, mais au moins, les gens ne deviendront pas fous en essayant de trouver la table ManagerID , ou ce que EmployeeID y fait. Lorsque la requête est WHERE, je le simplifierais comme: SELECT EmployeeID_Manager comme ManagerID FROM Store