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écisions SGBD Discussion :

Conception de Base de données (AutoIncrément oui ou non)


Sujet :

Décisions SGBD

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Conception de Base de données (AutoIncrément oui ou non)
    Bonjour à tous,

    Depuis un certain temps je me pose une grande question existentielle, dois-je utiliser un champ ID (Auto incrément) comme clé primaire à une table :

    Lorsqu'on fait des recheches sur internet, je crois pouvoir affirmer sans trop me tromper qu'il existe deux écoles de penser soient celle d'utilisé une clé primaire auto-incrémenté ou la deuxième rendre, autant que faire ce peut, toutes les tables en appliquant les règles des formes normales.
    Mais disons qu'il n'est pas exclut de rendre également une table avec une clé auto-incrémenté en 3ème forme normale (C'est juste souvent plus simple!).

    Personnellement, j'utilise des clées primaires qui s'auto-incrémente, pourquoi ? Je me suis toujours dit que le fait de faire référance à un entier dans une autre table était plus optimale question de recherche sur cet index (si le champ est indexé) Et cette référence occupe moin d'espace disque que si on utilise un Varchar par exemple.

    En parcourant les guides de SQLPro on conclut effectivement que les 2 méthodes peuvent être employées. Mais laquelle doit-on utiliser ? Quel méthode utilisez-vous ?

    J'aimerais bien avoir vos avis ce le sujet... Bon débat !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 58
    Points : 44
    Points
    44
    Par défaut
    Salut,
    Un des trucs que je peux te dire, c'est qu'à prioris cela se fait beaucoup et ne pose en général pas de problème; la seule chose à laquelle il faut faire attention c'est au typage de ta clé pour ne pas faire exploser l'id. s'il y'a beaucoup d'insert/delete.
    Autre point, il existe une instruction (je crois !) pour combler les "trous" si tu supprimes en bloc des enregistrements et que tu réinsères ..
    Je sais c'est pas très précis mais ce sont des pistes

  3. #3
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    ca depend aussi de ton shema
    si tu utilises des objets qui ont dans leur attributs un champs numerique unique, pourquoi ajouter une clé primaire?
    si ce sont juste des personne (nom, prenom, tel), la il faut ajouter une clé, c mieux.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Cela dépend aussi du contexte : je travaille actuellement sur un projet J2EE où c'est un outil de mapping qui permet de faire la relation entre objets java et objets oracle. Il se trouve qu'on peut simplié l'utilisation de cet outil de mapping en n'utilisant pas de clé primaire composite. Dans ce cas l'ID est indispensable... du moins il aide énormément

    Sinon, les 2 sont valables, il n'y a aucune justification en terme de perf (à ma connaissance du moins donc moi je préfére avec une PK qui a un vrai sens fonctionnel plutôt qu'un ID artificielle qui m'impose de surcroit de créer des séquences

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 896
    Points : 53 130
    Points
    53 130
    Billets dans le blog
    6
    Par défaut
    en terme de performances pures l'utilisation d'une clef unique calée sur le mot processeur est ce qui ce fait de mieux...
    => clef 32 bits donc int sur processeur 32 bits
    => clef 64 bits donc big int sur processeur 64 bits.

    Pourquoi ?

    Simpelment parce que :
    si plus petit que le mot du processeur => conversion pour voir si débordement
    si plus grand, oblige plusieurs passes dans le processeur.

    A +

Discussions similaires

  1. [Conception] Conception de base de donnée
    Par briceg dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/09/2007, 11h06
  2. conception de base de donnée
    Par Zilfi63 dans le forum Modélisation
    Réponses: 8
    Dernier message: 29/05/2007, 08h43
  3. [Conception]Identifiant base de données access
    Par del__k dans le forum Access
    Réponses: 2
    Dernier message: 13/04/2007, 12h01
  4. [Conception]cohérence Base de données Access 2003
    Par hugue dans le forum Modélisation
    Réponses: 4
    Dernier message: 25/03/2007, 18h06
  5. [Conception] Cache base de donnée Versus cache FTP ?
    Par genova dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/09/2005, 18h39

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