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

PL/SQL Oracle Discussion :

Index et clé primaire [12c]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Par défaut Index et clé primaire
    Bonjour,

    Je reprends un exemple de création de table d'Oracle.

    Je trouve etrange qu'ils créent un index puis la clé primaire.

    L'index n'est pas implicite avec la clé primaire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE regions
        ( region_id      NUMBER 
           CONSTRAINT  region_id_nn NOT NULL 
        , region_name    VARCHAR2(25) DEFAULT 'XXX'
        );
     
    CREATE UNIQUE INDEX reg_id_pk ON regions (region_id);
     
    ALTER TABLE regions
    ADD ( CONSTRAINT reg_id_pk
           		 PRIMARY KEY (region_id)
        ) ;
    Merci beaucoup

    G

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Les deux objets clef primaires et index sont bien distincts.
    Les clefs primaires sont validées, pour des raisons de performance, au travers d'un index mais qui n'est pas forcément unique, c'est pour cette raison que les deux commandes peuvent être séparées.
    J'écris peuvent être, car il y a de nombreuses syntaxes valides pour déclarer une PK, on peut le faire au niveau de la colonne, au niveau de la table, de manière autonome après création de la table.

  3. #3
    Membre très actif Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Par défaut
    "pas forcément unique" dans le cas ou l'on a une clé primaire composée ?

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Pas forcement unique point.
    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
     
    Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
     
    SQL> 
    SQL> CREATE TABLE regions
      2      ( region_id      NUMBER
      3         CONSTRAINT  region_id_nn NOT NULL
      4      , region_name    VARCHAR2(25) DEFAULT 'XXX'
      5      );
    Table created
    SQL> CREATE INDEX reg_id_pk ON regions (region_id);
    Index created
    SQL> ALTER TABLE regions
      2  ADD ( CONSTRAINT reg_id_pk
      3              PRIMARY KEY (region_id)
      4      ) ;
    Table altered
     
    SQL>
    Mais cela ne veut pas dire que vous devez créer vos indexes de clé primaire de cette manière, loin de ça!

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Une contrainte d'intégrité a besoin d'un index pour vérifier les doublons de manière efficace. S'il n'existe aucune index utilisable pour cela, un index est créé automatiquement. Mais on peut le créer avant.
    Cordialement,
    Franck.

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

Discussions similaires

  1. Index et cle primaire
    Par topolino dans le forum Développement
    Réponses: 4
    Dernier message: 13/11/2009, 14h33
  2. Indexation double clé primaire
    Par mora87 dans le forum Modélisation
    Réponses: 5
    Dernier message: 18/05/2007, 12h03
  3. Mise a jour de l'index de cle primaire
    Par Mercenary Developer dans le forum DB2
    Réponses: 2
    Dernier message: 10/10/2006, 21h15
  4. index et clef primaire et étrangère
    Par stos dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/09/2006, 08h59
  5. Réponses: 17
    Dernier message: 25/04/2005, 09h49

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