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 :

MCD Historisation d'association sous poweramc


Sujet :

Schéma

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut MCD Historisation d'association sous poweramc
    Salut, je travail sous merise et durant la conception d'un modèle je me suis intéresse à l'historisation et plus particulièrement à celle d'une association.
    Via google , je suis arrivé sur ce schéma qui me semble représenter simplement le concept :

    J'ai cherché un peu dans poweramc, j'ai la version 11 mais il ne semble pas proposer cette option depuis le MCD. La seule solution semble l'ajout à la main depuis le MPD, meme si je doute que ceci soit reelement faisable.
    Comment faire ? j'ai aussi essayé l'ajout d'une nouvelle entité "historique" associé à la relation mais sans grand succès.
    merci de votre aide

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    J'aurais plutôt tendance à séparer la table d'historisation car il n'y a pas, conceptuellement, d'association entre les données historisées et les données de l'association actuelle.
    D'ailleurs, en MCD, on ne fait pas d'association à partir d'une association : on ne relie pas deux patates entre elles !

    Concrètement, il va se passer le phénomène suivant :
    1) Modification du loyer par l'utilisateur dans l'interface de saisie
    2) Copie du tuple concerné de la table LOUER dans la table H_LOUER avec ajout de la date du jour
    3) Mise à jour du loyer dans la table LOUER conformément à ce qu'a saisi l'utilisateur.

    En fait, la table H_LOUER est en association avec les tables PERSONNE et LOGEMENT puisqu'elle contient leurs identifiants en clé étrangère.

    Le schéma que tu montres est selon moi tout simplement faux ! D'ailleurs il n'y a pas de correspondance entre le MCD et le MLD. Et c'est normal que PowerAMC ne t'offre pas la possibilité de le faire.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour votre réponse.
    En gros, "historiser" une table ca consiste à en créer une identique avec une date en plus sur la PK. Et tout ca se fait uniquement au niveau physique (lors de la création de la table)
    Je vais simplement indiquer sur le modèle un (H) après le nom de l'association pour indiquer la particularité.

    .. à moins que je représente l'historisation de cette manière ?


  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Cette représentation pose encore problème à mon avis.
    Il y aura bien deux clés étrangères dans Louer_histo qui seront les identifiants de Personne et de Logement. Mais ton MCD donne en clé primaire 'louer_date_histo', ce qui veut dire qu'il peut y avoir une seule historisation par jour.

    La bonne représentation en MCD serait peut-être de faire une association ternaire entre les entités Personne, Logement et une entité Date. Ainsi, la table issue de cette association aurait bien pour clé primaire les identifiants de Personne et de Logement et la Date.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  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 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par vitwan Voir le message
    je travail sous merise et durant la conception d'un modèle je me suis intéresse à l'historisation et plus particulièrement à celle d'une association.
    Via google , je suis arrivé sur ce schéma qui me semble représenter simplement le concept
    La représentation de Bernard Espinasse appelle quelques commentaires :

    1) Au niveau conceptuel, l’adjonction du symbole (H) signifie que l’association-type Louer est historisable (et non pas historisée). En effet, je cite Dominique Nanci (co-auteur avec B. Espinasse de "Ingénierie des systèmes d’information Merise 2e génération"), qui parle du caractère historisable des propriétés, mais cela vaut pour les associations-types, mutatis mutandis :
    Citation Envoyé par Nanci Voir le message
    Il existe alors une notation symbolique (H), qui indique que cette propriété est historisable.
    A moins d’être démenti, à mon sens l’association-type Louer prend en compte ce qui est en cours et ce qui est passé (et pourquoi pas à venir) :

    Pour la partie en cours :
    — Une personne peut louer plusieurs logements en même temps.
    — Un logement peut être loué en même temps par plusieurs personnes (les logements seraient donc de type communautaire...)
    Pour la partie historique :
    — Si une personne Px loue actuellement le logement Ly, alors on conserve l’historique des locations de Ly par Px (par location j’entends le couple (Personne,Logement).
    — On ne conserve pas d’historique pour les locations pour lesquelles on n’a rien en cours.
    Remarque concernant le MLD :

    Si au niveau de la contrainte d’intégrité référentielle H_Louer -> Louer, on a défini le trigger de suppression RESTRICT, alors on ne peut pas supprimer une location en cours si elle est référencée par des locations historisées.
    Si on a défini le trigger de suppression CASCADE, alors la suppression d’une location en cours entraîne celle des locations historisées.

    2) La représentation graphique d’Espinasse traite du «passage du modèle Entité/Relation enrichi au modèle relationnel enrichi» (sic).

    Espinasse confond représentation graphique et théorie. Je tiens en effet à rappeler que le modèle relationnel est une théorie proposée par Ted Codd en 1969 et 1970 et ce modèle se suffit à lui-même, il n’a donc nul besoin d’être enrichi.

    Pour la définition exacte de ce qu’est le Modèle relationnel, je vous renvoie par exemple à la discussion avec reimscool.



    Citation Envoyé par vitwan Voir le message
    J'ai cherché un peu dans poweramc, j'ai la version 11 mais il ne semble pas proposer cette option depuis le MCD. La seule solution semble l'ajout à la main depuis le MPD, meme si je doute que ceci soit reelement faisable.
    Effectivement PowerAMC ne propose rien en ce sens en ce qui concerne Merise. Mais il permet de le faire si vous modélisez en utilisant la notation Entité/Relation (Outils \ Options du modèle).

    1) Vous définissez les entités-types Personne et Logement en relation par une association-type Location :



    2) Vous demandez à PowerAMC de transformer l’association-type en entité-type (clic droit sur le lien, puis Transformer en entité \standard) :



    3) Vous ajoutez les propriétés de Location :



    4) Puis vous définissez H_Location :



    5) Et vous générez le MLD :

    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Rebonsoir,


    Citation Envoyé par CinePhil Voir le message
    il n'y a pas, conceptuellement, d'association entre les données historisées et les données de l'association actuelle.
    Dans le cas général, il est des situations ou il peut ne pas y avoir d’association et d’autres situations dans lesquelles c’est possible.



    Citation Envoyé par CinePhil Voir le message
    en MCD, on ne fait pas d'association à partir d'une association : on ne relie pas deux patates entre elles !
    En Merise classique, on ne relie effectivement pas deux associations-types. Maintenant, si vous passez à OOM (Orientation Objet dans Merise), cela se pratique.
    Si vous passez à RM/T la version Entité/Relation de Codd (1979), il n’y a pas non plus de contraintes.

    Par exemple, Codd définit :
    • Des entités-types fortes, telles que Personne et Logement,
    • Des entités-types associatives, telles que Location,
    • Des entités-types caractéristiques (faibles), telles que H_Location.
    Et il précise bien que tout type d’entité peut être connecté à n’importe quel autre type d’entité (principe d'orthogonalité).



    Citation Envoyé par CinePhil Voir le message
    En fait, la table H_LOUER est en association avec les tables PERSONNE et LOGEMENT puisqu'elle contient leurs identifiants en clé étrangère.
    Certes, et la contrainte définie par Espinasse établit cette association, mais elle impose une contrainte supplémentaire, à savoir que l’historique des locations fait référence aux locations en cours. Or vous lui supprimez cette contrainte, donc vous changez les règles de gestion des données.


    Citation Envoyé par CinePhil Voir le message
    Le schéma que tu montres est selon moi tout simplement faux !
    Au vu de ce tout ce qui précède, le schéma n’est pas faux. Simplement il n’est pas conforme à l’interprétation que vous faites de l’historisation des données, vous conduisant à changer les règles de gestion des données.


    Citation Envoyé par CinePhil Voir le message
    D'ailleurs il n'y a pas de correspondance entre le MCD et le MLD. Et c'est normal que PowerAMC ne t'offre pas la possibilité de le faire.
    Les schémas que j’ai fournis dans mon précédent message montrent qu'avec PowerAMC cette correspondance existe. Simplement, pour produire le résultat attendu, il suffit d’utiliser la notation Entité/Relation au lieu de la notation Merise, qui n'est qu'une notation parmi d'autres.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  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 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir à nouveau,


    Citation Envoyé par vitwan Voir le message
    En gros, "historiser" une table ca consiste à en créer une identique avec une date en plus sur la PK. Et tout ca se fait uniquement au niveau physique (lors de la création de la table)
    En très gros, comme vous dites. En tout cas, l’historisation est à modéliser au niveau conceptuel et non pas ultérieurement, au niveau logique (niveau à ne pas confondre avec le niveau physique où l’on traite des index, de la taille des blocs physiques en mémoire et/ou sur disque, bref de tout ce qui est quincaillerie, même si PowerAMC est coupable d’amalgame ès matière).


    Citation Envoyé par vitwan Voir le message
    .. à moins que je représente l'historisation de cette manière ?


    C’est une possibilité. Maintenant à vous de choisir :
    • Soit les locations historisées doivent faire référence à des locations en cours (version Espinasse)
    • Soit elles n’y font pas nécessairement référence (version CinePhil)

    Si c’est la version Espinasse qui vous convient, vous procédez comme je vous l’ai indiqué dans mon premier message.
    Si c’est la version CinePhil, alos votre MCD convient.


    Citation Envoyé par CinePhil Voir le message
    Cette représentation pose encore problème à mon avis.
    Il y aura bien deux clés étrangères dans Louer_histo qui seront les identifiants de Personne et de Logement. Mais ton MCD donne en clé primaire 'louer_date_histo', ce qui veut dire qu'il peut y avoir une seule historisation par jour.
    Cette représentation ne pose pas de problème, car les cardinalités 1,1 sont entre parenthèses, ce qui pour PowerAMC symbolise l'identification relative, autrement dit la clé primaire de la table Louer_histo sera la suivante :
    {adresse_Logmt, n°_personne, louer_date_histo}


    Citation Envoyé par CinePhil Voir le message
    La bonne représentation en MCD serait peut-être de faire une association ternaire entre les entités Personne, Logement et une entité Date. Ainsi, la table issue de cette association aurait bien pour clé primaire les identifiants de Personne et de Logement et la Date.
    C’est effectivement la solution classique pour faire participer la date à l’identification de la ternaire. Mais cela suppose que les locations historisées ne référencent pas les locations en cours.

    => A vitwan de choisir.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pfiou !
    Je vois que j'ai encore des choses à apprendre Professeur fsmrel !
    Mes cours CNAM ne sont pas allés aussi loin et je n'ai jamais utilisé PowerAMC.
    J'en étais resté à "on ne relie pas deux patates entre elles !"
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    J'en étais resté à "on ne relie pas deux patates entre elles !"
    - begin troll -
    Ben oui, je comprends. Mais c'est pourtant un bon moyen pour réussir à faire de bonnes frites pas grasses et bien dorées, à l'huile de merisier...
    - end troll -
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    bonsoir,
    merci pour vos réponses, je doit les relire en détails je vais surement en apprendre beaucoup tout comme j'ai pu récupérer l'astuce de la table liés par des cardinalités "(1,1)" sur ce même forum.
    pour mon problème je suis resté sur mon dernier schéma et je ne pense pas être limité à une historisation par jour puisque l'attribut date est un datetime (DT). Au pire la limite se situe à la seconde, ce qui est suffisant pour l'usage que j'ai à en faire. il s'agit en fait d'historiser le contenu de fichiers formatés.

Discussions similaires

  1. [MCD] identifiants et clés primaires sous PowerAMC
    Par thibouille dans le forum PowerAMC
    Réponses: 15
    Dernier message: 02/05/2013, 17h04
  2. MPD a partir du MCD sous PowerAMC
    Par yabo84 dans le forum PowerAMC
    Réponses: 1
    Dernier message: 13/08/2009, 16h29
  3. Génération du MCD à partir du MPD sous PowerAmc
    Par mrjeronimo dans le forum PowerAMC
    Réponses: 1
    Dernier message: 02/07/2008, 18h51
  4. [MCD] Problème d'association / cardinalités
    Par touronster dans le forum Schéma
    Réponses: 12
    Dernier message: 09/02/2008, 18h19
  5. [MCD] Contrainte d'association
    Par dorian53 dans le forum Schéma
    Réponses: 2
    Dernier message: 21/04/2007, 01h44

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