Conventions de nommage

Il m'est arrivé, pour le compte de mon client préféré, de devoir rédiger une documentation sur les conventions de nommage des scripts et objets de BD.

Après maintes recherche sur le web....rien du tout ou presque ! Enfin...que des directives différentes, voire contradictoires.
J'ai donc repris mes bouquins MS que j'utilisais pour passer mes certifs et le point est effectivement abordé, résumée par la phrase suivante : ce qui importe, ce n'est pas la convention de nommage utilisée, c'est que votre système d'information dispose d'une convention de nommage et l'applique.

Fort de ce principe, je me suis donc attelé à la tâche. Certains principes que j'ai pu retrouver dans différents SI ont été repris. En voici une shortlist :
  • Utilisation de préfixes pour différencier les objets de bases de données
  • Références de mêmes noms
  • Suffixe pour les champs identifiants
  • ...
Voici donc un exemple assez restreint mais qui aborde l'essentiel d'une nomenclature sous SQL Server :
  • les bases : aucune préconisation particulière mise à part éviter les symboles non alphanumériques, souvent en majuscules...
  • les tables : T_Personnes
    • le modèle relationnel impose des noms d'entités au singulier mais bien souvent, pour raisons historiques, on conserve des noms au pluriel pour les tables
  • Les vues : V_PersonnesActives
  • les champs : PersonneId
    • pour le champ identifiant
  • Prenom
    • une majuscule puis minuscule pour les champs standards
  • les champs qui sont clés étrangères : PersonneId
    • même nom que les clés primaires référencées
  • Les clés :
    • PK_Personne ou PKC_Personne si l'index est clustered pour une clé primaire
    • FK_Personne_Addresse pour une clé étrangère (les noms des deux tables sont indiqués).
  • Les indexs :
    • IXF_Personne_Prenom pour un index non unique et non clustered
    • IXU_Personne_Surnom pour un index unique non clustered
  • Les triggers : TR_Personne_CheckPersonne
  • Les contraintes :
    • CK_Identity_CheckControle : contrainte de type CHECK, porte sur le type de vérification
    • DF_DateCreation : contrainte de type DEFAULT
    • U_Surnom ou UC_Surnom voire UK_Surnom mais je suis moins fan, pour les contraintes UNIQUE.
  • Les fonctions : F_PERSONNE_AjouteAmi,
    • le nom de la table peut être remplacé par le nom du domaine fonctionnel dans lequel s'exerce la fonction (ex : F_USERSECTION_AjouteAmi)
  • Les procédures stockées : idem fonctions : P_PERSONNE_AjouteAmis

Quoi qu'il en soit, le principal objectif d'une bonne nomenclature est de bien différencier les nombreux objets de BD utilisés, pour pouvoir identifier rapidement l'un d'entre eux, car très vite, on peut se retrouver noyer dans un flot de code SQL...

Publié lundi 7 avril 2008 19:00 par guldan
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: Conventions de nommage @ mardi 8 avril 2008 09:44

Perso je ne suis pas un fana des clefs étrangères portant le même nom entre les tables, çà oblige à mettre des alias de table dans les requêtes même simples...

Pour les contraintes uniques et les index uniques, pas besoins de se traquasser avec des noms différents au final les 2 sont indexés et joue le rôle de vérification de l'unicité

Dernier point l'intéret est enorme dans le cas des contraintes de les nommer correctement, car le nom est renvoyé dans le message d'erreur de la violation de la contrainte... Du coup les nommer correctement permet de gagner énormément de temps !!!

christian

# re: Conventions de nommage @ mardi 8 avril 2008 09:54

Sur les alias, je suis plutôt pour leur utilisation systématique dans les requêtes longues à la fois pour des soucis de visibilité évidents, et lorsque l'on change le noms de tables, ça permet de ne repasser que sur une petite partie de la requête.

guldan

# re: Conventions de nommage @ mardi 8 avril 2008 10:34

J'ai l'habitude de typer un peu plus mes tables :

t_ pour les tables de contenu

p_ pour les tables de parametres

j_ pour les tables de jointures

Pour les procédures stockées, là c'est sur, faut trouver autre chose.

Laurent GEFFROY

# re: Conventions de nommage @ mardi 8 avril 2008 16:17

Vous mettez tous des préfixes a vos noms de tables et vues ? je trouve pas ca tres utile...

RaptorXP


Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01