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 :

user_tables et tab_columns


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Points : 38
    Points
    38
    Par défaut user_tables et tab_columns
    Bonjour à tous,

    Voici les requêtes qui me permettent d'obtenir les infos que je souhaite :

    Obtenir le nom de toutes les tables de l'utilisateur :
    select table_name from user_tables;

    Lister les noms de tous les champs de toutes les tables de l'utilisateur :
    select col_name from tab_columns;

    Bon... Ok user_tables et tab_columns sont des vues d'oracle.

    Ce que j'aimerai savoir comment ces vues sont créées. En effet, j'ai besoin d'une table qui stocke uniquement le nom de toutes les tables et attributs de ma base utilisateur. Je suppose que chacun de ses éléments est représenté par un identifiant donc il est peut être possible de créer une clé étrangère dans la table que je veux faire et qui pointe vers les identifiants des noms de tables ou attributs...

    Merci d'avance

    PS :
    Pour info, j'ai 3 tables A, B et C.
    A doit contenir le nom de tout ce qui se trouve dans ma base (nom des tables et nom des champs et doit donc être modifié à chaque create ou drop de table et maj des noms... chacun des tuples de cette table est identifié par une clé primaire)
    B contient d'autres infos (avec un identifiant pour les représenter).
    C clé étrangère vers l'identifiant de A, clé étrangère vers l'identifiant de B et d'autres valeurs...

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    pourquoi réinventer ce qui existe... je ne comprends pas du tout le besoin là

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    J'avais déjà embété pour un truc de métadonnées... en fait ce que j'ai besoin c'est de créer un systeme me permettant de gérer des métadonnées un peu spécifique.

    Donc en gros j'ai une table qui contient les critères de ces métadonnées (leur nom en quelques sortes = dans la table A) et ces critères sont liés à une table ou à un attribut... donc j'ai besoin d'une seconde table qui lie une table ou un attribut à un seul critere avec une valeur (Table B).

    Donc trouver l'identifiant du critere c'est pas compliqué puisque c'est moi qui l'ai créé... Donc j'aurais 2 tables... mais il m'en faut une troisieme dans laquelle je peux trouver tous les noms des tables et colonnes de ma base (ou alors simplement mettre dans la table B l'identifiant de ces éléments... mais je ne sais pas du tout comment les identifier => Cad que je ne sais pas du tout comment avec un simple champ dans ma table B je peux pointer sur un tuple qui correspond à un tuple de la user_table par exemple...)...
    Bon en gros, je ne veux pas mettre dans ma table B les noms en dur, sinon à chaque maj ou création de table faudrait que je modifie le contenu de B... Ce que j'aimerai c'est que dans B je pointe sur un critére d'un coté (table A) et vers un autre "TRUC" qui me permettrait ensuite de trouver le nom associer à ce truc... (le nom étant alors celui d'une table ou d'un champ)...
    Comme je ne connais pas bien oracle en ce qui concerne ces aspects, je ne sais meme pas si c'est possible ou pas...

    Mes tables :

    TABLE A (
    id NUMBER(3) PRIMARY KEY NOT NULL,
    name CHAR(30) NOT NULL,
    );

    TABLE B (
    fk_A_id NUMBER(3) NOT NULL,
    fk_???_id NUMBER(3) NOT NULL,
    value NUMBER(10),
    PRIMARY KEY(fk_A_id, fk_???_id),
    CONSTRAINT FK1 FOREIGN KEY(fk_A_id) REFERENCES A(id) ON DELETE CASCADE,
    CONSTRAINT FK2 FOREIGN KEY(fk_???_id) REFERENCES T(???) ON DELETE CASCADE
    );

    Ou la clé FK2 (fk_???_id) fait référence à un identifiant ??? de la table T qui me permet alors dans cette même table T de retrouver le nom de la colonne ou de la table qui se trouve dans mon schéma...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    Je vais donner un exemple...

    J'ai les tables suivantes dans ma base :
    PERSONNE(idpersonne, nom, prenom)
    ADRESSE(idadresse, numero, rue, cp, ville)
    LOCATION(#idpersonne,#idadresse,loyer)

    (Exemple débile mais on s'en fout)

    Et moi je veux mettre en place un systeme de metadonnee tel que :
    CRITERE(idcritere, nom) (= table A)
    LIEN(idcritere,idelement,valeur (= table B et ou idelement fait référence à une table ou un attribut)

    Et idelement pointerai sur une donnée de oracle (un identifiant) qui serait sous la forme (par exemple)
    TABLE_SYSTEME_ORACLE(id,nom,...)
    ou id = idelement de ma table LIEN
    et nom peut être égal à PERSONNE, ADRESSE, LOCATION mais aussi idpersonne, nom, prenom, idadresse, numero etc...

    Ainsi je peux lier un critere et une table dans la table lien avec une valeur ou un critere et un attribut dans cette meme table lien avec une autre valeur (me demander pas pkoi mais c'est ce que je veux faire...)

    Bon la c'est plus clair ou pas ?

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    je dirais que c'est capilotracté

    Désolé, c'est trop compliqué pour moi et pour un vendredi après-midi

Discussions similaires

  1. role de la table user_tables
    Par awalter1 dans le forum Administration
    Réponses: 2
    Dernier message: 03/03/2011, 11h01
  2. problème avec la vue user_tables
    Par moi26 dans le forum Administration
    Réponses: 9
    Dernier message: 21/07/2009, 16h48

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