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 :

[Oracle 10G] Modélisation d'un organigramme


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Par défaut [Oracle 10G] Modélisation d'un organigramme
    Bonjour,

    Ma problématique est la suivante :
    - Je dispose d'une table "tache"
    - Une tache peut avoir plusieurs pères ou plusieurs fils, ce qui donne le schéma possible suivant :
    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
                ----------------
                |   tache1     |
                ----------------
                       |
        -----------------------------------
        |              |                  |
    ----------     ----------         ----------
    | tache2 |     | tache3 |         | tache4 |
    ----------     ----------         ----------
        |              |                  |
        |              --------------------
        |                        |
    ----------              ----------
    | tache5 |              | tache6 |
    ----------              ----------
    Comme une tache est constituée de plusieurs attributs, il a été proposé de faire deux tables :
    - Une table TACHE contenant la clé primaire TACHEID ainsi que divers attributs
    - Une table RELATION contenant le TACHEID_PERE et le TACHEID_FILS

    Pour l'exemple schématisé, le contenu de la table RELATION serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TACHEIDPERE           TACHEIDFILS
    -----------           -----------
         1                     2
         1                     3
         1                     4
         2                     5
         3                     6
         4                     6
    Le but serait de pouvoir récupérer l'organigramme via une requête hiérarchique (connect by ... prior ...) avec une jointure (tel que décrit ici : http://www.developpez.net/forums/d54...t-by-jointure/)

    Est-ce une modélisation pertinente ?
    Oracle gère-t-il correctement les organigrammes de ce type ?

    D'avance merci.

  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
    Au pire, si les jointures vous embêtent on peut toujours les faire avant ou après l'application de la récursivité.

    Le cas tel que vous l'avez décrit est plutôt bien géré par Oracle.
    Des cas de récursivités plus complexes ne peuvent être bien gérés qu'en 11gR2 avec l'introduction des R-CTE.

    Votre cas :
    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
    With TACHE as
    (
    select 1 as TACHEID, 'Tache 1' as TACHENAME from dual union all
    select 2           , 'Tache 2'              from dual union all
    select 3           , 'Tache 3'              from dual union all
    select 4           , 'Tache 4'              from dual union all
    select 5           , 'Tache 5'              from dual union all
    select 6           , 'Tache 6'              from dual
    )
      ,  RELATION as
    (
    select 1 as TACHEIDPERE, 2 as TACHEIDFILS from dual union all
    select 1               , 3                from dual union all
    select 1               , 4                from dual union all
    select 2               , 5                from dual union all
    select 3               , 6                from dual union all
    select 4               , 6                from dual
    )
        select level
             , t1.TACHENAME as TACHENAMEPERE
             , t2.TACHENAME as TACHENAMEFILS
          from RELATION r
               inner join tache t1
                 on t1.TACHEID = r.TACHEIDPERE
               inner join tache t2
                 on t2.TACHEID = r.TACHEIDFILS
    start with tacheidpere = 1
    connect by tacheidpere = prior tacheidfils;
     
         LEVEL TACHENAMEPERE TACHENAMEFILS
    ---------- ------------- -------------
             1 Tache 1       Tache 2      
             2 Tache 2       Tache 5      
             1 Tache 1       Tache 3      
             2 Tache 3       Tache 6      
             1 Tache 1       Tache 4      
             2 Tache 4       Tache 6

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Par défaut
    Merci.

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

Discussions similaires

  1. oracle 10g sous MDK 10.1
    Par james_usus dans le forum Oracle
    Réponses: 32
    Dernier message: 21/12/2004, 04h56
  2. Installation ORACLE 10g sous XP Pro
    Par DUCORROY dans le forum Oracle
    Réponses: 7
    Dernier message: 21/10/2004, 09h08
  3. Installation Oracle 10g sous Windows 2000
    Par Jeff206 dans le forum Oracle
    Réponses: 6
    Dernier message: 24/08/2004, 15h51
  4. [ORACLE 10g Linux] Pbm de connexion avec un Client winXP
    Par zarbiwayne dans le forum Administration
    Réponses: 26
    Dernier message: 20/08/2004, 22h37

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