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

Diagrammes de Classes Discussion :

Implémentation héritage sans relation cyclique


Sujet :

Diagrammes de Classes

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 37
    Points
    37
    Par défaut Implémentation héritage sans relation cyclique
    Bonjour,

    Comment peut-on implémenter l'héritage du diagramme de classe en image au niveau de la base de données sans avoir une relation cyclique ?

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Provisoirement toléré
    Homme Profil pro
    Inscrit en
    Août 2002
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 143
    Points : 261
    Points
    261
    Par défaut
    Tu n'as pas de relation cyclique, l'héritage (Personne/Proche, Personne/Employe) ce n'est pas de l'association

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 097
    Points : 31 528
    Points
    31 528
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Driss35 a précisé qu’il se positionnait au niveau de la base de données. Si cette base de données est SQL, il n’y a que des tables et la notion d’héritage ne vaut plus (la norme a prévu le concept de supertable/subtable pour les adeptes du "Relationnel/Objet" (sic !), mais cela ne change à rien à ce qui suit).

    Le MLD produit par PowerAMC est le suivant :



    Si l’on tente de supprimer une personne qui est un employé et si l’action de compensation prévue pour la contrainte référentielle liant EMPLOYE et LIEN_PARENTE est du type RESTRICT, l’opération de suppression n’est effective qu’à la condition que l’employé ne soit en relation avec aucun proche (en notant au passage que de manière naturelle, l'action de compensation prévue pour la contrainte référentielle liant PERSONNE et EMPLOYE est CASCADE) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE LIEN_PARENTE
    (
            EmpId       INT           NOT NULL
          , ProcheId    INT           NOT NULL
          , LienParente VARCHAR(16)   NOT NULL
        , PRIMARY KEY (EmpId, ProcheId)
        , FOREIGN KEY (EmpId) REFERENCES EMPLOYE ON DELETE RESTRICT
        , FOREIGN KEY (ProcheId) REFERENCES PROCHE ON DELETE CASCADE
    ) ;
    Si la suppression d’un employé doit entraîner celle de ses proches, alors RESTRICT doit être remplacé par CASCADE, mais ceci ne permet que de supprimer les liens, les stimuli ne remontent pas jusqu’aux proches (table PROCHE) qui resteraient orphelins. Dans ces conditions, il faut mettre en œuvre une vue qui soit la jointure naturelle des tables LIEN_PARENTE, PROCHE et PERSONNE, ainsi qu’un trigger propageant les DELETE sur les tables ROCHE et PERSONNE. Dans ces conditions, on a du reste mis en œuvre un cycle mais qui n’apparaît évidemment pas sur le diagramme.


    N.B. Ne pas oublier de déclarer {Matricule} comme clé alternative de la table EMPLOYE (même chose pour {Nadhes} le cas échéant).

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Merci pour votre réactivité.

    Donc, si je comprend bien, on ne peut pas éviter la relation cyclique au niveau de la base de données ?

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 097
    Points : 31 528
    Points
    31 528
    Billets dans le blog
    16
    Par défaut
    Au contraire ! Pour créer un cycle il faut vraiment le vouloir : d’abord créer une vue qui permette de le mettre en place, ainsi qu’une trigger pour le rendre opérationnel en mise à jour.

    Le diagramme figurant dans mon message précédent montre seulement que pour aller de A à Z on passe par I ou J, on dit qu’on a deux chemins (conterminous paths) ou encore que Z peut être bombardé des deux côtes (pour que ce soit plus parlant, ci-dessous j’ai changé de notation pour le sens des flèches : hier j’ai utilisé la notation « relationnelle » et ci-dessous j’utilise la notation CODASYL, plus en phase avec le sens de la navigation) :




    En revanche, selon le diagramme ci-dessous qui représente un cycle, si A lâche une bombe, celle-ci passe par J puis Z puis I et elle lui revient en pleine figure :




    Ça me rappelle l'histoire de l’Australien qui a acheté un nouveau boomerang : il n’a jamais pu se débarrasser de l’ancien...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Donc en fait, il n'y a pas de relation cyclique qui sera généré par mon diagramme de classe ?

    Merci beaucoup pour votre assistance.

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 097
    Points : 31 528
    Points
    31 528
    Billets dans le blog
    16
    Par défaut
    Bonsoir,

    Si la cible est une base de données SQL, alors effectivement le diagramme produit (Modèle Logique de Données) sera dépourvu de cycle.

Discussions similaires

  1. relation cyclique table
    Par altair8080 dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 25/04/2008, 11h13
  2. [Win'Design] héritage et relations problématiques
    Par samtheh dans le forum Autres
    Réponses: 1
    Dernier message: 26/11/2007, 11h00
  3. [modelisation] Héritage sans nouvelles spécifications
    Par poukill dans le forum Diagrammes de Classes
    Réponses: 8
    Dernier message: 21/06/2007, 14h15
  4. Réponses: 3
    Dernier message: 04/06/2007, 08h34
  5. pb requete trop lente.(tables sans relation)
    Par zeloutre dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/04/2007, 08h48

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