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

- WPF : la gestion des dates (Label, TextBlock) par Pierrick's Blog le il y a 4 heures et 49 minutes

- [ASP.NET] - ASP.NET Generated Image par Aurelien's Blog - When ClientSide meets .Net le il y a 6 heures et 17 minutes

- Utiliser le SDK Open XML pour manipuler vos documents Office Open XML par Julien Chable le il y a 7 heures et 31 minutes

- [Silverlight] - Créer un contrôle réutilisable et des propriétés personnalisées. par Danuz le il y a 10 heures et 48 minutes

- Photosynth : Composez et partagez vos scènes ! par Blog technique de Nicolas Boonaert le il y a 10 heures et 51 minutes

- Comment débugger un programme de génération de code utilisé dans VS ? par Matthieu MEZIL le il y a 10 heures et 52 minutes

- Avoir une propriété sur l'object context qui renvoit les sous-entités par Matthieu MEZIL le il y a 11 heures et 4 minutes

- Sortie du SDK 1.1 de Visual Studio 2008 par Michel Perfetti [Miiitch] le il y a 13 heures et 38 minutes

- Skyfire, Silverlight sur votre mobile ! par alex# le il y a 13 heures et 55 minutes

- VSTSDB 2008 GDR CTP16 est arrivé par Noham Choulant le il y a 14 heures et 59 minutes