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 :

[Merise] liste variable de propriétés


Sujet :

Schéma

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut [Merise] liste variable de propriétés
    <modéré par Cian>
    Tag rajouté pour vous
    Titre modifié pour plus de clareté
    </modéré par Cian>


    J'ai une table évenement qui contient différent type d'évenements. Mais pour chaque évenement de ma base, elles ne contiennents pas les mêmes types d'information. Comment le modéliser ?

    Dois-je créer une table évenement avec pleins d'autres tables avec des relations 0,1 ?
    Autres ?

    Merci beaucoup

  2. #2
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    ok,
    tu pourrais donc proceder de la sorte :

    Evenements ----- 1,n ------- Association -------- 1,1* ------ Informations

    * 1,1 : ca depend du nombre d'ocurences de l'entité evenement correspondant aux occurences de l'entité Infos. Avec la cardinalité 1,1, ca voudrait dire qu'une information concerne un et un seul evenement.
    Dans l'autre sens : 1 evenement possede une ou plusieurs informations (ca rejoint ce que t'a dis)

    Pour l'entité Personne, idem ! c'est le meme principe.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je suppose que dans la réponse de slim "Association" est le nom de l'association entre Evenements et Informations (comme dans un modèle Merise).

    Il y a un point que tu ne soulèves pas : à quoi sert cette table Evenements ? On ne peut pas modéliser sans connaître le but de la modélisation (un client pour une grande surface n'a rien à voir avec le client pour un assureur, ou le client pour un hôpital).
    En prenant deux cas éloignés comme exemples, les réponses ne sont pas identiques :
    1) Tu veux faire un journal (type log) très simplifié : dans ce cas on peut supposer que la date et heure de l'évènement, un type d'événement, un user et du texte non structuré décrivant l’événement est suffisant
    2) Tu veux faire un système d’alimentation automatique d’un entrepôt de données : dans ce cas chaque type d’événement peut nécessiter un traitement spécifique ; la solution de slim avec une table Evenements n’enregistrant que la date et heure de l'évènement, un type d'événement, un user (et toutes les informations génériques que tu voudras) plus une ou des tables d’informations me paraît judicieuse.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Voici un exemple concret:
    J'ai une table type: Qui contient ado, Adulte, Anim...
    Mais dans le cas où j'ai ado, il faut que je donne des infos supplémentaires.

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Puisque tu sembles avoir des difficultés à exposer ton problème, je vais essayer de comprendre :
    Tu as
    une table Machin (IdMachin(pk), IdStatut (fk)....)
    une table Statut (IdStatut (pk), Type,...)

    lorsque tu insères un enregistrement dans la table machin, sit le statut de cette ligne a un type"ado", il faut ajouter à Machin des informations supplémentaires.
    Si c'est bien cela
    Solution 1 : tu ajoutes à Machin toutes les information nécessaires aux ado en faisant attention à les déclarer "nullable". Cette solution est relatvement simple et peu évolutive.
    Solution 2 : tu crées une table ComplementAdo(IdMachin(pk), ...). Cette solution est un peu moins simple, un peu plus facilement évolutive.
    Solution 3 : tu crées une gestion dynamique des informations complémentaires, ce qui peut aboutir à une structure relativement compliquée, mais très évolutive !

    Si depuis le début tu nous avais communiqué la finalité de cette modélisation, nous ne serions pas obligé d'imaginer plusieurs solutions ; c'est assez difficile de te rendre service.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Je veux la solution la plus propre et la plus dynamique possible.
    Le problème si j'expliquais tout le contexte, il serait trop long et trop dur à expliquer.

    Pourrais-je avoir plus de détails pour la solution 3 s'il vous plait ?

    Merci beaucoup de votre aide

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Oberown
    Pourrais-je avoir plus de détails pour la solution 3 s'il vous plait ?
    N'ayant toujours pas d'information complémentaire, je ne peux que rester dans le théorique : tu crées une table qui va servir de structure d'accueil pour des informations non structurées (puisque tu n'en connais pas la structure), et tu gères tes propres métadonnées (google).
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  8. #8
    Membre confirmé

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 113
    Points : 488
    Points
    488
    Par défaut
    La problématique posée est celle dite de la liste variable de propriétés, décrite dans la littérature merisienne depuis une quinzaine d'années...
    Selon le degré de variabilité, différentes solutions existent. Deux peuvent à mon avis répondre à la question.

    1/ L'héritage (ou sous-typage)
    Ex:



    A utiliser si les différentes catégories sont limitées et si leur contenu (propriétés) est stable. Cette solution est figée.

    2/ La méta-modélisation
    Il s'agit de rendre complètement variable la liste des propriétés d'une entité (dont les propriétés intrisèques sont limitées aux stables).
    La notion de propriété est explictement modélisé par une entité, et les valeurs sont reportées dns une relation.
    On peut "cadrer" un peu cette modélisation en définissant des typologies avec leur liste de propriétés.

    Ex


    J'ai mis en oeuvre cette solution de très nombreuses fois; elle marche bien. Seule difficulté, la gestion des valeurs en fonction du type (on peut se limiter à alpha et num)
    Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément.
    L'Art poétique - Nicolas Boileau (1636-1711)

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Nanci
    J'ai mis en oeuvre cette solution de très nombreuses fois; elle marche bien. Seule difficulté, la gestion des valeurs en fonction du type (on peut se limiter à alpha et num)
    Pour être complet (je ne parle pas du typage, ni des listes de propriétés par type) il faudrait aussi ajouter la possibilité de définir des listes (ou des intervalles, ou...) de valeurs associées aux types d'évènements (par propriété). C'est à dire une gestion plus ou moins complète des métadonnées.
    Mais pour répondre complètement il faudrait en connaître un peu plus sur les besoins, question posée plusieurs fois et toujours sans réponse...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Nanci, merci beaucoup de ta réponse.
    Je n'avais jamais vu en cour ni l'héritage ni la méta-modélisation.
    Comment le MCD de l'héritage ce transforme en MLD ?

  11. #11
    Membre confirmé

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 113
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par Oberown
    Comment le MCD de l'héritage ce transforme en MLD ?
    A partir, par exemple, du MCD suivant


    Il existe 4 possibilités de transformation.
    1) Duplication de la clé primaire


    2) Duplication complète du contenu du sur-type dans les sous-types


    3) Suppression du sur-type et migration complète dans les sous-types


    4) Suppression des sous-types et migration complète dans le sur-type


    Chacune des solutions a des avantages et des inconvéniernts dépendant
    - de l'existence d'autres relations sur le sur-type ou les sous-types
    - du nombre de propriétés dans le sur-type ou les sous-types
    - de l'activité en mise à jour / consultation
    Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément.
    L'Art poétique - Nicolas Boileau (1636-1711)

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/03/2006, 16h15
  2. Réponses: 1
    Dernier message: 20/07/2005, 09h13
  3. Liste variable...
    Par Franck.H dans le forum C
    Réponses: 6
    Dernier message: 20/06/2005, 10h35
  4. Réponses: 10
    Dernier message: 19/02/2004, 12h58
  5. Variable globale / Propriété des threads
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 03/10/2003, 10h49

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