Développeurs ! Quelles sont vos conventions en termes de base de données ?

La programmation, et dans mon cas le développement web, est remplie de conventions en tout genre. Ce sont des accords sur des règles à respecter tant dans l’écriture de code que dans le “nommage” des tables et champs de bases de données.

Il n’existe pas de règles officielles, chacun est libre, selon ses acquis ou ses habitudes de choisir telle ou telle convention, ou d’en créer une particulière.Base de données

C’est pour cela que j’aurai aimé avoir l’avis de développeurs confirmés, étudiants ou bricoleurs du web, peu importe.

  1. Quelles sont vos règles et pourquoi ? Quels noms donnez vous à vos tables, vos champs ?
  2. Faut-il mettre au pluriel le nom de la table des “Categories” ?
  3. L’identifiant d’une table (et plus généralement tous ses champs) doit-il est suffixé par le nom de la table ?
  4. Un identifiant d’un produit de type “id_produit” devrait-il être au singulier ou au pluriel ?
  5. Undersore, tiret ou concaténation entre les mots d’une table ?

Merci de laisser vos conseils avisés en commentaires !

 scoopeo:Développeurs ! Quelles sont vos conventions en termes de base de données ? Articles en relation

9 Responses to “Développeurs ! Quelles sont vos conventions en termes de base de données ?”

  1. piR Says:

    je suis pas un pro
    1) des noms explicites, avec un préfixe dans certains cas (pour préciser soit l’application soit le type)
    2) Non
    3) plutôt un ptit préfixe
    4) id_produit est un entier, pourquoi tu parles de pluriel ?
    pour stocker des mots, je les mettrais plutôt au singulier
    (et ensuite moteur de recherche intelligent qui pense à enlever des s en trop)
    5) espace
    nan j’déconne, underscore

  2. JY Says:

    Les frameworks imposent des conventions qui permettent de gagner énormément de temps… regarde du côté de Cake/Symfony/Zend, c’est de bonnes pistes :)

  3. Cyril Lopez Says:

    Merci de vos commentaires.
    piR > pour le point 4) je parle du nom du champ et non pas ce qu’il contient.

    JY > Oui depuis quelques temps je me base sur l’article de cakephp (je l’avais transféré à Vincent ;) :
    http://www.cakepourtous.org/7/les-conventions-en-cakephp

  4. FCY-Pierre Says:

    Travaillant dans le web depuis un moment, je n’ai toujours pas de rèlges mais je nomme souvent de la même façon.

    1) Les tables sont nommées en fonction de leur utilité. Un préfixe est ajouté ( dans le cas de plusieurs tables) pour regrouper les tables de la même application.
    2) J’aime bien mettre les choses au pluriels mais ce n’est pas une bonne habitude, le singulier est préférable.
    3) Tous mes identifiants auto-incréments se nomme généralement ID_ le nom de la table. Il peut même y avoir le préfixe de l’application. J’ai eu le cas ou pour éviter une incompréhension avec un champ similaire d’un autre table lors de jointures.
    4) singulier
    5) underscore

  5. Olivier Says:

    Comme le souligne Pir utiliser des noms explicites, ne pas avoir peur de faire trop long (dans la limite du raisonnable) mais que le champ soit clairement reconnaissable. Pour la table au pluriel je dirais non, meme si ça n’as pas clairement d’importance, par contre pour le champ au pluriel j’ai tendance à mettre au singulier.
    Utilisation du underscore .. Mais sinon niveau conventions, j’utilise la bonne vieille qu’on peut voir sur tes screenshots
    id_blabla
    nom_blabla
    lib_blabla

    Mais comme l’a souligné JY, Zend est bieng :D
    Il dispose de toute sorte d’outil bien pratique, notamment pour l’appel et l’utilisation de procédure

  6. Gérald Says:

    1. Pour le nom de mes tables elles suivent les noms données dans mon MCD (je concatène les nom et toujours en minuscule)
    2. Pour le pluriel ça dépendra de ce qu’il y a dans la table (souvent je les mets au singulier car elle vont de pair avec une classe et dans ma logique ca reprensente l’occurence d’un objet).
    3. Pour ne plus avoir de probleme de nom ambigus je rajoute devant tout les nom de champs le nom de la table (c’est long mais au moins j’ai plus de problème et a la relecture du SQL c’est plus parlant).
    4. Si ma table s’appel categories, mon ID sera categorieId ou categorie_Id
    5. Maintenant je concatène (avec une notation hongroise), sinon utilise l’underscore comme séparateur dans certain langage le tiret sera pris comme le moins signe mathématique moins.

    PS : je prend aussi l’habitude de tout mettre en anglais (Nom de variables, fonctions, classes + SQL + Commentaires) c’est plus pratique pour les travaux de groupes.

  7. Cyril Lopez Says:

    Salut,

    Tout d’abord je tenais à te dire que j’adore ton prénom et ton nom LoL Peut-être parce que j’ai les même, c’est ce qui m’a fait découvrir ton blog
    Et aussi parce qu’on semble avoir les même passions.

    1-Je suis un autodidacte, donc je n’ai jamais suivi de cours, donc je n’ai aucune convention et je le fait donc au filing. Le nom des tables est souvent composé avec le nom du script suivi + underscore + nom de la table. Exemple : script1_catégorie
    2-Personnellement je le met au pluriels.
    3-Oui, généralement je fais du genre id_produit, nom_produit …
    4-singulier
    5-Underscore.

    Voilà…
    A++
    Cyril Lopez ;)

  8. Cyril Lopez Says:

    Arf c’est donc toi qui est passé avant moi pour cette adresse gmail ! (C’est vrai qu’elle est belle :) )
    Merci pour vos commentaires à tous, et content que le blog te plaise Cyril !

  9. siddhy Says:

    Salut,
    C’est vrai que chacun a des regles de nommages… plus ou moins conscientes, plus ou moins pratiques mais qui (heureusement) évoluent dans le temps..
    les miennes sont (mais tu les connais déjà ;)) :
    - pour les tables : prefixe+underscore+suffixe (ex : adp_articles). toujours au pluriel. les liaisons de tables sont de cette forme : adp_articlesCategories, adp_articlesCategoriesLangues
    - pour les champs : nomDuChamp+underscore+suffixe de la table, sauf pour les id de liaison. (ex : id_articles, lib_articles, texte_articles, id_articlesCategorie)

    Voilà ;) ensuite on peut mettre en place des fonctions et methodes génériques qui facilitent grandement le travail

    @++
    Siddhy

Laisser un commentaire