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 :

Viabilité d'une relation de cardinalités 1,1 - 1,1 [MCD]


Sujet :

Schéma

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Par défaut Viabilité d'une relation de cardinalités 1,1 - 1,1
    Alors que je m'exprimais sur une relation 1,1 --- 1,1 d'un MCD de Idriss, CinePhil a éveillé ma curiosité.


    Citation de CinePhil :
    Sur le plan de la modélisation, si on a ceci :
    A -1,1----Associer----1,1- B

    Ça veut dire qu'une des entités est un "multi-attribut" de l'autre. Un seul A déterminant un seul B et vice versa, les deux entités devraient être fusionnées.

    Mais sur le plan sémantique ça peut aussi être quelque peu incohérent de fusionner les deux entités, même si les règles de gestion imposent ces couples de cardinalités.

    "Un directeur dirige une seule agence et une agence n'a qu'un directeur."

    Directeur -1,1----Diriger----1,1- Agence

    Il n'est sémantiquement pas logique de fusionner l'agence et son directeur. Il sera plus logique, dans le MLD puis dans les tables, de mettre l'identifiant du directeur en clé étrangère dans l'agence.
    Pour ma part, cela ne me gène pas du tout de fusionner une agence et son directeur. Le nom d'un directeur me semble être un attribut d'une agence dans le cas exposé.

    Auriez-vous en tête un autre cas qui mettrait en évidence votre raisonnement svp ?
    Par ailleurs le mot "sémantiquement" me semble obscure. Voulez-vous par là évoquer le fond du problème plutôt que sa forme ?

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Re

    Personnellement, par rapport au MCD en question, je ne trouve pas logique de fusionner une entité facture et intervention (pareil pour un directeur et une agence) : il s'agit de deux choses bien distinctes même si d'un point de vue fonctionnel cela marcherai tout aussi bien. Après je n'ai pas dit que la fusion était interdite mais qu'elle n'était pas obligatoire (en gros chacun fait comme il préfère ou comme on lui impose) ...

    J'ai appris de mon côté que le fait d'avoir des cardinalités 1,1 (ou 0,1) de part et d'autre d'une association était possible, qu'il suffisait ensuite de mettre la clef étrangère dans une seule des deux tables par la suite et que généralement, on choisi de mettre cette clef étrangère du côté la table dont l'entité, qui lui correspond, a le plus d'association avec les autres (même si cela aussi n'est pas obligatoire, on peut tout aussi bien la mettre de l'autre côté, il s'agit encore là d'une question de logique) ...

    Citation Envoyé par MacFly58 Voir le message
    Pour ma part, cela ne me gène pas du tout de fusionner une agence et son directeur. Le nom d'un directeur me semble être un attribut d'une agence dans le cas exposé.
    Si tu n'as que le nom ok mais si tu doit avoir toutes les propriétés d'une agence (id, nom, adresse, tel, etc) et toutes celles du directeur (matricule, nom, prenom, adresse, tel, email, date de naissance, etc) c'est autre chose ...

    Citation Envoyé par MacFly58 Voir le message
    Auriez-vous en tête un autre cas qui mettrait en évidence votre raisonnement svp ?
    Par ailleurs le mot "sémantiquement" me semble obscure. Voulez-vous par là évoquer le fond du problème plutôt que sa forme ?
    Le fond du problème c'est que même si ça peut paraître plus optimisé de faire une chose dans un projet quelconque il faut que cela reste cohérent pour une plus grande compréhension de tous. Par exemple, il n'est pas cohérent d'avoir une seule et même table pour un directeur et une agence. Si une base de donnée comporte une nombre important de tables (plusieurs centaines par exemple) comme il arrive souvent en entreprise, il devient difficile pour un des mainteneurs (on n'est pas toujours tout seul à bosser) de retrouver certaines données si elles sont mal organisée => On perd plus de temps qu'on en gagne.

    Pour rester cohérent et s'y retrouver même le simple nom des tables reste important et suit parfois un formalisme préconisé par l'entreprise en question, si on commence à fusionner des tables qui correspondent à des choses bien distinctes ...

    Cordialement,
    Idriss

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par MacFly58 Voir le message
    Pour ma part, cela ne me gène pas du tout de fusionner une agence et son directeur. Le nom d'un directeur me semble être un attribut d'une agence dans le cas exposé.
    Comme l'a très bien exprimé ok.Idriss, s'il n'y a que le nom, on le met en attribut de l'agence. S'il y a les informations complètes du directeur, on se retrouve clairement dans un cas de "multi-attribut", comme je l'avais appelé dans mon message.
    Ça veut dire qu'une des entités est un "multi-attribut" de l'autre.
    de plus, cette notion de Directeur peut être une entité fille qui hérite d'une entité Personne :
    Directeur -(1,1)----Etre----0,1- Personne
    |---------------1,1----Diriger----1,1- Agence

    Auriez-vous en tête un autre cas qui mettrait en évidence votre raisonnement svp ?
    On pourrait vouloir enregistrer des prototypes de véhicules à moteur avec le détail des caractéristiques du moteur.
    Vehicule -1,1----Avoir----1,1- Moteur

    Dans un club équestre, chaque cavalier pourrait se voir attribué un seul cheval :
    Cheval -1,1----Attribuer----1,1- Cavalier

    En cherchant un peu, on pourrait trouver sans doute moult autres exemples.

    Par ailleurs le mot "sémantiquement" me semble obscur. Voulez-vous par là évoquer le fond du problème plutôt que sa forme ?
    Sémantiquement : relatif à la sémantique, c'est à dire au sens. Il est clair qu'un directeur et une agence sont sémantiquement deux entités différentes, tout comme un véhicule et son moteur ou un cheval et son cavalier.

    C'est donc pour ça que dans mon message je commençais par aborder le côté théorique de la conception :
    A -1,1----Asssocier----1,1- B ==> Fusion de A et de B.
    Mais si A est sémantiquement très différent de B, il peu être préférable de bien séparer A et B malgré les cardinalités.

    Être confronté à ces cardinalités peut aussi conduire à se poser des questions sur la justesse des règles de gestion.
    Ne serait-il pas plus pertinent de voir le scénario suivant :
    1) Le groupe X souhaite lance le projet de créer une agence à Bordeaux.
    2) On crée l'agence dans la BDD.
    3) On nomme son directeur pour l'ouverture de l'agence.
    4) On enregistre M. Dupont en tant que directeur de l'agence.

    Dès lors, le MCD est plutôt le suivant :
    Agence -0,1----Avoir----1,1- Directeur

    Et cette fois la clé étrangère se trouve dans la table des directeurs et pas dans celle des agences.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Par défaut
    C'est limpide, y compris pour les relations 0,1-1,1

    Merci

  5. #5
    Membre confirmé Avatar de hmimoud
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Bonjour,

    Désolé de revenir à ce sujet qui a déjà été marque résolu, mais en cherchant sur le forum une solution à mon problème d'une relation 1,1 --- 1,1 d'un MCD, j'ai trouvé cette discussion qui m'a levée une autre ambiguïté.

    Dans l'exemple du directeur et de l'agence, si on adopte la solution de mettre par exemple dans le MLD l'identifiant du directeur en clé étrangère dans l'agence, il y aura un problème puisque cela sera traduit comme si le directeur dirige plusieurs agences, et du coup au niveau pratique, lorsque qu'un utilisateur tentera d’insérer plusieurs agences pour un même directeur cela sera accepté faute d'absence de contrainte pour gérer cela, ce qui n’obéit pas aux règles de gestion désirées.

    Je souhaite savoir si la suggestion suivante que j'ai jugé sine qua non pour résoudre ce problème, l'est vraiment :

    En plus de mettre l'identifiant du directeur en clé étrangère dans l'agence, la clé étrangère doit être défini comme unique !

    Merci

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Bonjour Hmimoud,

    Citation Envoyé par Hmimoud
    En plus de mettre l'identifiant du directeur en clé étrangère dans l'agence, la clé étrangère doit être défini comme unique !
    ==> pour moi, c'est OK (en fait, créer un index unique sur cette clé étrangère). De mon point de vue, cela équivaut à une contrainte "merisienne".

    Reste à savoir si ça passera au "rasoir" de Fsmrel...

  7. #7
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Si un directeur dirige une seule agence et qu'une agence est dirigée par un directeur, alors dans le MLD, la colonne directeur est une clef alternative de la table agence et se doit donc d'avoir sa contrainte d'unicité (au moyen d'un index unique en sql server par exemple).

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

Discussions similaires

  1. Déteminer la cardinalité d'une relation.
    Par marot_r dans le forum Contribuez
    Réponses: 0
    Dernier message: 01/06/2015, 14h19
  2. [MCD] Cardinalité d'une relation n-aire ?
    Par elechi.ahmed dans le forum Schéma
    Réponses: 13
    Dernier message: 31/08/2008, 19h31
  3. les cardinalités minimum d'une relation reflexive
    Par aziz jim dans le forum Schéma
    Réponses: 1
    Dernier message: 26/12/2007, 18h03
  4. Exploitation d'une table possédant une relation recursive
    Par VincentR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/08/2004, 11h07
  5. [Mapping] Structure d'une relation
    Par k4eve dans le forum Hibernate
    Réponses: 6
    Dernier message: 27/04/2004, 11h19

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