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

Administration SQL Server Discussion :

cle primaire avec plusieurs champs ?


Sujet :

Administration SQL Server

  1. #1
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut cle primaire avec plusieurs champs ?
    Bonjour,

    Quelle est l'utilité de faire une clé primaire basé sur plusieurs champs ?

    Merci
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Tout dépend du concept à modéliser.

    Mais à priori, pour faire plaisir à Mr Tabourier, on n'aura jamais que des clefs primaires d'une seule colonne (de type entier auto-incrémenté) à l'exception des tables résultant d'associations plusieurs à plusieurs du MCD. Lesquelles auront une clef primaire composée des colonnes des clefs primaires des deux tables(entités) en relations.
    Kropernic

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous pouvez également avoir plusieurs colonnes en clef primaire dans les cas d'identification relative

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Vous pouvez également avoir plusieurs colonnes en clef primaire dans les cas d'identification relative
    Certes mais j'essaie de ne pas compliquer les choses ^^. Vu la question, il s'agit probablement d'un débutant. Alors si on peut déjà avoir des clefs primaires sans signification sémantique, ce sera déjà bien
    Kropernic

  5. #5
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    En faite je me pose toutes ses questions car j'essaye d'optimiser ma BDD.
    En effet pour l'instant j'ai environ 135 tables, et toutes mes cles primaires et secondaires sont indexées.
    Les relations entre tables sont faites egalement.

    Maintenant grace a vos conseils. je vais regarder les proc stock afin de faire des cles primaires / index multi colonne en fonctions des requetes.
    Les tables associatives ont un indexes par colonne, donc je vais enlever cela par une cle multi colonnes.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par topolino Voir le message
    Les tables associatives ont un indexes par colonne, donc je vais enlever cela par une cle multi colonnes.
    Attention, s'il s'agit d'index UNIQUE, ils peuvent avoir un rôle de contrainte d'intégrité...

  7. #7
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Je ne vois pas de probleme avec l'integrite ? Peux tu preciser ?
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bin par exemple, dans une table avec des personnes, on pourrait avoir une colonne contenant le numéro de registre national (c'est pour la Belgique mais j'imagine qu'il doit y avoir l'équivalent en France et en Suisse) et que cette colonne doit être unique pour être sûr de ne pas avoir 2 fois la même personne.
    Kropernic

  9. #9
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Suivant vos conseils, j'ai pris une de mes tables associatives (relation n,n), j'ai enlevé l'index sur chacune des colonnes (2 colonnes) et mis un index sur les 2 colonnes.

    Et bien les résultats sont moins bons. J'ai fait des tests avec proc stock et sans proc stock. Est-ce normal ?
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bin ça dépend des cas ^^.

    Etre DBA, c'est un peu de l'art(isanat).

    Montre nous le script DDL de la table en question ainsi que la requête que tu as testé.
    Kropernic

  11. #11
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    On a du mal se comprendre...

    Sur une table avec deux colonnes, il existes deux indexes multi colonne possibles :
    (A,B)
    et
    (B,A)

    Ils sont différents, et ne couvriront pas les mêmes requêtes, et pas de la même façon...

    Comme on vous l'indique dans une autre discussion, il est impossible d'indiquer de façon empirique les index a poser sur une table.
    ça dépend des requêtes qui sont exécutées, des données,...


    Donc, on ne pourra pas vous en dire plus si on ne connait pas (au moins !) :
    - La structure des tables
    - Les requêtes exécutées.


    Et bien les résultats sont moins bons. J'ai fait des tests avec proc stock et sans proc stock. Est-ce normal ?
    Quels tests avez vous effectué ? les avez-vous joués plusieurs fois (après ajout ou suppression d'index, les requêtes sont recompilées).

  12. #12
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    En effet vous partez de loin! on enlève pas un index comme ca parce qu'il ne vous plait pas!
    Le mieu est de se former avant de s'improviser DBA...

    Si vous voulez qu'on vous aide, postez un exemple de requête qui vous pose problème...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  13. #13
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Aucun index ne me pose problème et ma base fonctionne correctement avec des millions d'enregistrements.
    Je souhaite simplement ameliorer, pofiner ma Base de donnée et prevoir un peu plus l'avenir.

    Je souhaite comprendre aussi un peu plus le fonctionnement de SQL Server, pour cela je lis pas mal de doc et de tutoriaux.

    Vous m'avez bien eclairé et vous en remercie.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

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

Discussions similaires

  1. [MPD] Clé primaire sur plusieurs champs
    Par vimanas dans le forum Schéma
    Réponses: 21
    Dernier message: 24/09/2008, 19h43
  2. [Sql]de clé primaire avec accès concurrents
    Par Guilmo1080 dans le forum Oracle
    Réponses: 3
    Dernier message: 04/08/2006, 16h38
  3. [Conception] Listes chainées avec plusieurs champs
    Par Nasky dans le forum Général Java
    Réponses: 6
    Dernier message: 11/03/2006, 23h52
  4. Réponses: 3
    Dernier message: 19/11/2004, 21h48
  5. liste deroulante avec plusieurs champs
    Par JulienT dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/04/2004, 17h17

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