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 :

Problème d'association réflexive, ou pas ? [MCD]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Homme Profil pro
    Services rédactionnels
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Services rédactionnels

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Problème d'association réflexive, ou pas ?
    Bonjour à tous,

    actuellement en stage dans une collectivité territoriale dans le cadre d'un BTS SIO, je dois trouver une solution pour que les bons de commande soient émis si le budget alloué à ce type dépense le permet.
    Mon (premier) problème concerne le MCD de la base que l'application exploitera. En effet, je dois mémoriser, pour chaque bon de commande émis -ou voulant l'être, le nom de l'agent qui l'édite mais aussi le nom de l'agent responsable du projet.
    Je pensais au début à une association réflexive assez simple (0,n/ 0,1), comme on en trouve dans beaucoup de sujets, jusqu'à ce que j'apprenne que cette hiérarchisation n'était valable que pour une action. Un agent sous un autre agent dans un projet peut être simultanément sur ce même autre agent dans un autre projet.
    Je n'arrive pas à concevoir si c'est un problème ou pas de laisser l'association réflexive sur l'entité 'Agents' dans ce cas mais n'ai pas encore trouvé d'autres solutions.

    Voilà une partie du MCD, il manque cependant l'association réflexive sur l'entité 'Agents'
    Nom : MCD1.JPG
Affichages : 638
Taille : 24,3 Ko

    Avez-vous un avis là-dessus ?
    Merci
    Poussain

  2. #2
    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 La bête à deux dos alternative...
    Bonsoir Poussain,



    Citation Envoyé par LePoussain Voir le message
    Un agent sous un autre agent dans un projet peut être simultanément sur ce même autre agent.
    La bête à deux dos alternative ? Ça est scabreux cette histoire, une fois, savez-vous ?



    Bref, pourquoi pas un MCD de ce genre ?




    Au départ, AFFECTATION est une association, entre AGENT et PROJET, mais comme on ne peut associer l’association EDTION_COMMANDE à cette association, J’ai transformé AFFECTATION en entité-type, avec identification relative à AGENT et PROJET.


    Version équivalente avec DB-MAIN (gratuit), qui a sa façon à lui de permettre l’identification relative :

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Services rédactionnels
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Services rédactionnels

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Merci
    Merci beaucoup pour votre réponse que je vais éplucher avec le plus grand intérêt, encore une fois !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Services rédactionnels
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Services rédactionnels

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Et l'héritage ?
    Il vaut mieux penser à l'héritage avant qu'il ne soit trop tard...
    Je crois que ce n'est pas très judicieux d'avoir des tables vides, mais pourquoi pas ?
    Nom : mcd1bis.JPG
Affichages : 457
Taille : 24,6 Ko

    Enfin plutôt un héritage avec totalité d'ailleurs...

  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 Contradiction...
    Bonsoir Poussain,



    Citation Envoyé par LePoussain Voir le message
    Il vaut mieux penser à l'héritage avant qu'il ne soit trop tard...
    Selon votre nouveau MCD, un agent est invariablement soit éditeur, soit responsable, indépendamment des projets, ce qui contredit ce que vous aviez précédemment écrit :

    Citation Envoyé par LePoussain Voir le message
    Un agent sous un autre agent dans un projet peut être simultanément sur ce même autre agent.

    Si le besoin est réel de modéliser la hiérarchie de l’entreprise, alors il faut le faire, mais cette hiérarchie est administrative, elle est indépendante des affectations des agents aux projets. Comme disait le bon vieil Ockham : « Pluralitas non est ponenda sine necessitate », autrement dit, on ne modélise que ce qui doit l’être.


    En passant : dans votre MCD, une patte d’association entre COMMANDE et ARTICLE est porteuse d’une cardinalité 1,1 : chaque commande ne concernerait donc qu’un seul article ?
    (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 à l'essai
    Homme Profil pro
    Services rédactionnels
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Services rédactionnels

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 11
    Points
    11
    Par défaut De nouvelles contraintes...
    Bonjour,

    de nouveaux éléments sont venus perturber le modèle élaboré la semaine dernière. Je me vois donc contraint de dé-résoudre cette discussion...

    En effet, j'ai appris qu'un budget primitif (BP) est en fait alloué à une action pour chaque article. Ce budget peut être nul.
    Du coup, il ne me semble pas nécessaire de mémoriser le BP par article -comme je l'avais fait dans mes premiers MCD, puisqu'on peut le retrouver en additionnant simplement le BP par action par article.
    De même, on peut aussi retrouver par le calcul le montant total alloué à une action en additionnant tous les budgets primitifs pour cette action.

    Un bon de commande, édité par un seul agent, ne va concerner qu'un article et qu'une action.

    Voilà le MCD que j'ai imaginé avec ces nouvelles règles de gestion :
    Nom : MCDnew.JPG
Affichages : 606
Taille : 41,4 Ko

    Le contrôleur ne me signale pas d'erreur syntaxique(ni information ni alerte d'ailleurs) mais c'est plus au niveau sémantique que je me fais du souci. Ce MCD respecte-t-il les règles énoncées plus haut, notamment au niveau des cardinalités autour de l'association ALLOCATION? Vais-je bien pouvoir allouer un BP à tous les articles pour toutes les actions de cette façon ?

    Merci d'avoir pris le temps de me lire et peut-être de me donner quelques pistes de réflexion !


    PS : Quand je parle d'articles, il s'agit d'articles comptables, d'où la cardinalité 1,1 initiale entre COMMANDES ET ARTICLES. Les travaux ou fournitures commandés ne sont pas à mémoriser pour le moment...

  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 A priori...
    Bonsoir Poussain,


    Citation Envoyé par LePoussain Voir le message
    j'ai appris qu'un budget primitif (BP) est en fait alloué à une action pour chaque article. Ce budget peut être nul.
    Du coup, il ne me semble pas nécessaire de mémoriser le BP par article -comme je l'avais fait dans mes premiers MCD, puisqu'on peut le retrouver en additionnant simplement le BP par action par article.
    De même, on peut aussi retrouver par le calcul le montant total alloué à une action en additionnant tous les budgets primitifs pour cette action.
    L’association ALLOCATION est justifiée et l’attribut budgetPrimitif de l‘entité-type ARTICLE devient de facto redondant puisqu’égal à la somme des budgets primitifs établis par allocation.



    Citation Envoyé par LePoussain Voir le message
    Ce MCD respecte-t-il les règles énoncées plus haut, notamment au niveau des cardinalités autour de l'association ALLOCATION? Vais-je bien pouvoir allouer un BP à tous les articles pour toutes les actions de cette façon ?
    Si par «Ce budget peut être nul » est à interpréter par absence de budget pour une paire (action, article), le MCD est a priori correct : en effet, si la commande CD1 fait référence à l’action AC1 et à l’article AR1, et que la paire <AC1, AR1> est absente de ALLOCATION, littéralement cela signifie qu’en l’occurrence il y a absence d’allocation.

    Attention : Allouer un budget à chaque article se traduit dans le MCD par une cardinalité 1,N portée par la patte connectant ARTICLE et ALLOCATION, alors que la cardinalité que vous prévoyez est 0,N. Exemple : l’article AR1 fait l’objet d’un budget égal à 1500 pour l’action AC5 (peut-être elle seule).

    Revenons sur le triplet <CD1, AC1, AR1>. Comme on l’a vu, la paire <AC1, AR1> étant absente de ALLOCATION, cela signifie qu’en l’occurrence il n’y a pas d’allocation. Mais si cette absence d’allocation est la conséquence de l’oubli au niveau de la production de cette paire ? (Notez que j’ai écrit « a priori correct »). Il serait sans doute prudent de dire que chaque paire (action, article) fait l’objet d’une allocation, quitte à ce que celle-ci soit égale à zéro. Dans ces conditions, on blinde le système, en utilisant une contrainte d’inclusion traduisant l’énoncé : si la paire <AC1, AR1> appartient à une occurrence de COMMANDE, alors cette paire doit d’abord appartenir à une occurrence de ALLOCATION. AU niveau MLD, cela se traduira par une clé étrangère {idAction, codeArticle} de la table COMMANDE, référençant la clé primaire {idAction, codeArticle} de la table ALLOCATION (et dans ces conditions, les clés étrangères de la table COMMANDE, référençant les clés primaires des tables ACTION et ARTICLE sont rendues redondantes, donc inutiles, donc à passer au rasoir d’Ockham).
    (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 à l'essai
    Homme Profil pro
    Services rédactionnels
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Services rédactionnels

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Encore une fois, merci !
    Ce sont encore des pistes de réflexion très intéressantes que vous m'offrez là!
    Il n'y a plus qu'à voir si ça peut faire avec les nouveaux éléments du cahier des charges qui évolue tous les jours...

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

Discussions similaires

  1. [MCD] Association réflexive ou pas ?
    Par jecomprendsrien dans le forum Schéma
    Réponses: 19
    Dernier message: 08/05/2012, 16h52
  2. [MCD] Héritage restreint d'association réflexive sur mère
    Par n00bi dans le forum Schéma
    Réponses: 5
    Dernier message: 19/04/2006, 13h00
  3. [ Problème ] .htaccess qui ne marche pas "partout"
    Par nnet_mathieu dans le forum Apache
    Réponses: 8
    Dernier message: 22/11/2005, 19h34
  4. problème que je n'arrive pas à résoudre de façon récursive
    Par miam dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/07/2004, 11h21
  5. [merise]traduire en sql une association réflexive
    Par omega dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/03/2004, 18h10

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