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

Schéma Discussion :

Modélisation concept héritage


Sujet :

Schéma

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Modélisation concept héritage
    Bonjour,

    Nous travaillons actuellement sur la restructuration des données au sein de notre structure et, dans ce cadre, nous avons élaboré un modèle conceptuel de données avec merise (élaboré avec JMerise).
    Je me permets de vous solliciter pour avoir votre avis sur un problème que nous rencontrons.
    En effet, dans notre modèle, nous avons intégré le concept d'héritage pour décrire les types de découpages géographiques (un découpage administratif et un découpage propre aux besoins de notre observatoire ) ainsi que pour catégoriser les différentes actions que nous mettons en oeuvre. Quand nous générons le script SQL pour l'intégrer dans PostgreSQL, le logiciel nous génère un message d'erreur concernant la contrainte d'unicité de nos clés par rapport à ces tables. Après diverses lectures, il semblerait que le concept d'héritage ne soit pas bien retranscrit dans PostgreSQL. De plus, il serait déconseillé de l'utiliser pour éviter justement la génération d'erreurs.
    Nous voulions donc savoir s'il était effectivement possible de passer par le concept d'héritage sans que cela nous génère des problèmes, et si ce n'est pas possible, comment pouvons nous dériver le concept d'héritage pour s'en passer? Nous vous avons mis en pièce jointe notre MCD ainsi que le script SQL généré (doc word + message d'erreur), et une tentative de dérivation du concept.
    Nous vous remercions par avance de l'attention que vous porterez à notre demande et nous restons à votre disposition pour vous apportez tous les renseignements complémentaires.

    Bien cordialement,
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2007
    Messages : 98
    Points : 104
    Points
    104
    Par défaut
    Bonjour,

    Effectivement il vaut mieux implémenter l'héritage manuellement avec PostgreSQL.

    Dans l'implémentation de l'héritage la table fille hérite de la clé primaire de la table mère, tout simplement, donc c'est simple à faire.

    Pour votre erreur :

    Vous avez défini la PK de t_comptage_chien_repro_tly_crt ainsi
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRAINT prk_constraint_t_comptage_chien_repro_tly_crt PRIMARY KEY (crt_id,act_id)

    et vous tentez de définir des FK sur la colonne 'crt_id' seule:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE public.c_observation_comptage_obc ADD CONSTRAINT FK_c_observation_comptage_obc_crt_id FOREIGN KEY (crt_id) REFERENCES public.t_comptage_chien_repro_tly_crt(crt_id);

    d'ou l'erreur légitime que donne Postgresql... Je pense que c'est un oubli.

    Maintenant, je n'ai pas pris le temps d'étudier votre modèle, il s'agit peut-être d'un problème dans celui-ci.

    Cordialement,
    François

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    M'étant auto-formé en la matière, il se peut que l'erreur provienne du MCD.
    Donc pour implémenter l'héritage je défini deux clés primaires (celui de la table fille + celui logiquement hérité de la table mère) et je crée directement une relation entre ma table "programme" et mes tables "unité naturelle" et "commune", pour prendre l'exemple de cette héritage. Dans cette exemple, si je veux que mon programme fasse référence soit à une commune et/ou à une unité naturelle, je mets une contrainte de totalité sur les relations en lien avec la table programme?
    Si vous pouviez m'indiquer les erreurs, incohérences, ou incompréhensions sur le MCD, je vous serais très reconnaissant.
    Je reste à votre disposition pour plus de renseignements.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je vous joins également la description du MCD (pas 100% mis à jour).
    Fichiers attachés Fichiers attachés

  5. #5
    Membre régulier
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2007
    Messages : 98
    Points : 104
    Points
    104
    Par défaut
    Ok, je pense que vous avez généré le script SQL avec JMerise?

    Celui-ci ne génère pas un code correct avec l'héritage, d'autre part, les contraintes d'exclusions ne sont pas générées, il me semble.

    Vu la taille du modèle je craint de n'avoir pas le temps nécessaire à y consacrer...

    Quelques pistes :

    Vous avez des incohérences dans les clé primaires des tables héritées :

    tg_action_act a comme PK act_id auto-incrément, après moultes héritages nous trouvons la table t_comptage_chien_repro_tly_crt avec de nouveau une PK auto-incrémentée, c'est impossible puisque elle doit avoir la même valeur que sa/ses tables mères.
    Dans la même lignée ( tg_action_act ), la table t_repro_siteref_ba_rsb a pour PK rsb_id char !! Une clé primaire hérité doit être du même type que celle de la table mère.

    Ces erreurs se retrouvent un peu partout dans votre modèle. J'ai bien peur que vous ne soyez parti trop vite avec le concept d'héritage : "table_fille est une sorte de table_mere"

    Un début de formation avec SQLPro : conception par héritage

    Connaissez vous l'ouvrage "Parlez-vous Merise" de Michel Diviné disponible ici en téléchargement.

    Bref, je vous conseil de revoir ce concept et reprendre votre MCD à la lueur de ces nouvelles lectures

    Bon courage,
    François

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je vous remercie pour les différentes pistes.

    Effectivement, j'ai généré le script via JMerise. Et les différentes erreurs sont issues du concept d'héritage. Je vais revoir le concept et apporter les modifications nécessaires.

    Je vous remercie de votre réactivité et du temps que vous avez accordé à notre problème.

Discussions similaires

  1. Conception: héritage d'une classe abstraite
    Par Kikito dans le forum Langage
    Réponses: 19
    Dernier message: 05/10/2006, 18h36
  2. [Analysesi]comment modéliser un héritage ?
    Par guitalca dans le forum Outils
    Réponses: 3
    Dernier message: 14/04/2006, 11h01
  3. [conception] Héritage comment faire ?
    Par bohor2gannes dans le forum Modélisation
    Réponses: 11
    Dernier message: 15/02/2006, 18h35
  4. [modélisation] conception d'un championnat
    Par tomo0013 dans le forum Modélisation
    Réponses: 2
    Dernier message: 22/10/2005, 20h28
  5. [heritage][conception]héritage multiple en java!
    Par soulhouf dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2005, 21h03

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