IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Casse pour noms tables et colonnes


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut Casse pour noms tables et colonnes
    Bonjour.

    En migrant une base de données MySQL de Windows vers Linux, je me retrouve confronté au problème de sensibilité à la casse car j'ai pris l'habitude d'écrire mes noms de table et de colonnes avec majuscules et minuscules.
    Du coup, me vient une question : y a-t-il une bonne pratique pour écrire les noms de tables et de colonnes ? Tout en majuscule ? Tout en minuscule ? Utilisation de tirets '-' ou de caractères soulignés '_' pour rendre les noms plus lisibles ?
    Par exemple, avec une table listant les types de livres (pour une gestion de bibliothèque), comment vaut-il mieux écrire le nom de la table ?
    • TypesLivres
    • Types-Livres
    • Types_Livres
    • types-livres
    • types_livres
    • TYPES-LIVRES
    • TYPES_LIVRES

  2. #2
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Les noms de tables et de colonnes ne sont pas case sensitive dans le standard SQL.
    De plus, par convention, on met souvent les mots-clefs du langage SQL en majuscules.

    Pour cette raison, je préconise l'emploi des minuscules dans les noms de tables et de colonnes, mais sans accent et sans caractère spécial.

    J'aurai donc créé dans votre cas la table "typeslivres", nom que vous ne proposiez pas.

    Cordialement,

    Arkhena
    A bove ante, ab asino retro, a stulto undique caveto

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 380
    Points
    18 380
    Par défaut
    J'ai plus rencontré des majuscules que des minuscules personnellement.
    D'ailleurs sur Oracle, si on ne précise pas avec des double-quotes, par défaut tout est en majuscule.

    Effectivement il vaut mieux éviter les caractères spéciaux ainsi que les mots réservés.

    Je vous conseille aussi de tout mettre au singulier sinon vous allez vous perdre avec les S pour pas grand chose.
    Pour votre table, TYPE_LIVRE me paraît être un bon choix.

  4. #4
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut
    Citation Envoyé par Arkhena Voir le message
    Bonjour,
    J'aurai donc créé dans votre cas la table "typeslivres", nom que vous ne proposiez pas
    Je ne l'ai pas proposé, car je ne le trouve pas très lisible.

  5. #5
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut
    Citation Envoyé par Waldar Voir le message
    J'ai plus rencontré des majuscules que des minuscules personnellement.
    D'ailleurs sur Oracle, si on ne précise pas avec des double-quotes, par défaut tout est en majuscule.
    Ce qui m'ennuie avec le tout majuscule, c'est que c'est un peu plus difficile de faire la différence dans les requêtes entre les commandes SQL (SELECT, FROM...) et les éléments propres à la base de données (noms de tables et de colonnes).

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 380
    Points
    18 380
    Par défaut
    Vous pouvez écrire en minuscule sans problème dans vos requêtes, si vous ne précisez rien ça se passe bien.

    Si vous faites une des trois opérations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE TOTO [...]
    CREATE TABLE toto [...]
    CREATE TABLE Toto [...]
    Tout est équivalent et tous les select suivant fonctionneront et sont équivalents :
    select * from toto
    select * from Toto
    select * from TOTO
    SELECT * from TOTO
    SELECT * from toto
    SELECT * from Toto

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 036
    Points
    34 036
    Billets dans le blog
    14
    Par défaut
    J'ai relaté une mésaventure similaire en Postgresql récemment.

    J'ai refait ma BDD sans les guillemets et les tables, colonnes et autres éléments de la BDD se sont enregistrés tout en minuscule, ce qui est moins lisible effectivement.

    Je cite en partie SQLPro qui est un peu plus précis que ce que j'ai cité dans l'autre discussion :
    En principe, la casse (c'est à dire majuscule et minuscule) n'a pas d'importance dans la nomination des objets. Cependant, certains SGBDR s'avèrent sensibles à la casse pour le nom des objets SQL dans certaines conditions. C'est la cas en particulier de SQL Server, si on le paramètre à l'installation en CASE SENSITIVE.
    Il semble que les SGBD ont leur propre standard et ne respectent pas forcément la norme.

    Sous MySQL (sous Linux, ce n'est peut-être pa sle cas sous Windows), on peut créer deux bases de données nommées Majuscule et majuscule. Les colonnes Majuscule et majuscule sont bien sûr également différentes.

    Sous Postgresql, si on écrit les noms sans guillemets, ils se mettent en minuscules et si on crée les objets avec guillemets, il faut ensuite écrire les requêtes avec les guillemets pour appeler ces objets.

    Bref, c'est galère !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre régulier Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Points : 105
    Points
    105
    Par défaut
    J'avais effectivement vu cette discussion, CinePhil, mais elle ne m'apportait pas de réponse claire. D'un autre côté, j'ai l'impression qu'il n'y en a pas.

    Du coup, je pense que je vais éviter les mélanges majuscules-minuscules et opter pour du tout minuscule avec caractère souligné pour séparer les mots. Donc, par rapport à mon exemple, plutôt "type_livre" (pour reprendre également la recommandation de Waldar sur le singulier).

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 380
    Points
    18 380
    Par défaut
    En cherchant j'ai retrouvé ce sujet de SQLPro :
    http://sqlpro.developpez.com/cours/standards/

    Trouvé ici :
    http://www.developpez.net/forums/d82...s/#post4724248

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 036
    Points
    34 036
    Billets dans le blog
    14
    Par défaut
    J'avais déjà vu le standard de nommage de SQLPro. PAs le dernier sur son site professionnel mais celui de son blog sur Developpez.com.

    Je m'en suis inspiré en partie depuis que je fais du SQL (début 2008) mais je le trouve un peu lourd et plus difficile à lire car tout en majuscules, chose qui a déjà été évoquée ici.
    Une requête longue et complexe tout en majuscules est pour moi plus difficile à lire qu'une requête avec les mots du langage SQL en majuscules et les noms des objets (majoritairement) en minuscules.

    De plus, il semble, sous réserve de vérification chez moi, qu'une requête écrite entirèrement en majuscules dans Postgresql se trasnforme automatiquement en minuscules, comme déjà expliqué plus haut et dans l'autre discussion. Ce qui est un sacré handicap pour le fonctionnement.

    Ce qu'il faut en tout cas, c'est essayer de se fixer un standard et de s'y tenir pour toujours se comprendre, et que celui-ci soit compatible avec le SGBD qu'on utilise. En l'occurence, je n'avais jamais eu de problème avec MySQL, j'en découvre en passant à Postgresql et ça m'ennuie beaucoup !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requete SQL pour nom de colonne de mes tables..
    Par dutty76 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/03/2008, 11h06
  2. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29
  3. Réponses: 4
    Dernier message: 10/05/2006, 18h40
  4. Réponses: 2
    Dernier message: 10/02/2006, 16h09
  5. Comment préciser nom de la colonne pour un Bulk Insert
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2004, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo