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

MS SQL Server Discussion :

Clé composite ou clé auto incrementée ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Par défaut Clé composite ou clé auto incrementée ?
    Bonjour

    pour m'exercer à la modelisation, je regarde comment sont construites certaines base de donnés, (DNN, nop commerce etc)
    J'ai remarqué que certaine tables qui en théorie devrait avoir une clé composite ou clé double, bien souvent , cette clé composite et remplacer par une clé unique auto incrementée

    exple: cas des droit d'acces d'un role à un module
    soit les tables role et module
    t_role(id_role, lib_role...)
    t_module(id_module, lib_module ...)

    au lieu d'avoir
    t_permission( #id_role, #id_module, droit_lecture, droit_ecriture)

    on a :
    t_permission( id_permission, #id_role, #id_module, droit_lecture, droit_ecriture)

    quel est la raison de cette "dénormalisation", est-ce une question de performance, de simplicité des requetes, quand l'utiliser ? est-ce systématique dès qu'on à une clé composite et quelles sont alors les précautions à prendre pour garantir l'intégrité des données ?

    Merci de votre réponse

  2. #2
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Perso, Les cas de figurer ou j'ai vue de tel modèle s'était du aux contraintes de programmation
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    quel est la raison de cette "dénormalisation", est-ce une question de performance
    Je ne sais pas si on peut parler de dénormalisation au sens direct.
    C'est vrai que dans certains cas une telle clé est subrogée.

    Dans tous les cas cela procure au moins trois gains :

    - la fragmentation de l'index-cluster sous-jacent à la clé primaire est faible puisque les valeurs sont consécutives
    - cela évite de spécifier des jointures sur deux colonnes, donc de consommer moins de puissance de calcul
    - la clé de l'index cluster étant répliquée dans tous les index non-cluster de la table, moins celle-ci est large, moins les index non-cluster sont profonds et larges, plus les requêtes sont rapides.

    est-ce systématique dès qu'on à une clé composite
    Absolument pas. C'est à vous de décider de le faire ou pas.

    quelles sont alors les précautions à prendre pour garantir l'intégrité des données ?
    Ajouter une contrainte d'unicité sur les colonnes
    Notez au passage que lors de la spécification d'une telle contrainte, un index non-cluster est créé

    @++

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Autre avantage : la clef auto-incrémentée n'ayant aucune sémantique, elle ne peut faire l'objet d'aucune mise à jour, ce qui n'est pas le cas d'une clef composite ou sémantique....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 61
    Par défaut
    Merci infiniment de vos réponses qui m'éclairent beaucoup.

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

Discussions similaires

  1. auto-increment
    Par fafet dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 15h05
  2. [MYSQL] valeur auto-increment
    Par alex1er dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/07/2003, 12h26
  3. Auto Increment
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/06/2003, 18h36
  4. Nom du champs auto-incrementé
    Par norroy dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 18h30
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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