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 Oracle Discussion :

Comment connaître à quels attributs clé référence une clé étrangère


Sujet :

Administration Oracle

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Par défaut Comment connaître à quels attributs clé référence une clé étrangère
    salut tous le onde

    j'ai svp une petite question ,comment je peux connaitre a quel cle primaire reference une cle etrangers;il me faut un programme qui consulte la meta base d'un entrept de donnees et par la suite affiche ces attributs

    merci d'avoir lire mon message

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 47
    Par défaut
    Bonjour,

    Ce que je comprends par votre demande, c'est que vous cherchez à connaître les clés primaires et colonnes référencées pour un schéma donné. On peut obtenir une réponse par cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT  C2.CONSTRAINT_NAME, CC.COLUMN_NAME
    FROM    ALL_CONS_COLUMNS CC
    INNER JOIN  ALL_CONSTRAINTS C1
            ON  CC.CONSTRAINT_NAME = C1.CONSTRAINT_NAME
        INNER JOIN  ALL_CONSTRAINTS C2
                ON  C2.R_CONSTRAINT_NAME = C1.CONSTRAINT_NAME
                AND C2.CONSTRAINT_TYPE = 'R'
        WHERE   C1.CONSTRAINT_TYPE IN ('P', 'U')
        AND     C1.OWNER = 'MON SCHEMA'
    ORDER BY CC.CONSTRAINT_NAME;
    La table system ALL_CONSTRAINTS contient toutes les contraintes définies sur votre base de donnée. Quant à la table system ALL_CONS_COLUMNS elle contient toutes les colonnes cibles d'une contrainte. A l'aide de ces deux tables, vous devriez être apte à trouver votre solution.

    Cordialement,

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Par défaut comment connaitre a quel attributs cle reference une cle etranger Répondre à la discussion
    salut;merci bcp juda d’avoir le temps pour me répond,

    j'ai fait ça ,mais ce qui j'ai comme résultats, c'est l'ensemble des clés primaire(contrainte 'P') et clés étrangères (contrainte'R') ;ma question plus précisément c'est d'identifier a quel clé primaire référence une clé etrangères de table de fait (elle fait référencer a une clé primaire de table de dimension mais laquelle exactement ? )

    Je suppose qu'on ne connait pas le schéma au préalable ,puisque je vais penser a automatiser les choses .

    autre question svp:
    est ce qu'on peux avoir le fichier ".sql "ou bien le script de création d'une base de données déjà créer sous oracle(dans MYSQL il y a la notion de import export mais je ne sais pas est ce qu'il y a cette possibilité dans ORACLE)


    si j'arrive a identifier le script de création des différentes tables donc je peux conclure (clé étrangers ,clé primaire a l'aide de clause référence ou ...)

    merci

    Cordiales salutations

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 47
    Par défaut
    Je prends en exemple deux tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE EMPLOYEE
      (
        EMP_ID  NUMBER(10,0) PRIMARY KEY,
        EMP_NOM VARCHAR2(30 BYTE),
        EMP_PRE VARCHAR2(30 BYTE),
        EMP_DEP NUMBER(10,0),
        CONSTRAINT RF_EMP_DEP FOREIGN KEY (EMP_DEP)
    		REFERENCES DEPARTEMENT(DEP_ID)
      );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE SYS.DEPARTEMENT
      (
        DEP_ID  NUMBER(10,0) PRIMARY KEY,
        DEP_NOM VARCHAR2(30 BYTE)
      );
    En modifiant légèrement la requête donnée en exemple précedemment :
    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
    SELECT  C1.CONSTRAINT_NAME AS "PK", C2.CONSTRAINT_NAME AS "FK", CC.COLUMN_NAME AS "Colonne referencee", CC.TABLE_NAME "Dimension"
    FROM    ALL_CONS_COLUMNS CC
    INNER JOIN  ALL_CONSTRAINTS C1
            ON  CC.CONSTRAINT_NAME = C1.CONSTRAINT_NAME
        INNER JOIN  ALL_CONSTRAINTS C2
                ON  C2.R_CONSTRAINT_NAME = C1.CONSTRAINT_NAME
                AND C2.CONSTRAINT_TYPE = 'R'
        WHERE   C1.CONSTRAINT_TYPE IN ('P', 'U')
        AND     C1.TABLE_NAME = 'DEPARTEMENT'
    ORDER BY CC.CONSTRAINT_NAME
     
    ...
     
    PK                             FK                             Colonne referencee Dimension
    ------------------------------ ------------------------------ ------------------ ------------------
    SYS_C006989                    RF_EMP_DEP                     DEP_ID             DEPARTEMENT
    Pour n'avoir que les dimensions référencées par des tables de faits, c'est à vous de filtrer vos requêtes comme il se doit. Sans la connaissance de la base de donnée on ne peut pas aider plus. J'ai pris en exemple précédemment un filtrage sur le schema mais à vous de construire le bon filtre, je suppose juste que votre réponse est dans les tables system.

    Pour ce qui est du script de création des tables, regardez du côté des outils d'extraction de SQL Developper, ou bien Toad, Tora, ou n'importe quel autre utilitaire d'administration pour Oracle.

    Cordialement,

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 15
    Par défaut
    merci beaucoup Mr juda pour votre aide et les explications ;ça marche très bien merci,



    svp ,il y t-il comment modifier la requete por qu'elle me retourner

    colonne clé etrangers: EMP_DEP
    colonne clé primaire : DEP_ID


    merci encore une fois

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

Discussions similaires

  1. Comment lire les attributs "hide" d'une table en VBA
    Par fredlefou dans le forum Access
    Réponses: 1
    Dernier message: 28/01/2008, 01h30
  2. Réponses: 1
    Dernier message: 15/05/2007, 10h40
  3. Réponses: 2
    Dernier message: 06/06/2006, 13h59
  4. Réponses: 11
    Dernier message: 13/01/2006, 15h30
  5. [JACOB] Comment passer un objet par référence à une méthode
    Par zlavock dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 21/03/2005, 18h28

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