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] Problème d'association / cardinalités


Sujet :

Schéma

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut [MCD] Problème d'association / cardinalités
    Bonjour, je suis débutant et j'ai un problème pour faire un MCD, notamment à un certain niveau :

    Dans le cadre d'un championnat de football, on dit que un joueur appartient à un club (jusque là ça peut aller), mais ce joueur contient des caractéristiques concernant le contrat qu'il a avec son club (date d'entrée dans le club, durée du contrat, salaire brut mensuel etc..), j'avais donc pensé à les placer dans l'association "Posséder" entre CLUB et JOUEUR, puisque ces caractéristiques d'un contrat dépendent à la fois de ces deux entités. Mais là où se trouve le problème ; c'est au niveau des cardinalités, en effet, un club possède 1,N JOUEUR, et un joueur appartient à 1,1 CLUB. La cardinalité 1,1 est donc fausse (puisque l'association contient des caractéristiques)..

    D'où ma question, comment puis-je m'y prendre ?

    Merci beaucoup.

  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
    Dans sa carrière, un joueur passera probablement plusieurs contrats avec plusieurs clubs. Tu as donc en fait une relation 0,n - 0,n entre Clubs et Joueurs.

    Voici un schéma vite fait avec DBDesigner :
    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
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    Merci, mais comme on me demande de faire un MCD (et non pas un MCDi), je ne peux utiliser d'identifiants relatifs, donc je suppose que je dois faire une association "contracter" (ça se dit comme ça ?) entre le club et le joueur, possédant les caractéristiques date_entrée, duree_contrat, salaire_brut, etc.


    Nan ?

    P.S : derniere question, dans un MCD, peut-on créer des entités "vides", sans caractéristiques ?

    Merci.

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par touronster
    La cardinalité 1,1 est donc fausse (puisque l'association contient des caractéristiques)
    Il est bon de séparer le passé du présent. Si un joueur a déjà fait partie d’au moins un autre club que son club actuel, vous devrez définir une association-type, appelons-la JoueurHistorique, porteuse des propriétés que vous mentionnez : date d’entrée dans le club, date de fin, salaire, etc.
    Concernant le présent : soit vous procédez de la même façon et l’association-type Posséder (merci de trouver un autre nom...) est porteuse des propriétés qui viennent d’être mentionnées (quel théorème prouve que ça n’est pas possible ?), soit vous faites figurer ces propriétés dans l’entité-type Joueur, parce que le chef ou l’habitude en ont décidé ainsi (en vertu de quel théorème ?) Quoi qu’il en soit, ce débat vieux comme Merise relève de la détermination du sexe des anges : quand vous dériverez votre MCD en MLD, il n’y aura plus que des tables et les propriétés en question seront absorbées par la table Joueur. Choisissez ce qui vous convient.
    (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.

  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 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par touronster
    je suppose que je dois faire une association "contracter" (ça se dit comme ça ?) entre le club et le joueur, possédant les caractéristiques date_entrée, duree_contrat, salaire_brut, etc.
    Cinephil vous a proposé un MLD (voire un MPD) qui par rétroconception donne lieur à un MCD tout à fait valable, dans la mesure où aucune propriété n’est facultative. L’association-type Contracter sera porteuse des données concernant simultanément joueurs et clubs.

    Citation Envoyé par touronster
    derniere question, dans un MCD, peut-on créer des entités "vides", sans caractéristiques ?
    Pourquoi cette question ? Qu'est-ce qui vous tracasse ?
    (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
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    Avec mes cours, j'avais appris que si une des pattes etait simple, alors l'association ne pouvait être porteuse...

  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 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par touronster
    Avec mes cours, j'avais appris que si une des pattes etait simple, alors l'association ne pouvait être porteuse...
    C’est l’usage : de fait, si on réfléchit à sa signification profonde, pourquoi un lien serait-il porteur d’information ? Mais alors un lien de type plusieurs à plusieurs n'a pas à faire exception. Personnellement (et je n’engage que moi et Ted Codd), une association-type peut être en fait associative et donc porteuse de propriétés, comme toute entité-type. Un peu de poudre de perlimpinpin et l'association-type Contracter devient entité-type associative tout à fait respectable, que par convenance on rebaptise en Contrat...
    Mais on est sorti de Merise, pour entrer dans RM/T et ceci est une autre histoire.
    Bref, pour ne pas vous faire taper sur les doigts, faites ce que dit le chef, le prof, soyez conceptuellement correct, mais si vous êtes libre, suivez votre inclination.
    (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
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    Merci.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    En réalité, j'ai un auter problème dans mon MCD. On me dit dans l'énoncé :

    Les clubs établissent une liste de 15 à 18 joueurs (numéro maillot, nom, numéro licence) constituant le groupe pour la rencontre ; le nom de l'entraineur est également précisé.
    J'ai un doute sur la façon dont j'ai géré cela.

    En effet, les caractéristiques numéro maillot, nom et numéro licence font déjà partie des caractéristiques de l'entité JOUEUR, donc je me suis dit que je ne dois pas les rajouter en plus dans l'entité GROUPE JOUEURS (pour éviter la redondance). Ce que j'ai fait, c'est mettre une association "Faire partie de" entre JOUEUR et GROUPE JOUEURS, GROUPE JOUEUR contient alors une seule caractéristique appelée "nom_entraineur", je me demandais si mon cela était juste.

    Pour être plus clair, voici mon MCD provisoire :


    Meci beaucoup, ça m'aiderait vraiment.

  10. #10
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par touronster
    Ce que j'ai fait, c'est mettre une association "Faire partie de" entre JOUEUR et GROUPE JOUEURS, GROUPE JOUEUR contient alors une seule caractéristique appelée "nom_entraineur", je me demandais si mon cela était juste.
    Tout d'abord, merci d’avoir fourni un MCD provisoire.

    Maintenant, le fait d’avoir établi le nom de l’entraîneur comme propriété de GROUPE_JOUEURS fait que, lorsque l’on devra faire référence à ce nom, il faudra systématiquement en passer par GROUPE_JOUEURS (et pas par une autre entité-type, en vertu du sacro-saint principe "one fact, one place"). Ainsi, ou bien le prénom de l’entraîneur, sa date de naissance, etc., toutes ces propriétés qu’il a en propre figureront elles aussi dans GROUPE_JOUEURS ou bien elles figureront à part, dans une entité-type PERSONNE (ou ENTRAINEUR, ou ce que vous voulez) sémantiquement plus juste, mais alors on dispersera les propriétés de l’entraîneur : manifestement, ce rapprochement ad-hoc et douteux du groupe de joueurs et du nom de l’entraîneur est aussi fondé que le mariage de la carpe et du lapin.

    A mon sens, donc, exit le nom de l’entraîneur de l’entité-type GROUPE_JOUEURS. Il doit retrouver dans l’entité-type adéquate, le prénom de l’entraîneur, sa date naissance, etc. Par ailleurs, j’ai du mal à imaginer le rôle particulier que peut jouer GROUPE_JOUEURS : l’association-type PARTICIPER suffit pour répondre à des questions du genre "Quelle est la liste des joueurs ayant participé à la rencontre du 9 février 2008, à 21h, au Stade de France ?". Pour répondre à la question : "Qui était l’entraîneur des jeunes gens ayant participé à cette rencontre ?" Il aura suffi d’avoir tiré un lien entre les entités-types RENCONTRE et ENTRAINEUR (ou PERSONNE, etc.)
    Reste à s’assurer que l’on est capable de distinguer les équipes des joueurs ayant participé à la rencontre évoquée ci-dessus, en effet, pour le moment on amalgame peut-être partenaires et adversaires (à vérifier).

    Votre MCD va certainement susciter des questions et observations de la part des forumeurs. Tant mieux pour vous ! (Attention aux penalties dont ils vont vous accabler !)

    Pour ma part, je vous demande instamment de ne pas identifier les entités-types par leurs propriétés naturelles, mais par une propriété artificielle, sans signification, invariante (pour éviter l’instabilité de la base de données à venir) et permettant de distinguer des jumeaux parfaits (selon votre MCD, le Stade de France n’a pu accueillir qu’une seule rencontre durant toute son existence, un seul groupe de joueurs peut avoir un entraîneur nommé Martin, etc.)

    Pour éviter (comme dans le cas de l’entraîneur) un éparpillement des propriétés des intervenants, remettez ensemble le nom et l’âge du capitaine (on a deux fois le nom du capitaine, puisqu'il est aussi un joueur...)
    (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.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    Merci pour votre réponse, concernant les identifiants, je sais qu'ils sont faux, mais le logiciel utilisé (AnalyseSI) souligne toujours la première caractéristique de l'entité (même si celui-ci n'est pas identifiant).

    Concernant le GROUPE JOUEUR, en réalité, ce groupe est temporaire (établi avant la rencontre), il est constitué de plusieurs joueurs pouvant être retirés de la liste en cas de problème suite à la vérification de leur licence respective.

    Concernant ce groupe, voici ce qui est dit :
    "La veille de chaque match, les clubs établissent une liste de 15 à 18 joueurs (numéro maillot, nom, numéro licence) constituant le groupe pour la rencontre ; le nom de l'entraineur est également précisé. "
    Ensuite il est dit que certains joueurs peuvent être retirés de la liste suite à des problèmes avec leurs licences.

    Donc, comment gérer ce GROUPE JOUEUR et y préciser le nom de l'entraineur pour chaque GROUPE JOUEUR ?

    Encore merci.

  12. #12
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    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 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Pour traiter des joueurs prévus d’une part et des joueurs retenus d’autre part, on peut mettre en oeuvre un booléen Participation précisant si un joueur prévu a participé ou non à une rencontre.

    Par ailleurs, pour une équipe et une rencontre données, on a un groupe unique prévu de joueurs et pour ce groupe on a un seul entraîneur, donc pour une équipe et une rencontre on a un entraîneur unique. Cet entraîneur est déterminé par l’association-type Prévoir Entraîneur (graphique à faire évoluer selon que l'on traite dans la modélisation seulement d'une équipe ou des deux équipes participant à la rencontre).

    (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.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    Merci pour votre aide ! Je crois que je me "collais" trop à l'énoncé ..

    J'ai mis en pièce jointe ce que j'ai fait au final (surement pas encore parfait)..
    Si vous avez des remarques / conseils..

    Merci, ça m'a bien aidé je pense.
    Images attachées Images attachées  

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

Discussions similaires

  1. problème d'association de macro a un bouton de ma commandbar
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/07/2007, 23h49
  2. [MCD] Contrainte d'association
    Par dorian53 dans le forum Schéma
    Réponses: 2
    Dernier message: 21/04/2007, 01h44
  3. [MCD]Problème de conception du modèle de données
    Par juju33 dans le forum Modélisation
    Réponses: 7
    Dernier message: 24/03/2007, 20h13
  4. Réponses: 1
    Dernier message: 09/05/2006, 15h02
  5. [CONCEPTION MCD] Problème avec les clés composées
    Par fabriceMerc dans le forum Schéma
    Réponses: 3
    Dernier message: 14/02/2005, 09h43

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