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 :

[Relationnel Objet] Tables d'Objet et les OID


Sujet :

Administration Oracle

  1. #1
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut [Relationnel Objet] Tables d'Objet et les OID
    Bonjour,
    qq sait-il si la notion d'OID d'un Objet Oracle ( create type ROOM As Object .. ) concerne uniquement le type de l'objet
    et/ou si il existe un OID pour chaque object d'une table d'objet (Create Table ROOMS of ROOM )?

    Dans le cas où un OID existe pour chaque objet d'une table, la déclaration d'une clé primaire est-elle redondante.
    Et peut-elle être composite ou est-ce un non-sens au niveau conceptuel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Restrictions on the OID_clause
    You cannot specify OBJECT IDENTIFIER IS PRIMARY KEY unless you have already specified a PRIMARY KEY constraint for the table.
    Comment fonctionne cette clause dans une déclaration de table d'objet ?
    Comment peut-on connaître cette clé primaire pour l'utiliser comme clé étrangére ?
    Cet OID est-il une pseudo colonne comme le ROWID ?

    En espérant ne pas être trop confus dans mes propos

    Merci
    Laurent Dardenne

    XP pro ,Oracle 9i

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Les objets de ligne sont identifiés sous forme de lignes dans une table.
    Leurs donnéesne sont pas imbriquées dans la table principale. Cette dernière
    contient une référence vers une autre table.(Foreign Key objet)
    La table objet diffère d'une table relationnelle car chaque ligne possède
    un identifiant d'objet (OID) assigné par Oracle lors de la création de la ligne.
    Il est également possible de se référer aux lignes d'une table d'objets à partir d'autres objets
    de la base.

    La valeur de cet OID peut être obtenu via la fonction REF()
    La fonction REF() peut uniquement désigner des objets de ligne.
    Vous ne pouvez pas l'utiliser sur des objets de colonne( types de données abstraits, objets LOB ou collecteurs)

    Le OID peut être vu comme un identifiant unique (PK), mais ne remplace pas la PK
    posée sur la table.
    Si vous supprimez une ligne d'une table objet, son OID est naturellement supprimé,
    mais si vous insérez une nouvelle ligne avec des données identiques, Oracle créé un
    nouvel OID pour cette ligne, idépendament d'une PK identique
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Merci pour ces informations.

    Citation Envoyé par SheikYerbouti
    Le OID peut être vu comme un identifiant unique (PK), mais ne remplace pas la PK posée sur la table.
    Quel est donc l'intêret d'avoir "2 PK" ?
    Optimisation ?

    La seule maniére de gérer cet OID en tant que PK est d'utiliser Ref() et Deref() ?

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par Laurent Dardenne
    La seule maniére de gérer cet OID en tant que PK est d'utiliser Ref() et Deref() ?
    Les fonctions REF() et DEREF() Permettent d'accéder aux objets de lignes dans le modèle objet. Ce sont des pointeurs conservés dans les tables.

    Les OID générés par Oracle sont des pointeurs vers des lignes d'autres tables, ils ne remplacent pas la primary key posée sur ces tables.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Merci

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Restrictions on the OID_clause
    You cannot specify OBJECT IDENTIFIER IS PRIMARY KEY unless you have already specified a PRIMARY KEY constraint for the table.
    Cette clause indique que l'OID est géré par l'utilisateur et pas par Oracle. Il n'y a donc pas de redondance avec la clé primaire déclaré dans la table.

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

Discussions similaires

  1. Objet Table : Les doublons ne sont pas affichés
    Par fredlaciotat dans le forum QlikView
    Réponses: 5
    Dernier message: 09/06/2015, 17h01
  2. Réponses: 1
    Dernier message: 23/09/2010, 14h38
  3. Réponses: 2
    Dernier message: 15/12/2008, 15h58
  4. [Pl/SQL] relationnel objet : tables imbriquées
    Par gilux dans le forum Oracle
    Réponses: 1
    Dernier message: 18/03/2006, 00h23
  5. Urgent - après la migration - les tables "Invalid Objet
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 27/12/2005, 10h50

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