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

- [SharePoint] Les sessions TechDays 2012… par Le blog de Patrick [MVP SharePoint] le il y a 4 heures et 49 minutes

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le 02-09-2012, 11:01

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59