Pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter, inscrivez-vous gratuitement !

 

Discussion: Attributs dans association [MCD]

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 16
    Points : 6
    Points
    6

    Par défaut Attributs dans association

    Bonjour,

    Je suis debutant en base données et souhaite avoir un peu d'aide pour mieux comprendre ce que je fais :/ ci dessous une première question d'une longue série je pense :b

    Voilà mon exemple:
    -Un test peut être fait sur 1 ou plusieurs composants
    -Ces composants se declinent en deux types. Chaque type possède des paramètres différents

    De plus:
    -deux tests différents peuvent tester le meme composant avec des PARAM différents

    Dans ce cas, puisque je ne veux pas dupliquer les composants (car se sont les memes avec des param différent), est-il correcte de mettre les valeurs des PARAM en attribut de l'association COMPOSE (puisque le PARAM depend à la fois du composant et du test?)

    merci par avance!
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 260
    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 : 6 260
    Points : 21 328
    Points
    21 328
    Billets dans le blog
    16

    Par défaut

    Bonsoir super_balou,


    Considérez l’exemple suivant :

    TEST {idTest    ...}            COMPOSANT {idComposant    ... }
          Tst1                                 Comp1
                                               Comp2
    
    COMPOSE {idTest    idComposant    valParamCp1    valParamCp2}
             Ts1       Comp1          10             20
             Ts1       Comp2          10             20
    
    Manifestement pour la 1re ligne l’attribut valParamCp2 n’a pas lieu d’être, puisque cette ligne est relative au seul composant Comp1. Même observation pour la 2e ligne, où l’attribut valParamCp1 n’a pas lieu d’être. (J’ai valorisé valParamCp2 à 20, mais on pourrait valoriser à 0, ou marquer NULL, etc.)

    Par voie de conséquence, l’association COMPOSE doit être remplacée par deux associations COMPOSE1 et COMPOSE2, en relation respectivement avec TYPE_1 et TYPE_2.

    Par ailleurs, du fait de l’héritage, les spécialisations TYPE_1 et TYPE_2 doivent être débarrassées des attributs id_cp1 et id_cp2 : c’es l’AGL qui se chargera de les faire hériter dans les tables du MLD issu du MCD.
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)

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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 16
    Points : 6
    Points
    6

    Par défaut

    Merci pour votre réponse fsmrel

    Du coup, si je comprends bien je devrais obtenir ce MCD corrigé?

    le modèle relationel serait donc:

    TEST (idTest,nom_test)

    liaison_Compose_1 (id_liaison_1,param_1,#id_test,#id_composant)
    liaison_Compose_2 (id_liaison_2,param_2,#id_test,#id_composant)

    composant (idComposant,nomComposant)

    type1(#idComposant,param_cp1)
    type2(#idComposant,param_cp2)


    Est ce que cette solution vous semble optimale? ou existe t-il d'autres possibilités (plus élégant et efficace?) ?
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 260
    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 : 6 260
    Points : 21 328
    Points
    21 328
    Billets dans le blog
    16

    Par défaut

    Bonsoir super_balou,


    Il y a un gros progrès.

    Néanmoins, plutôt que sur COMPOSANT, il serait préférable de connecter COMPOSE_1 sur TYPE_1 et COMPOSE_2 sur TYPE_2, entités-types qui cette fois-ci joueraient leur véritable rôle.
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)

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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 16
    Points : 6
    Points
    6

    Par défaut

    Cela me semble effectivement plus cohérent =)

    J'obtiens donc le MCD ci-dessous. Ma dernière question sur ce topic (je l'espère) est:

    Lors du passage au MLD (Puisque je n'ai plus d'id dans mes entités "type_1" & "type_2") je peux utiliser la clé étrangère venant de "Composant" (je souhaite garder cet héritage car je vais connecter d'autres entités à "composant")?

    Autrement dit, ma jonction reste:
    liaison_Compose_1 (id_liaison_1,param_1,#id_test,#id_composant)
    Images attachées Images attachées  

  6. #6
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    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 : 15 802
    Points : 31 246
    Points
    31 246
    Billets dans le blog
    4

    Par défaut

    Un détail sur votre dernier MCD : vous imposez qu'un test soit composé d'au moins un type 1. Est-ce vraiment ça ou faudrait-il passer le cardinalités à (0,n - 0,n) comme pour l'association compose_2 ?

    Lors du passage au MLD (Puisque je n'ai plus d'id dans mes entités "type_1" & "type_2") je peux utiliser la clé étrangère venant de "Composant"
    Oui, c'est bien comme ça que ça se passe :
    type_1 (id_composant, param_cp1)
    type_2 (id_composant, param_cp2)

    Autrement dit, ma jonction reste:
    liaison_Compose_1 (id_liaison_1,param_1,#id_test,#id_composant)
    Non. Une table associative n'a pas d'identifiant propre. Sa clé primaire est composée des clés étrangères référençant les tables entrant en jeu dans l'association :
    compose_1 (id_test, id_composant, value_param_cp1)
    compose_2 (id_test, id_composant, value_param_cp_2)

    Voir mon billet de blog sur les tables associatives.
    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 !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 16
    Points : 6
    Points
    6

    Par défaut

    Merci à vous deux!

    Je passe le topic à résolu du coup =)

    PS:oui il s'agit d'une erreur sur la cardinalité :/

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

Discussions similaires

  1. [MCD] Attributs dans les associations
    Par jedebute_et... dans le forum Schéma
    Réponses: 12
    Dernier message: 19/04/2011, 22h14
  2. [MCD] Association Porteuse d'attribut dans MCD depuis MLD
    Par Sonny78 dans le forum Schéma
    Réponses: 2
    Dernier message: 03/03/2009, 15h45
  3. [MCD] Quand mettre un attribut dans une association ?
    Par Jimalexp dans le forum Schéma
    Réponses: 1
    Dernier message: 17/02/2009, 11h41
  4. Affecter un attribut dans un fichier XML ou XSL
    Par LLaurent dans le forum XMLRAD
    Réponses: 7
    Dernier message: 05/06/2003, 14h04
  5. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 15h22

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