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

Oracle Discussion :

clé primaire ?


Sujet :

Oracle

  1. #1
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut clé primaire ?
    Bonjour !

    ce matin un développeur de mon taf m'a soutenu que :
    - ne pas créer de clé primaire puis de faire l'index à la main
    - créer une clé primaire
    était tout à fait identique côté performance.

    c'est bien vrai tout ça ?

    déclarer une clé primaire ne fait que tester l'unicité et ajouter un index ?


    Merci !

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Créer une clé primaire présente deux avantages :

    Le premier va permettre de mettre en place un filtre dont le principal but est de tester l'unicité des informations et ainsi d'eviter la non redondance des informations.

    Cependant lorque que l'on crée une clé primaire Oracle va de lui même créer un index qui donc va forcément accellerer les informations

    Donc on gros ton pote il fait deux fois la même chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    SQL> create table dvp_perf ( a number , b varchar2(10)) ; 
     
    Table créée.
     
    SQL> 
    SQL> declare 
      2  i number ; 
      3  begin 
      4  for i in 1..10000 
      5  loop 
      6  insert into dvp_perf values (i, 'DVP') ; 
      7  end loop ;
      8  commit  ; 
      9  end ; 
     10  /
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> select table_name , index_name from user_indexes where table_name ='DVP_PERF' ; 
     
    aucune ligne sélectionnée
     
    SQL> 
    SQL> select table_name , constraint_name  , constraint_type from user_constraints where table_name =
    'DVP_PERF' ; 
     
    aucune ligne sélectionnée
     
    SQL> 
    SQL> 
    SQL> alter table dvp_perf add constraint dvp_pk primary key ( a ) ; 
     
    Table modifiée.
     
    SQL> select table_name , index_name from user_indexes where table_name ='DVP_PERF' ; 
     
    TABLE_NAME                     INDEX_NAME
    ------------------------------ ------------------------------
    DVP_PERF                       DVP_PK
     
    SQL> 
    SQL> select table_name , constraint_name  , constraint_type from user_constraints where table_name =
    'DVP_PERF' ; 
     
    TABLE_NAME                     CONSTRAINT_NAME                C
    ------------------------------ ------------------------------ -
    DVP_PERF                       DVP_PK                         P

  3. #3
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    merci de ta réponse Jaouad.

    Donc en gros il avait raison ? à part le filtre d'unicité, c'est équivalent ?

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Citation Envoyé par Mathusalem
    merci de ta réponse Jaouad.

    Donc en gros il avait raison ? à part le filtre d'unicité, c'est équivalent ?

    Le filtre d'unicité peut être gérer par un Index Unique

  5. #5
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 1 061
    Points
    1 061
    Par défaut
    Il est important aussi de retenir qu'une clé primaire joue un rôle lorsqu'une contrainte de clé étrangère est définie sur une autre table qui fait référence à cette clé primaire.
    Oracle utilise un mécanisme non externalisé pour verrouiller les lignes lors des opérations DML et DDL et pour appliquer les contraintes.
    Je ne me rappelle plus dans quel chapitre de la doc Administrator's Guide il s'en parle.
    Je croire ne pas raconter de bêtises !
    .

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 125
    Points : 125
    Points
    125
    Par défaut
    Citation Envoyé par star
    Il est important aussi de retenir qu'une clé primaire joue un rôle lorsqu'une contrainte de clé étrangère est définie sur une autre table qui fait référence à cette clé primaire.
    Oracle utilise un mécanisme non externalisé pour verrouiller les lignes lors des opérations DML et DDL et pour appliquer les contraintes.
    Je ne me rappelle plus dans quel chapitre de la doc Administrator's Guide il s'en parle.
    Je croire ne pas raconter de bêtises !
    .
    Cependant il n'est pas necessaire d'avoir une cle primaire pour faire une reference dessus. Un index UNIQUE suffit pour creer une cle etrangere

  7. #7
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Citation Envoyé par tostinni
    Un index UNIQUE suffit pour creer une cle etrangere
    Un index unique n'est pas suffisant. Il faut une cle unique ou une cle primaire.

  8. #8
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Citation Envoyé par Mathusalem
    Bonjour !
    ce matin un développeur de mon taf m'a soutenu que :
    - ne pas créer de clé primaire puis de faire l'index à la main
    - créer une clé primaire
    L'avantage de la manip est de
    1) Mapper la PK sur l'index unique, prealablement cree avec les conventions de noms en vigueur pour le projet ou produit,
    2) Pouvoir desactiver les cle primaires sans casser les indexes.

  9. #9
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 125
    Points : 125
    Points
    125
    Par défaut
    Citation Envoyé par plabrevo
    Un index unique n'est pas suffisant. Il faut une cle unique ou une cle primaire.
    Au temps pour moi, c bien une cle unique que je faisais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TABLE TEST
    	   (ID NUMBER UNIQUE)

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

Discussions similaires

  1. Import data d'Excel ds 2 table lié par clé primaire
    Par lord_paco dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 10/05/2005, 09h31
  2. clé primaire composée de 2 clés étrangères
    Par Tigresse dans le forum Installation
    Réponses: 5
    Dernier message: 28/07/2003, 14h38
  3. clé primaire aléatoire
    Par peuh dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 23/06/2003, 20h51
  4. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  5. Problème pour récupérer la clé primaire
    Par caramel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2003, 13h57

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