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

Développement SQL Server Discussion :

Clé primaire VARCHAR


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Par défaut Clé primaire VARCHAR
    Bonjour,

    Je suis débutant en BDD et j'essaye de mettre en place ma première base.
    J'ai donc modélisé ma base en suivant le tutoriel MERISE en commencant par le dictionnaire des données jusqu'au MLD.
    Je suis actuellement à l'étape de création des tables.
    J'ai une table avec comme clé primaire un VARCHAR et j'ai remarqué que je n'arrivai pas à la faire correspondre avec mes autres clé (primaires et secondaires) qui sont des entiers (int).(quand je met le type de ma clé en VARCHAR, toutes mes clé deviennent des VARCHAR)

    Est-il possible de le faire ?

    Merci d'avance pour vos réponse
    Cordialement,
    Antoine

  2. #2
    Membre expérimenté
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Billets dans le blog
    4
    Par défaut
    Attention, Il est recommandé pour des questions de performances de ne pas utiliser de clé primaires en varchar.

    Un int auto incrément (IDENTITY( 1, 1 ) ) sous sql server est conseillé pour limiter les soucis d'insertion en base et une amélioration des performancse de jointures de tables.

    SQLPro à écrit un billet sur la gestion de clé primaires en BDD

    Cordialement,
    Lyche
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Par défaut
    Cela veut dire que même si cette donnée VARCHAR sera obligatoirement unique, il faudrait utiliser un entier comme clé primaire pour des raisons de performances ?

  4. #4
    Membre expérimenté
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par antoine2641 Voir le message
    Cela veut dire que même si cette donnée VARCHAR sera obligatoirement unique, il faudrait utiliser un entier comme clé primaire pour des raisons de performances ?
    c'est exactement ça.
    Un Entier nécessite moins de ressource pour le moteur sgbd qu'un caractère. Question d'encodage.

    je t'invite à lire ce papier de SQLPro pour la gestion des clé-primaires.

    http://sqlpro.developpez.com/cours/clefs/
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Par défaut
    D'accord c'est noté.
    Merci pour le lien, je ne le trouvai pas.

    Merci et a bientôt sur db3 !

  6. #6
    Membre actif
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Par défaut
    Citation Envoyé par antoine2641 Voir le message
    Cela veut dire que même si cette donnée VARCHAR sera obligatoirement unique, il faudrait utiliser un entier comme clé primaire pour des raisons de performances ?
    Non. La solution "clés primaires de type INT" est plus générique mais ce n'est que la recommandation. I.e. "int identity" crée les problèmes pour les BDD distribuées. En transactionnel (OLTP) "clés primaires de type GUID" pourras être une bonne solution. A voir les cas particuliers.

  7. #7
    Membre expérimenté
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Serguei_TARASSOV Voir le message
    Non. La solution "clés primaires de type INT" est plus générique mais ce n'est que la recommandation. I.e. "int identity" crée les problèmes pour les BDD distribuées. En transactionnel (OLTP) "clés primaires de type GUID" pourras être une bonne solution. A voir les cas particuliers.
    Le Guid doit être utilisé comme référence de ligne, jamais comme Clé primaire. Si tu as des soucis avec les int identity c'est que tu as des soucis de conceptions de BDD.
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  8. #8
    Membre actif
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Par défaut
    Citation Envoyé par Lyche Voir le message
    Le Guid doit être utilisé comme référence de ligne, jamais comme Clé primaire.
    Explications ?

    Si tu as des soucis avec les int identity c'est que tu as des soucis de conceptions de BDD.
    Confirmations ?

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

Discussions similaires

  1. [SQL SERVER 2008] Clé primaire VARCHAR + IDENTITY
    Par djskyz dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/08/2011, 09h17
  2. table avec clé primaire et varchar(500) incompatibles?
    Par korntex5 dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 08/01/2007, 15h54
  3. [varchar en clef primaire] perte de performances?
    Par hansaplast dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/08/2006, 20h29
  4. clé primair type varchar
    Par maliba dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/05/2006, 17h33
  5. Passage du type integer vers varchar sur clé primaire
    Par GMI dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/01/2005, 09h09

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