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 :

Aide sur la modélisation


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut Aide sur la modélisation
    Bonjour

    avec plusieurs amis nous travaillons sur un projet de BDD pour un service hospitalier dans cadre de notre projet de fin d'année
    nous souhaitons modéliser cela avec un formalisme UML ou merise. Travaillant sur MAC j'ai trouvé le logiciel analyse SI.
    nous allons commencé par établir un MCD afin de bien déterminer toute nos entités ainsi que leur association. puis nous établirons le MLD avec un logiciel sur MAC (??) pour aboutir enfin au MPD (généré automatiquement).

    J'ai testé SQL workbench, analyse Si et visual paradigm.... après 3 jours de lecture le seul que j'ai trouvé facile à mettre en oeuvre est visual paradigm.

    je vous joins mon shéma afin de voir si il peut être améliorer car c'est mon premier MCD.

    pour en revenir à notre projet, il s'agit d'un logiciel permettant aux services ambulatoires de réserver des salles d'intervention en fonction du quota qui leur est affecté. ci-dessous le besoin à formaliser:
    Les salles de Chirurgie Ambulatoire sont disponibles en première intention à la journée. Elles sont dédiées en première intention à une activité. Chaque activité a donc un cota de salles libres par journée et par semaine (ex : lundi : 5 salles, mercredi : 4 salles et jeudi : 5 salles pour l’activité Odontologie).
    Les secrétaires des services demandeurs puisent dans ce cota et peuvent visualiser leurs disponibilités à partir de l’application en fonction de leur activité.Lors de la saisie d’une intervention, l’application propose un calendrier de l’ensemble des dates disponibles pour le service -> Sélection de la date.L’application propose la sélection du nom du chirurgien qui va effectuer l’intervention. Chaque chirurgien est relié à une Unité Fonctionnelle (Service) -> Sélection du nom du chirurgien.L’application propose la sélection du type d’intervention. Chaque activité possède sa liste de types d’intervention -> Sélection du type d’intervention.Information complémentaire : type d’anesthésie (locale ou générale) + zone de commentaire en saisie libre.L’utilisateur doit ensuite saisir l’identité du patient grâce à un système de recherche dans la base patient de l’application sur saisie des noms et prénoms (partiels ou complets) du patient.L’utilisateur doit ensuite saisir l’identité du médecin correspondant grâce à un système de recherche dans la base médecin correspondants (médecin de ville) de l’application sur saisie des noms et prénoms (partiels ou complets) du médecin.Une fois la planification de l’intervention effectuée, aucune modification ne peut être apportée par le secrétariat du service demandeur. Une demande doit être faite par téléphone ou mail au service de Chirurgie Ambulatoire.
    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
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir Arguitxu,


    Je crains que vous n’ayez pas bien compris ce qu’est une association (ou relation)...
    Prenons par exemple le cas de l’association APPARTENIR ci-dessous :




    Ce que vous avez modélisé tient de la partie de bridge, de belote ou de tarot, bref ça se lit sous forme de prédicat :

    La personne x, le médecin y, le patient z et le chirurgien t se rencontrent dans la relation APPARTENIR.
    (Sous-entendu pour une belote ou autre chose...)

    Si vous voulez modéliser le fait qu’une personne ayant tel nom et tel prénom est un médecin un patient ou un chirurgien (ce qui, reconnaissez-le, n’a strictement rien à voir avec votre proposition), alors il faut en passer par la spécialisation :

    Sous forme de diagramme de classes :



    Sous forme de MCD (exemple avec PowerAMC) :




    Notez que le nom d’une classe ou d’un type d’entité est au singulier : on écrit PERSONNE et non pas PERSONNES, car là encore la structure des types d’objets correspond à un prédicat (valeur de vérité vrai ou faux) :
    La personne identifiée par PersonneId a pour nom PersonneNom, pour prénom PersonnePrenom, pour téléphone PersonneTelephone.

    Cas des associations entre les services, les chirurgiens et les utilisateurs :

    Comme ci-dessus et si on vous suit, APPARTIENT est à interpréter comme une rencontre entre un service, un chirurgien et un utilisateur, autrement dit un chirurgien est littéralement en relation avec des utilisateurs et réciproquement :



    Mais manifestement ce que vous voulez signifier est différent, à savoir qu’un chirurgien est attaché à un service sans que les utilisateurs y soient pour quelque chose, et qu'un utilisateur fasse partie d'un service sans que cela concerne les chirurgiens :

    DC :




    MCD




    Questions :

    Dans la formalisation du besoin il est fait mention d’activités (exemple : odontologie). On ne retrouve pas ce concept dans votre MCD. En revanche vous y faites figurer un type d’entité SPECIALITE : activité et spécialité sont-ils des termes synonymes ? Y a-t-il eu un léger relâchement dans la rigueur ?

    Qu’est-ce qu’un type d’intervention ? Merci de donner des exemples. Quoi qu’il en soit, il est écrit :
    Chaque activité possède sa liste de types d’interventions.
    Mais l’association correspondante est absente du MCD qui doit être complété en conséquence.

    Renommez INTERVENTION en TYPE_INTERVENTION, car une intervention est une action, il y a donc des risques de confusion entre l'acte et son type (au moins de ma part).


    Remarques :

    Si on vous suit, le type d’entité UTILISATEUR a pour prédicat :

    L’utilisateur USR_ID a pour 1er type USR_TYPE_1, pour 2e type USR_TYPE_2, pour 3e type USR_TYPE_3 et pour 4e type USR_TYPE_4.

    C'est-à-dire que les 4 types sont obligatoires pour chaque utilisateur.... Si vous voulez dire qu’un utilisateur est seulement d’un type donné et non pas des 4 à la fois, il faut modéliser un type d’entité TYPE_UTILISATEUR et établir une association avec UTILISATEUR.

    Cette remarque vaut pour les autres énumérations (INTERVENTION, DISPONIBILITE, SPECIALITE).

    Quand on modélise au niveau conceptuel, une propriété ne peut pas figurer deux fois, mais pourtant c’est de que vous faites avec le chirurgien, le patient, la salle, etc. Exemple : le chirurgien figure à la fois dans les types d’entités CHIRURGIEN et RESERVATION, autrement dit l’attribut PRS_ID_CHIRURGIEN doit dégager.

    Votre association QUOTA est une rencontre à cinq types d’intervenants qui se lit à peu près comme ceci :

    Pour l’intervention x prévue en salle y selon la disponibilité z à la date t pour la réservation u, le quota est v.

    Je vous laisse le soin de corriger le tir car, si on se réfère à l’énoncé du besoin, un quota est déterminé seulement en fonction d’un type d’activité et d’un jour dans une semaine.

    En passant, qu’est-ce qu’une 1re intention ? Donc par contraste, une 2e, une 3e, une nième intention ?


    Bref, il y a du travail pour mettre votre MCD en adéquation avec l’énoncé du problème...

    Je vous conseille la lecture de l’ouvrage Michel Diviné, Parlez-vous Merise (c’est du Merise 1re génération, par exemple la généralisation/spécialisation n’est pas évoquée, mais cet ouvrage vous sera néanmoins fort utile pour réaliser vos MCD).

    Je sens poindre comme un léger désappointement au sein de l'équipe, mais les choses sont souvent ainsi à l'occasion des premiers MCD. Courage !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    FSmrel

    Bonjour, je vous remercie beaucoup de m'avoir accordé un peu de votre temps, les corrections que vous me proposer sont très pertinentes et source de réflexion pour mon premier MCD. Avant tout, j'ai rencontré de nombreux problèmes pour exprimer mes contraintes et notamment une relation de généralisation avec l'utilisation de ce logiciel. Hier, j'ai découvert un nouveau logiciel beaucoup plus facile d'utilisation et répondant mieux à mon besoin. j'ai donc tout repris de 0. C'est dommage que je n'ai pas vu votre message avant cela m'aurait éviter les nombreuses heures de lecture sur Merise et les bases de données. Enfin, je pense maintenant mieux comprendre le sujet et avec l'aide des internautes comme vous, je pense encore m'amélioré d'autant que le sujet me passionne.

    Que pensez vous de ce nouveau shéma ?

    Je me suis permis de mettre mes réponses en gras.

    Mais manifestement ce que vous voulez signifier est différent, à savoir qu’un chirurgien est attaché à un service sans que les utilisateurs y soient pour quelque chose, et qu'un utilisateur fasse partie d'un service sans que cela concerne les chirurgiens :

    Questions :

    Dans la formalisation du besoin il est fait mention d’activités (exemple : odontologie). On ne retrouve pas ce concept dans votre MCD. En revanche vous y faites figurer un type d’entité SPECIALITE : activité et spécialité sont-ils des termes synonymes ? Y a-t-il eu un léger relâchement dans la rigueur ?

    J'ai modifié en conséquence le schéma

    Les places sont effectivement attribuées par spécialité et cette répartition est faite sur la semaine et toutes les semaines sont identiques ainsi que les mois. Elle apporte des modifications 1 à 2 fois par an si cela est nécessaire mais pas forcément pour toutes les spécialités.


    Qu’est-ce qu’un type d’intervention ? Merci de donner des exemples. Quoi qu’il en soit, il est écrit :
    Pour une spécialité Orthopédique vous aurez comme type d'intervention (Arthroscopie, chirurgie du poignet, chirurgie du cartilage etc..)

    Chaque activité possède sa liste de types d’interventions.
    Mais l’association correspondante est absente du MCD qui doit être complété en conséquence.

    Renommez INTERVENTION en TYPE_INTERVENTION, car une intervention est une action, il y a donc des risques de confusion entre l'acte et son type (au moins de ma part).

    J'ai modifié en conséquence

    Remarques :

    Si on vous suit, le type d’entité UTILISATEUR a pour prédicat :
    L’utilisateur USR_ID a pour 1er type USR_TYPE_1, pour 2e type USR_TYPE_2, pour 3e type USR_TYPE_3 et pour 4e type USR_TYPE_4.
    C'est-à-dire que les 4 types sont obligatoires pour chaque utilisateur.... Si vous voulez dire qu’un utilisateur est seulement d’un type donné et non pas des 4 à la fois, il faut modéliser un type d’entité TYPE_UTILISATEUR et établir une association avec UTILISATEUR.
    j'ai modifié, la table utilisateur doit permet d'affecter des droits sur l'application, ex: un service donné pourra plannifier des intervention, visualiser son planning alors qu'un autre pourra annuler, reserver et modifier le planning des autres services

    Cette remarque vaut pour les autres énumérations (INTERVENTION, DISPONIBILITE, SPECIALITE).

    Quand on modélise au niveau conceptuel, une propriété ne peut pas figurer deux fois, mais pourtant c’est de que vous faites avec le chirurgien, le patient, la salle, etc. Exemple : le chirurgien figure à la fois dans les types d’entités CHIRURGIEN et RESERVATION, autrement dit l’attribut PRS_ID_CHIRURGIEN doit dégager.

    Votre association QUOTA est une rencontre à cinq types d’intervenants qui se lit à peu près comme ceci :
    Pour l’intervention x prévue en salle y selon la disponibilité z à la date t pour la réservation u, le quota est v.
    Je vous laisse le soin de corriger le tir car, si on se réfère à l’énoncé du besoin, un quota est déterminé seulement en fonction d’un type d’activité et d’un jour dans une semaine.
    j'ai corrigé le concept, je pense que c'est maintenant plus clair

    En passant, qu’est-ce qu’une 1re intention ? Donc par contraste, une 2e, une 3e, une nième intention ?

    C'est a dire qu'une salle est réservé pour la journée, mais cela pourra etre modifié si c'est vraiment nécéssaire par le secretariat Ambulatoire qui aura pratiquement tous les droits dans l'application


    Bref, il y a du travail pour mettre votre MCD en adéquation avec l’énoncé du problème...

    Je vous conseille la lecture de l’ouvrage Michel Diviné, Parlez-vous Merise (c’est du Merise 1re génération, par exemple la généralisation/spécialisation n’est pas évoquée, mais cet ouvrage vous sera néanmoins fort utile pour réaliser vos MCD).

    Je sens poindre comme un léger désappointement au sein de l'équipe, mais les choses sont souvent ainsi à l'occasion des premiers MCD. Courage !
    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
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par arguitxu Voir le message
    Je me suis permis de mettre mes réponses en gras.
    Pas de problème, mais le mieux est de citer la partie du message que vous souhaitez commenter.
    Il suffit pour cela d’utiliser le bouton CITER associé au message :


    Puis de copier l’élément identifiant le message :



    De le faire suivre par le texte cité : « Aujourd’hui il fait beau ! »

    Et de clore par la balise qui va bien. Au final :



    (Voir aussi la liste des balises BB).


    Citation Envoyé par arguitxu Voir le message
    Chaque chirurgien est relié à une Unité Fonctionnelle (Service)
    Il faudrait apporter une correction à votre dernier MCD pour qu’il soit conforme à la règle ci-dessus :

    [CHIRURGIEN]----1,1----(FAIT PARTIE)----0,N----[SERVICE]

    Ou modifier la règle énoncée pour refléter le MCD...


    Vos cardinalités sont en général à l’inverse de ce qu’elles devraient être. Quand vous modélisez :

    [CHIRURGIEN]----1,1----(PRATIQUE)----0,N----[INTERVENTION]

    Le merisien bon teint lit ceci :

    — Un chirurgien pratique une et une seul intervention (c'est peu !) ;

    — A une intervention peuvent prendre part plusieurs chirurgiens (voire aucun ! Ça craint...)

    En remettant les cardinalités à l’endroit, on se convaincra facilement que le nom du chirurgien devra réintégrer l’entité-type CHIRURGIEN...

    Le nom du patient et celui du médecin devront réintégrer leur structure « naturelle ».

    Je rappelle ce que j’ai dit : dans un MCD, une propriété ne peut figurer qu’une fois. Ainsi on retrouve Code_uf un peu partout : cette propriété doit figurer dans l’en-tête de l’entité-type SERVICE et c’est tout.

    Je rappelle aussi que les noms des entités-types doivent être au singulier : SERVICES doit être remplacé par SERVICE.

    L’association PRESCRIT est une ternaire qui par construction permet des situations du genre : l’intervention du 17 avril 2013 pratiquée sur le patient Fernand a pu être prescrite par les médecins Albert, Bernard, Carole, etc. Je dis : « Ceci est suspicieux ! »

    En fait, le MCD doit être porteur d’une CIF (contrainte d’intégrité fonctionnelle) :



    Cette CIF est symbolisée par l’arc orienté (en rouge) et se lit ainsi :

    La prescription faite pour le patient P et pour la date D a été le fait d’un médecin et un seul, ce qui est encore symbolisé fonctionnellement ainsi :

    PATIENT X DATE -> MEDECIN


    Il y a pas mal d’autres choses à dire, on verra cela après rectification des cardinalités et nettoyage du MCD.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Bonsoir,
    Il faudrait apporter une correction à votre dernier MCD pour qu’il soit conforme à la règle ci-dessus :

    [CHIRURGIEN]----1,1----(FAIT PARTIE)----0,N----[SERVICE]
    Correction apportée - merci

    Citation Envoyé par fsmrel Voir le message
    Vos cardinalités sont en général à l’inverse de ce qu’elles devraient être. Quand vous modélisez :

    [CHIRURGIEN]----1,1----(PRATIQUE)----0,N----[INTERVENTION]

    Le merisien bon teint lit ceci :

    — Un chirurgien pratique une et une seul intervention (c'est peu !) ;

    — A une intervention peuvent prendre part plusieurs chirurgiens (voire aucun ! Ça craint...)

    En remettant les cardinalités à l’endroit, on se convaincra facilement que le nom du chirurgien devra réintégrer l’entité-type CHIRURGIEN...

    Le nom du patient et celui du médecin devront réintégrer leur structure « naturelle ».
    Je revois les cardinalités car j'ai effectivement inversé.


    Citation Envoyé par fsmrel Voir le message
    Je rappelle ce que j’ai dit : dans un MCD, une propriété ne peut figurer qu’une fois. Ainsi on retrouve Code_uf un peu partout : cette propriété doit figurer dans l’en-tête de l’entité-type SERVICE et c’est tout.
    J'ai rectifié

    Citation Envoyé par fsmrel Voir le message
    L’association PRESCRIT est une ternaire qui par construction permet des situations du genre : l’intervention du 17 avril 2013 pratiquée sur le patient Fernand a pu être prescrite par les médecins Albert, Bernard, Carole, etc. Je dis : « Ceci est suspicieux ! »

    En fait, le MCD doit être porteur d’une CIF (contrainte d’intégrité fonctionnelle) :



    Cette CIF est symbolisée par l’arc orienté (en rouge) et se lit ainsi :

    La prescription faite pour le patient P et pour la date D a été le fait d’un médecin et un seul, ce qui est encore symbolisé fonctionnellement ainsi :

    PATIENT X DATE -> MEDECIN
    Je n'ai pas bien compris ce qu'est une CIF je fais une recherche pour mieux comprendre le terme.


    Citation Envoyé par fsmrel Voir le message
    Il y a pas mal d’autres choses à dire, on verra cela après rectification des cardinalités et nettoyage du MCD.
    au plaisir de vous lire
    Images attachées Images attachées  

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir arguitxu,


    Vous avez modifié les cardinalités, mais du coup il n’y a qu’un seul utilisateur par service, un chirurgien n’a le droit qu’à une seule intervention, etc. Ça serait bien d’élargir les possibilités

    Au début vous parliez de salles, mais le concept de SALLE a disparu du MCD, qu’en est-il ? En revanche apparaît le concept de place, mais sans qu’il soit défini : de quoi s’agit-il ? Un concept se substitue-t-il à l’autre ?

    Le statut de l’association PRESCRIT est passée de ternaire à quaternaire : désormais une intervention donnée peut concerner simultanément plusieurs patients et médecins d’où la nécessité de complexifier le système de CIF (voyez par exemple ici le cas des courses hippiques). En fait, l’empêcheur de tourner en rond a pour nom DATE et comme je l’ai fait observer, on doit blinder la base de données contre ce perturbateur et ne pas trouver ce genre de situation :

    « L’intervention du 17 avril 2013 pratiquée sur le patient Fernand a été prescrite par les médecins Albert, Bernard, Carole, etc. »

    Si l’on n’y prend garde, cette fichue date pourrait donner lieu à des situations carrément scabreuses du genre :

    « A la date du 17 avril 2013 on trouve dans le lit 32 les patients Fernand, Raoul, Mado. »


    Pour vous éviter des migraines sévères consécutives aux CIF auxquelles participe la date, je pense qu’il vaut mieux travailler au niveau du MLD, quitte à la fin de la tâche de modélisation à réaliser une rétroconception du MLD en MCD. Est-ce que cela vous ennuie ?


    Dans votre 1er message, vous avez écrit à propos de la disponibilité des salles :
    « Lors de la saisie d’une intervention, l’application propose un calendrier de l’ensemble des dates disponibles pour le service. »
    Si j’ai bien compris, pour une journée donnée J, la salle P est donc réservée pour le service S.

    Question : pour une journée donnée J, la salle P peut-elle être utilisée pour plus d’une intervention I (sous-entendu du service S) ? Ou bien au contraire, pour une journée donnée J, la salle P est réservée pour la seule intervention I ?

    En corollaire, combien d’interventions un chirurgien peut-il pratiquer dans la journée ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Vous avez modifié les cardinalités, mais du coup il n’y a qu’un seul utilisateur par service, un chirurgien n’a le droit qu’à une seule intervention, etc. Ça serait bien d’élargir les possibilités
    je suis entièrement d'accord, j'ai encore beaucoup de progrès à faire pour maitriser le concept de cardinalité

    Citation Envoyé par fsmrel Voir le message
    Au début vous parliez de salles, mais le concept de SALLE a disparu du MCD, qu’en est-il ? En revanche apparaît le concept de place, mais sans qu’il soit défini : de quoi s’agit-il ? Un concept se substitue-t-il à l’autre ?
    En fait lorqu'un service réserve une intervention il doit réserver une lit et une salle d'ops. La table "place" représente ce concept.Les places sont effectivement attribuées par spécialité et cette répartition est faite sur la semaine et toutes les semaines sont identiques ainsi que les mois.


    Citation Envoyé par fsmrel Voir le message
    Pour vous éviter des migraines sévères consécutives aux CIF auxquelles participe la date, je pense qu’il vaut mieux travailler au niveau du MLD, quitte à la fin de la tâche de modélisation à réaliser une rétroconception du MLD en MCD. Est-ce que cela vous ennuie ?
    non au contraire, l'idée est aussi d'apprendre à travers ce projet et de mieux maitriser tous ces concepts. Ce sera ma première base de donnée et l'idée de l'exporter pour la convertir en MCD est assez plaisante (est ce bien cela le concept de retroconception ?)cela permettra de mieux juger la pertinence du fonctionnement de la base.


    Citation Envoyé par fsmrel Voir le message
    Dans votre 1er message, vous avez écrit à propos de la disponibilité des salles :
    « Lors de la saisie d’une intervention, l’application propose un calendrier de l’ensemble des dates disponibles pour le service. »
    Si j’ai bien compris, pour une journée donnée J, la salle P est donc réservée pour le service S.
    c'est exactement cela. chaque service aura un quota de salle affecté par semaine. en fonction des droits qu'ils leurs seront attribués, il pourrons visualiser avec une antériorité d'une année leur réservation et uniquement la leur.

    Citation Envoyé par fsmrel Voir le message
    Question : pour une journée donnée J, la salle P peut-elle être utilisée pour plus d’une intervention I (sous-entendu du service S) ? Ou bien au contraire, pour une journée donnée J, la salle P est réservée pour la seule intervention I ?

    En corollaire, combien d’interventions un chirurgien peut-il pratiquer dans la journée ?
    Je pense que la salle est réservée pour plusieurs interventions. Quant au chir. il devrait effectuer plusieurs interventions. Toutefois, je vais poser cette question et me faire confirmer ces 2 points.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Question : pour une journée donnée J, la salle P peut-elle être utilisée pour plus d’une intervention I (sous-entendu du service S) ? Ou bien au contraire, pour une journée donnée J, la salle P est réservée pour la seule intervention I ?

    En corollaire, combien d’interventions un chirurgien peut-il pratiquer dans la journée ?
    la salle sera utilisée pour plusieurs interventions.

    ci-dessous le schéma mis à jour
    Images attachées Images attachées  

  9. #9
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir arguitxu,


    Il y a encore des cardinalités à revoir. Si on les suivait, un service ne pourrait pratiquer qu’un seul type d’intervention, il ne pourrait programmer qu’une salle et n’y serait rattaché qu’un seul utilisateur. De même, un type d’intervention ne concernerait qu’une seule intervention...


    Voyons voir la modélisation au stade MLD en court-circuitant l’étape MCD. L’idéal serait d’utiliser PowerAMC, mais l’AGL n’est pas gratuit (voir les coûts, sachant que la version basique ne permet pas de réaliser des MCD). MySQL Workbench (MWB) est gratuit, et si son ergonomie n’est pas au niveau de celle de l’autre, on s’en arrange. Pour voir à quoi ressemble l'outil et quelques conseils d’utilisation, voyez par exemple les discussions avec jogodepau, Drakuncorp, Lei57, chesko, SmallFitz. Je pourrai vous aider (dans les limites de mes moyens !) si une difficulté particulière se présente à vous.

    Prenons le cas de la spécialisation de l’entité-type PERSONNE.

    Au niveau du MCD, si la représentation graphique est la suivante (PowerAMC) :




    Au niveau du MLD, avec MWB, émotionnellement parlant c’est rustique, minimal, mais mathématiquement suffisant :




    On ne parle plus d’entités-types mais de tables.

    Il n’y a pas d’ovale pour connecter deux tables.

    Par lien identifiant on signifie que la clé d’une table (en l’occurrence PERSONNE) participe à la clé d’une autre table (MEDECIN par exemple).

    La représentation des cardinalités est à l’inverse de celle qu’on a dans Merise. On lit ainsi :
    Une personne peut être un médecin et un médecin est nécessairement une personne (c'est-à-dire au moins et au plus une fois).

    Un médecin peut avoir effectué des prescriptions et une prescription a nécessairement été effectuée par un médecin.

    Etc.

    Disons que la lecture des cardinalités est arrêtée par un carré, alors qu’en Merise c’est par un rond :





    {MedecinId} est clé primaire de la table MEDECIN et en même temps clé étrangère par rapport à la table PERSONNE, c'est-à-dire que chaque valeur de l’attribut MedecinId de la table MEDECIN doit être une valeur de l’attribut PersonneId de la table PERSONNE (l’ensemble {MedecinId} — au sens de la théorie des ensembles — doit être un sous-ensemble de l’ensemble {PersonneId}).

    L’attribut MedecinId de la table MEDECIN aurait pu s’appeler PersonneId, mais ça aurait été moins parlant (aspect bande dessinée). Par opposition à Merise où un attribut ne peut pas figurer deux fois dans le MCD (cf. ma remarque concernant Code_uf), dans le MLD c’est le contraire ! Observez que l’attribut MedecinId figure aussi dans la table PRESCRIPTION : ce principe de réplication d’attributs est en fait au cœur du Modèle Relationnel de Données inventé en 1969 par Ted Codd, et lui confère son caractère associatif : on effectue les opérations relationnelles uniquement par association des valeurs des attributs (ce que l’opérateur relationnel JOIN illustre parfaitement), tandis qu’en Merise on n’opère pas [sic !]. A l’époque ce fut une révolution car avec les SGBD pré-relationnels (je devrais dire préhistoriques) les données n’étaient pas répliquées car accessibles seulement en suivant des pointeurs (pointer chasing).

    Quant à la notation, peut-être préférerez-vous la notation « patte de corbeau » (crow’s foot), à vous de voir :




    Prise en compte de la CIF :

    J’avais présenté une CIF symbolisée dans le MCD par un arc orienté et se lisant ainsi :
    La prescription faite pour le patient P et pour la date D a été le fait d’un médecin et un seul.

    Autant cette contrainte n’est pas très facile à prendre au compte dans un MCD, autant ça l’est dans un MLD PowerAMC. Avec MWB ça reste assez facile : à cet effet on définit ce qu’on appelle un index, comportant les paires {PatientId, PrescriptionDate}. Cet index (nommé ici PRESCRIPTION_AK) est dit de type UNIQUE, c'est-à-dire que la paire ne peut pas prendre deux fois la même valeur :




    Cela dit, le concept d’index n’est pas au bon niveau car il ressortit au MPD (Modèle Physique de Données), là où l’on met en place tous les turbos et autres objets de quincaillerie servant à la performance, alors qu’au stade MLD on reste dans le cocon logico-mathématique. Nonobstant, on ne fera pas la fine bouche, car si on utilise un autre SGBD que MySQL, il sera très facile de modifier le code SQL, en remplaçant l’index par une contrainte :

    Code pondu par MWB pour la table PRESCRIPTION :

    Code MySQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `mydb`.`PRESCRIPTION` 
        (
                 `PrescriptionId`        INT        NOT NULL,
                 `PatientId`             INT        NOT NULL,
                 `PrescriptionDate`      DATE       NOT NULL,
                 `MedecinId`             INT        NOT NULL,
             PRIMARY KEY (`PrescriptionId`),
             UNIQUE INDEX `PRESCRIPTION_AK` (`PatientId` ASC, `PrescriptionDate` ASC),
             ... 
        ) ;

    Code après lifting rapide :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE PRESCRIPTION 
        (
                PrescriptionId        INT        NOT NULL,
                PatientId             INT        NOT NULL,
                PrescriptionDate      DATE       NOT NULL,
                MedecinId             INT        NOT NULL,
            CONSTRAINT PRESCRIPTION_PK PRIMARY KEY (PrescriptionId),
            CONSTRAINT PRESCRIPTION_AK UNIQUE (PatientId, PrescriptionDate),
            ... 
        ) ;


    Cas du numéro de sécu.

    Deux personnes ne peuvent pas avoir le même numéro de sécu (on l’acquiert à la naissance), l’attribut NumeroSecu de la table PATIENT doit donc faire l’objet d’une clé candidate (alternative en l’occurrence). Avec MWB, Vous pouvez définir cette clé au moyen d’un index comme ci-dessus, mais quand une clé candidate est mono-attribut, vous pouvez alternativement cocher la case UQ (UNIQUE) qui va bien (onglet Columns) :




    Maintenant, reste à voir les cas particuliers, par exemple celui des enfants, car s’ils ont acquis un numéro de sécu à leur naissance, ils ne sont pas encore assurés.


    Les interventions

    Ajoutons deux ou trois pièces au lego. Je vous laisse le soin de connecter les interventions et les places (sont-ce les salles ? merci de préciser !), ainsi que les interventions et les utilisateurs les programmant :




    Une intervention se raccroche à une prescription et je suppose qu’une prescription donne lieu à une seule intervention. S’il en est ainsi, on procédera comme pour le numéro de sécu :




    Comme je l’ai écrit dans mon message précédent, il s’agit aussi d’éviter les situations scabreuses du genre :

    « A la date du 17 avril 2013 le lit 32 est occupé par les patients Fernand, Raoul, Mado. »

    En conséquence :



    Questions :

    Une activité peut-elle être pratiquée par plus d’un service ?

    Un service peut-il pratiquer plus d’une activité ?


    Concernant la table PLACE :



    Que représentent les 5 Code_uf_lundi, etc. ? Quoi qu’il en soit, l’expérience montre qu’il faut les dégager de la table PLACE et créer une table ad-hoc. En effet, au fil du temps votre structure peut être mise à mal (évolution dans la gestion des affectations des places, nouvelle direction demandant une affectation sur un mois, etc.), j’ai observé plusieurs fois ce genre de phénomène conduisant à pas mal de temps consacré à revoir le modèle, la base de données et la programmation. Le paradigme relationnel et la vectorisation font très mauvais ménage.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Bonsoir arguitxu,


    Il y a encore des cardinalités à revoir. Si on les suivait, un service ne pourrait pratiquer qu’un seul type d’intervention, il ne pourrait programmer qu’une salle et n’y serait rattaché qu’un seul utilisateur. De même, un type d’intervention ne concernerait qu’une seule intervention...


    Voyons voir la modélisation au stade MLD en court-circuitant l’étape MCD. L’idéal serait d’utiliser PowerAMC, mais l’AGL n’est pas gratuit (voir les coûts, sachant que la version basique ne permet pas de réaliser des MCD). MySQL Workbench (MWB) est gratuit, et si son ergonomie n’est pas au niveau de celle de l’autre, on s’en arrange. Pour voir à quoi ressemble l'outil et quelques conseils d’utilisation, voyez par exemple les discussions avec jogodepau, Drakuncorp, Lei57, chesko, SmallFitz. Je pourrai vous aider (dans les limites de mes moyens !) si une difficulté particulière se présente à vous.

    Prenons le cas de la spécialisation de l’entité-type PERSONNE.

    Au niveau du MCD, si la représentation graphique est la suivante (PowerAMC) :




    Au niveau du MLD, avec MWB, émotionnellement parlant c’est rustique, minimal, mais mathématiquement suffisant :




    On ne parle plus d’entités-types mais de tables.

    Il n’y a pas d’ovale pour connecter deux tables.

    Par lien identifiant on signifie que la clé d’une table (en l’occurrence PERSONNE) participe à la clé d’une autre table (MEDECIN par exemple).

    La représentation des cardinalités est à l’inverse de celle qu’on a dans Merise. On lit ainsi :
    Une personne peut être un médecin et un médecin est nécessairement une personne (c'est-à-dire au moins et au plus une fois).

    Un médecin peut avoir effectué des prescriptions et une prescription a nécessairement été effectuée par un médecin.

    Etc.

    Disons que la lecture des cardinalités est arrêtée par un carré, alors qu’en Merise c’est par un rond :





    {MedecinId} est clé primaire de la table MEDECIN et en même temps clé étrangère par rapport à la table PERSONNE, c'est-à-dire que chaque valeur de l’attribut MedecinId de la table MEDECIN doit être une valeur de l’attribut PersonneId de la table PERSONNE (l’ensemble {MedecinId} — au sens de la théorie des ensembles — doit être un sous-ensemble de l’ensemble {PersonneId}).

    L’attribut MedecinId de la table MEDECIN aurait pu s’appeler PersonneId, mais ça aurait été moins parlant (aspect bande dessinée). Par opposition à Merise où un attribut ne peut pas figurer deux fois dans le MCD (cf. ma remarque concernant Code_uf), dans le MLD c’est le contraire ! Observez que l’attribut MedecinId figure aussi dans la table PRESCRIPTION : ce principe de réplication d’attributs est en fait au cœur du Modèle Relationnel de Données inventé en 1969 par Ted Codd, et lui confère son caractère associatif : on effectue les opérations relationnelles uniquement par association des valeurs des attributs (ce que l’opérateur relationnel JOIN illustre parfaitement), tandis qu’en Merise on n’opère pas [sic !]. A l’époque ce fut une révolution car avec les SGBD pré-relationnels (je devrais dire préhistoriques) les données n’étaient pas répliquées car accessibles seulement en suivant des pointeurs (pointer chasing).

    Quant à la notation, peut-être préférerez-vous la notation « patte de corbeau » (crow’s foot), à vous de voir :




    Prise en compte de la CIF :

    J’avais présenté une CIF symbolisée dans le MCD par un arc orienté et se lisant ainsi :
    La prescription faite pour le patient P et pour la date D a été le fait d’un médecin et un seul.

    Autant cette contrainte n’est pas très facile à prendre au compte dans un MCD, autant ça l’est dans un MLD PowerAMC. Avec MWB ça reste assez facile : à cet effet on définit ce qu’on appelle un index, comportant les paires {PatientId, PrescriptionDate}. Cet index (nommé ici PRESCRIPTION_AK) est dit de type UNIQUE, c'est-à-dire que la paire ne peut pas prendre deux fois la même valeur :




    Cela dit, le concept d’index n’est pas au bon niveau car il ressortit au MPD (Modèle Physique de Données), là où l’on met en place tous les turbos et autres objets de quincaillerie servant à la performance, alors qu’au stade MLD on reste dans le cocon logico-mathématique. Nonobstant, on ne fera pas la fine bouche, car si on utilise un autre SGBD que MySQL, il sera très facile de modifier le code SQL, en remplaçant l’index par une contrainte :

    Code pondu par MWB pour la table PRESCRIPTION :

    Code MySQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `mydb`.`PRESCRIPTION` 
        (
                 `PrescriptionId`        INT        NOT NULL,
                 `PatientId`             INT        NOT NULL,
                 `PrescriptionDate`      DATE       NOT NULL,
                 `MedecinId`             INT        NOT NULL,
             PRIMARY KEY (`PrescriptionId`),
             UNIQUE INDEX `PRESCRIPTION_AK` (`PatientId` ASC, `PrescriptionDate` ASC),
             ... 
        ) ;

    Code après lifting rapide :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE PRESCRIPTION 
        (
                PrescriptionId        INT        NOT NULL,
                PatientId             INT        NOT NULL,
                PrescriptionDate      DATE       NOT NULL,
                MedecinId             INT        NOT NULL,
            CONSTRAINT PRESCRIPTION_PK PRIMARY KEY (PrescriptionId),
            CONSTRAINT PRESCRIPTION_AK UNIQUE (PatientId, PrescriptionDate),
            ... 
        ) ;


    Cas du numéro de sécu.

    Deux personnes ne peuvent pas avoir le même numéro de sécu (on l’acquiert à la naissance), l’attribut NumeroSecu de la table PATIENT doit donc faire l’objet d’une clé candidate (alternative en l’occurrence). Avec MWB, Vous pouvez définir cette clé au moyen d’un index comme ci-dessus, mais quand une clé candidate est mono-attribut, vous pouvez alternativement cocher la case UQ (UNIQUE) qui va bien (onglet Columns) :




    Maintenant, reste à voir les cas particuliers, par exemple celui des enfants, car s’ils ont acquis un numéro de sécu à leur naissance, ils ne sont pas encore assurés.


    Les interventions

    Ajoutons deux ou trois pièces au lego. Je vous laisse le soin de connecter les interventions et les places (sont-ce les salles ? merci de préciser !), ainsi que les interventions et les utilisateurs les programmant :




    Une intervention se raccroche à une prescription et je suppose qu’une prescription donne lieu à une seule intervention. S’il en est ainsi, on procédera comme pour le numéro de sécu :




    Comme je l’ai écrit dans mon message précédent, il s’agit aussi d’éviter les situations scabreuses du genre :

    « A la date du 17 avril 2013 le lit 32 est occupé par les patients Fernand, Raoul, Mado. »

    En conséquence :



    Questions :

    Une activité peut-elle être pratiquée par plus d’un service ?

    Un service peut-il pratiquer plus d’une activité ?


    Concernant la table PLACE :



    Que représentent les 5 Code_uf_lundi, etc. ? Quoi qu’il en soit, l’expérience montre qu’il faut les dégager de la table PLACE et créer une table ad-hoc. En effet, au fil du temps votre structure peut être mise à mal (évolution dans la gestion des affectations des places, nouvelle direction demandant une affectation sur un mois, etc.), j’ai observé plusieurs fois ce genre de phénomène conduisant à pas mal de temps consacré à revoir le modèle, la base de données et la programmation. Le paradigme relationnel et la vectorisation font très mauvais ménage.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Bonsoir arguitxu,


    Il y a encore des cardinalités à revoir. Si on les suivait, un service ne pourrait pratiquer qu’un seul type d’intervention, il ne pourrait programmer qu’une salle et n’y serait rattaché qu’un seul utilisateur. De même, un type d’intervention ne concernerait qu’une seule intervention...
    J'ai modifié en conséqence le MCD

    Citation Envoyé par fsmrel Voir le message
    Voyons voir la modélisation au stade MLD en court-circuitant l’étape MCD. L’idéal serait d’utiliser PowerAMC, ...MySQL Workbench (MWB) est gratuit, ..... Je pourrai vous aider (dans les limites de mes moyens !) si une difficulté particulière se présente à vous.
    Travaillant sur MAC il est plus simple que j'utilise MySQL Workbench.[/QUOTE]

    Citation Envoyé par fsmrel Voir le message
    Maintenant, reste à voir les cas particuliers, par exemple celui des enfants, car s’ils ont acquis un numéro de sécu à leur naissance, ils ne sont pas encore assurés.
    je vais y réfléchir ....


    Citation Envoyé par fsmrel Voir le message
    Les interventions


    Une intervention se raccroche à une prescription et je suppose qu’une prescription donne lieu à une seule intervention. S’il en est ainsi, on procédera comme pour le numéro de sécu :
    Absolument

    Citation Envoyé par fsmrel Voir le message

    Questions :

    Une activité peut-elle être pratiquée par plus d’un service ?
    Une spécialité (service) peut pratiquer plusieurs type d'intervention .
    Un type d'intervention ne peut être pratiqué que par un seul service (spécialité)
    Citation Envoyé par fsmrel Voir le message
    Concernant la table PLACE :



    Que représentent les 5 Code_uf_lundi, etc. ? Quoi qu’il en soit, l’expérience montre qu’il faut les dégager de la table PLACE et créer une table ad-hoc. En effet, au fil du temps votre structure peut être mise à mal (évolution dans la gestion des affectations des places, nouvelle direction demandant une affectation sur un mois, etc.), j’ai observé plusieurs fois ce genre de phénomène conduisant à pas mal de temps consacré à revoir le modèle, la base de données et la programmation. Le paradigme relationnel et la vectorisation font très mauvais ménage.
    Ce que nous essayons d'exprimer au travers de cette table est le concept suivant: Une secrétaire d'un UF peut réserver une salle d'opération pour sa spécialité. Une salle ne peut être réservée que pour une seule opération.
    Une secretaire de CA (Chirurgie Ambulatoire) peut modifier le planning des secretaire UF et si nécéssaire ouvrir une salle (cad programmer une deuxième intervention). Je pense (a confirmer) qu'il faut juste créer une table de salle et supprimer la notion de lit.

    J'ai commencé à faire le MLD avec MWB mais je ne suis encore sur de bien comprendre son fonctionnement et notamment dans la création des cles secondaire....
    attention éclat de rire à l'ouverture
    Images attachées Images attachées  
    Images attachées Images attachées

  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 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir arguitxu,


    Je ne sais pas comment vous vous êtes débrouillé pour avoir des colonnes IdPatient et IdChirurgien dans la table PERSONNE : il faut évidemment les supprimer. Pour cela, il faut faire un double clic sur la table pour avoir accès à l’onglet Columns, puis sélectionner la colonne en cause, puis clic droit à la souris pour accéder à la fonction de suppression :



    D’une manière générale, supprimer un objet passe par un clic droit à la souris...


    Si vous observez le lien entre la table MEDECIN et la table PRESCRIPTION, vous noterez que ci-dessous il est en pointillés, car PRESCRIPTION n’a pas à hériter de MedecinId en tant qu’identifiant, mais seulement comme clé étrangère (losange rougeâtre) : pour en faire autant :



    Évidemment, cela vaut pour tous les liens en pointillés du diagramme.


    Pour gagner un peu de place utilisez la version simplifiée de MWB :

    Model > Object notation > Workbench (simplified)

    Il y a beaucoup à dire concernant le type des données, mais on verra cela en temps opportun. Pour le moment, il vaut mieux masquer les types pour gagner de la place à l’affichage :

    Edit > Preferences > Diagram : décocher la case « Show columns types ».

    Si rien ne se passe, passez par exemple à la version non simplifiée de MWB (Default) puis revenez à la version simplifiée, le rafraîchissement aura dû s’opérer...


    Vous avez aussi des noms de colonnes à raccourcir...


    Faites déjà le ménage pour obtenir un diagramme identique au mien, on verra le reste ensuite. Posez vos questions quand MWB vous pose des problèmes.

    Courage !

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Courage !
    Bonjour fsmrel,
    Le sujet est particulièrement intéressant il est donc facile d'avoir du courage. Cela faisait longtemps que j'avais envie de comprendre le fonctionnement d'une base de donnée.

    Je commence à saisir le fonctionnement de MWB ci-dessous la maj.

    Merci encore pour le temps que vous m'accorder.
    Images attachées Images attachées

  14. #14
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir arguitxu,


    Table MEDECIN :

    Supposons que Fernand et Raoul soient des patients, qu’Albert, Bernard et Carole soient médecins, etc. Vous avez défini une clé primaire composée de la paire d’attributs {IdMedecin, PERSONNE_IdPersonne}. Vous allez donc vous retrouver avec des tables dont le contenu ressemblera à ceci :

    PERSONNE
        IdPersonne    Nom
        ---------------------
                 1    Fernand
                 2    Raoul
                 8    Albert
                 9    Bernard
                10    Carole
                11    Broussais

    MEDECIN 
        IdMedecin    PERSONNE_IdPersonne
        --------------------------------
                8                      8
                9                      9
               10                     10
    Via le mécanisme de l’intégrité référentielle, votre SGBD veillera à ce que chaque valeur de la colonne PERSONNE_IdPersonne de la table MEDECIN soit aussi une valeur de la colonne IdPersonne de la table PERSONNE.

    A votre charge de vérifier que les colonnes IdMedecin et PERSONNE_IdPersonne de la table MEDECIN ont bien les mêmes valeurs pour chaque ligne, sinon on ne voit pas très bien ce que pourrait signifier une différence...

    En plus, vous avez transformé une 0,1 en une 0,N...

    Autrement dit, une des deux colonnes est un dangereux parasite qui n’a rien à faire ici...


    Méthode pour créer la table MEDECIN :

    Une fois que la table PERSONNE existe, vous créer la table MEDECIN, mais vide de tout attribut. Vous branchez MEDECIN sur PERSONNE au moyen d’un lien identifiant : « Place a new 1:1 Identifying Relationship » et MWB crée l’attribut disons PERSONNE_IdPersonne, et il en fait une clé primaire ainsi qu’une clé étrangère pour référencer PERSONNE. Vous renommez PERSONNE_IdPersonne en MedecinId et c’est bon.




    Tables PATIENT et CHIRURGIEN

    Même punition, même motif.


    Table PRESCRIPTION

    Vous avez défini un attribut Prescription_AK qui n’existe pas dans le diagramme que j’avais proposé. En revanche, j’avais défini une clé alternative nommée PRESCRIPTION_AK et composée des attributs PatientId et PrescriptionDate, ce qui n’est quand même pas la même chose ! Il faut supprimer cet attribut Prescription_AK et définir la clé alternative avec l’onglet qui va bien (Indexes) :



    En passant, renommez les attributs MEDECIN_IdMedecin et PATIENT_IdPatient.


    Table INTERVENTION

    A moins que, comme vous le signalez, la notion de lit ne disparaisse du modèle : vous avez défini un attribut Nom_Lit et court-circuité la table LIT : Si ce sont les noms des lits qui vous intéressent, cet attribut n’a rien à faire dans la table INTERVENTION et doit intégrer la table LIT, et après cela, vous « tirez » un lien 1,N non identifiant entre INTERVENTION et LIT.

    A quoi correspond l’attribut Numero ?

    A quoi correspond l’attribut Date ? l’attribut Date_Programmation ?

    L’attribut Nom_Type_Intervention n’a rien à faire ici, il doit dégager : lors des requêtes, vous récupérez les valeurs correspondantes par jointure des tables INTERVENTION et TYPE_INTERVENTION sur l’attribut Id_Type_Intervention.

    Même principe pour l’attribut Utilisateur_Programmé qui doit dégager.


    J’ai posé la question suivante :
    Activité et spécialité sont-ils des termes synonymes ?
    Mais vous n’avez pas répondu, donc je la pose à nouveau.

    J’ai posé la question suivante :
    Une activité peut-elle être pratiquée par plus d’un service ?
    Un service peut-il pratiquer plus d’une activité ?
    Vous me répondez ceci (qui a déjà été formulé) qui n’est pas ce que j’attends car le mot "activité" n'y figure pas :
    Une spécialité (service) peut pratiquer plusieurs types d'intervention.
    Un type d'intervention ne peut être pratiqué que par un seul service (spécialité).
    J’attends la réponse en relation avec la question.

    A défaut, pas moyen d’avancer. Lisez très soigneusement les questions que je pose.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Bonsoir arguitxu,......
    A quoi correspond l’attribut Numero ?
    En fait, il ne sert à rien c'est un doublon avec la clé primaire. je le supprime.

    Citation Envoyé par fsmrel Voir le message
    A quoi correspond l’attribut Date ? l’attribut Date_Programmation ?
    Encore un doublon avec date_programmation. L'attribut dat_programmation permet de définir la date à laquelle l'intervention aura lieu

    Citation Envoyé par fsmrel Voir le message
    L’attribut Nom_Type_Intervention n’a rien à faire ici, il doit dégager : lors des requêtes, vous récupérez les valeurs correspondantes par jointure des tables INTERVENTION et TYPE_INTERVENTION sur l’attribut Id_Type_Intervention.

    Même principe pour l’attribut Utilisateur_Programmé qui doit dégager.
    C'est retiré.


    Citation Envoyé par fsmrel Voir le message
    J’ai posé la question suivante :
    Activité et spécialité sont-ils des termes synonymes ?
    Mais vous n’avez pas répondu, donc je la pose à nouveau.
    Activité et spécialité ne sont pas synonyme. Une Activité est par exemple Chirurgie de la main ou chirurgie du genou . A l'intérieur de ces activités il y a des types d'interventions par exemples pour la chirurgie du genou tu auras Prothèses, Ligaments, mesnisque.

    Citation Envoyé par fsmrel Voir le message
    J’ai posé la question suivante :
    Une activité peut-elle être pratiquée par plus d’un service ?
    OUI.

    Citation Envoyé par fsmrel Voir le message
    Un service peut-il pratiquer plus d’une activité ? [/Indent]
    NON


    A défaut, pas moyen d’avancer. Lisez très soigneusement les questions que je pose.[/QUOTE]

    Ci-joint le MLD modifié
    Images attachées Images attachées

  16. #16
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir arguitxu,


    Reprenons les tables de votre MLD :

    Table PERSONNE

    D’accord. Toutefois, il faudrait cocher les cases Not Null (NN) pour chaque attribut.


    Table MEDECIN

    D’accord.


    Table CHIRURGIEN

    D’accord.


    Table PATIENT

    L’attribut Telephone doit disparaître puisque le téléphone des personnes est connu au niveau de la table PERSONNE.

    L’attribut Mail doit migrer vers la table PERSONNE (on peut supposer que les hommes de l’art ont aussi des adresses de courriel).


    Table PRESCRIPTION

    Attribut PrescriptionDate : cocher la case NN.

    L’attribut MedecinId est présent une fois de trop.

    Il faudrait prévoir un attribut décrivant la prescription, sinon, on risque de ne pas savoir de quel genre d’intervention le patient fait l’objet...


    Table INTERVENTION

    L’attribut ChirurgienId est présent une fois de trop.

    Attributs Nom et Commentaire : cocher la case NN.

    Comme un chirurgien peut intervenir plus d’une fois par jour, il ne serait pas inutile de connaître l’heure de début des interventions (attribut InterventionHeure) et leur durée (attribut InterventionDuree).

    Revoilà le lit : je croyais qu’il disparaissait, phagocyté par la place. S’il doit revenir, la table LIT doit revenir elle aussi.


    Voilà ce que je comprends à partir de vos réponses :

    — Les termes « service » et « spécialité » sont interchangeables du point de vue de la modélisation. Si c’est bien cela, n’utilisons désormais qu’un seul terme, disons celui de « service ».

    — Un service pratique au moins une activité et une activité est pratiquée par un seul service.

    Vous avez évoqué quelques activités et types d’interventions, mais il serait bien que vous fournissiez le nom de deux ou trois services et quelques activités pour chacun de ces services, ainsi que quelques types d’intervention pour chacune des activités énumérées.


    Concepts de « salle » et « place »

    Dans votre message du 18/04/2013, le concept de « salle » disparaît au profit de celui de « place » : d’accord. Ne parlons donc plus que de places.

    Remarque 1. Dans ce même message, vous écrivez que les places sont attribuées par spécialité, donc par service. Qui attribue la place P au service S ? Un utilisateur U1 du service (demandeur) S ? Un utilisateur U2 du service Chirurgie ambulatoire (et n’appartenant donc pas à S) ?

    Remarque 2. Dans votre tout 1er message, vous écrivez par ailleurs que les places sont attribuées par activité.

    Peut-on en conclure qu’il y a une attribution globale des places au service demandeur S par l’utilisateur U2 (du service Chirurgie ambulatoire) et qu’ensuite les utilisateurs du service demandeur S font leurs propres attributions de places aux activités à partir de celles qui ont été allouées à S ? Ou bien est-ce U2 qui attribue les places au niveau activité ?

    On traitera des utilisateurs en fonction de votre réponse.

    Pour l'instant, de ce que j’ai compris de vos réponses, les services, activités et types d’intervention peuvent faire l’objet de la modélisation suivante, selon laquelle le granule d’affectation des places est l’activité :




    Vous noterez que dans la table INTERVENTION, la paire {ServiceId, ActiviteId} participe non seulement à la clé étrangère {ServiceId, ActiviteId, TypeInterventionId} référençant la clé primaire de la table TYPE_INTERVENTION, mais aussi à la clé étrangère {ServiceId, ActiviteId, JourId, PlaceId} référençant la clé primaire de la table AFFECTATION_ACTIVITE : cela permet de s’assurer qu’on ne tricote pas une intervention en salle P1 pour une activité A1 d’un service S1 avec les affectations d’un service S2.

    A suivre...

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Vous avez évoqué quelques activités et types d’interventions, mais il serait bien que vous fournissiez le nom de deux ou trois services et quelques activités pour chacun de ces services, ainsi que quelques types d’intervention pour chacune des activités énumérées.
    Voici quelques services et leur activité :

    Code UF - Libellé UF - Activité

    3056 - EXPL FONCT GASTRO BA - Hepato Gastro Enterologie
    3560 - SC DERMATOLOGIE BD - Dermatologie
    7363 - SC CHIRURGIE D BA - Chirurgie Générale et Viscérale
    3166 - HC ADOLESCENT 52 BA - Pédiatrie et Chirurgie Infantile
    7465 - GYNECO BA - Gynécologie Obstétrique


    Voici quelques interventions par activité :

    Activité - Type d'Intervention

    Hepato Gastro Enterologie - Gastroscopie
    Hepato Gastro Enterologie - Coloscopie
    Hepato Gastro Enterologie - Fibroscopie totale avec biopsie
    Hepato Gastro Enterologie - Fibroscopie totale avec polypectomie

    Dermatologie - Condylome laser
    Dermatologie - Verrues plantaires
    Dermatologie - Laser CO2

    Chirurgie Générale et Viscérale - Fistule anale
    Chirurgie Générale et Viscérale - Biopsie percutanée (aiguille) du sein
    Chirurgie Générale et Viscérale - Biopsie artère temporale
    Chirurgie Générale et Viscérale - Pose Cathéter de Dialyse Péritonéale

    Pédiatrie et Chirurgie Infantile - Circoncision
    Pédiatrie et Chirurgie Infantile - Méatostomie
    Pédiatrie et Chirurgie Infantile - Excision d'un kyste
    Pédiatrie et Chirurgie Infantile - Plastie du frein du gland

    Gynécologie Obstétrique - Interruption Volontaire de Grossesse
    Gynécologie Obstétrique - Biopsie vulvaire
    Gynécologie Obstétrique - Conisation
    Gynécologie Obstétrique - Bartholinite



    Citation Envoyé par fsmrel Voir le message
    Concepts de « salle » et « place »

    Dans votre message du 18/04/2013, le concept de « salle » disparaît au profit de celui de « place » : d’accord. Ne parlons donc plus que de places.

    Remarque 1. Dans ce même message, vous écrivez que les places sont attribuées par spécialité, donc par service. Qui attribue la place P au service S ? Un utilisateur U1 du service (demandeur) S ? Un utilisateur U2 du service Chirurgie ambulatoire (et n’appartenant donc pas à S) ?

    Remarque 2. Dans votre tout 1er message, vous écrivez par ailleurs que les places sont attribuées par activité.

    Peut-on en conclure qu’il y a une attribution globale des places au service demandeur S par l’utilisateur U2 (du service Chirurgie ambulatoire) et qu’ensuite les utilisateurs du service demandeur S font leurs propres attributions de places aux activités à partir de celles qui ont été allouées à S ? Ou bien est-ce U2 qui attribue les places au niveau activité ?

    On traitera des utilisateurs en fonction de votre réponse.
    Les quotas des salles sont fixés par les responsables du service dont la cadre du service. Le planning de la semaine par place est figé de semaine en semaine. Il n'y a que très peu de variation : 1 ou 2 modif. dans l'année.
    un service = 1 UF

    Je pense qu'au final on va arriver à une UF par activité. Simplement, il vaut mieux prévoir le cas où 2 UF se partagent 1 activité.
    Images attachées Images attachées

  18. #18
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir arguitxu,


    Table PERSONNE
    Ajouter un attribut pour le titre de civilité (M., Mme, Dr, etc.)
    Table TYPE_INTERVENTION
    Supprimer l’attribut TYPE_INTERVENTIONcol.
    Table SERVICE
    Cocher la case NN pout l’attribut ServiceNom.
    Table JOUR
    Ajouter l’attribut JourNom (JourId n’est qu’un identifiant).
    Table PLACE
    Ajouter le nom ?

    Modélisation des affectations :

    Vous avez précisé qu’un service ne pratiquait qu’une activité mais que la même activité pouvait être pratiquée par plus d’un service, mais voilà, tel Dagobert, j’ai lu à l’envers ! Le modèle que je vous ai proposé a donc dû vous laissé pour le moins perplexe...

    Il y a plus d’une manière de représenter les choses. Ci-joint une 1re façon, avec la table AFFECTATION, mais il faudra que je regarde de plus près, car elle n’est peut-être plus nécessaire. J’ai ajouté les quotas que vous avez mentionnés dans votre 1er message :

    Les salles de Chirurgie Ambulatoire sont disponibles en première intention à la journée. Elles sont dédiées en première intention à une activité. Chaque activité a donc un cota de salles libres par journée et par semaine (ex : lundi : 5 salles, mercredi : 4 salles et jeudi : 5 salles pour l’activité Odontologie).
    Je m’occuperai de vous en priorité, car je vous ai retardé et il y a encore les utilisateurs des services à prendre en compte.




    A bientôt, c'est-à-dire dès que...

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Je m’occuperai de vous en priorité, car je vous ai retardé et il y a encore les utilisateurs des services à prendre en compte
    A bientôt, c'est-à-dire dès que...
    Aucun problème, c'est bien moi qui vous suis redevable pour cette formation en ligne. Je m'adapterai à votre rythme... cela me laissera d'une part le temps de lire vos nombreux écrits et le temps d'assimiler ces nouveaux concepts d'autre part .

  20. #20
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 121
    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 121
    Points : 31 642
    Points
    31 642
    Billets dans le blog
    16
    Par défaut
    Bonsoir arguitxu,


    A force de s’enrichir en tables, votre modèle va devenir de moins en moins lisible à l’écran. Or, représenter dans un même schéma les quotas et les médecins ne présente pas d’intérêt, je vous suggère donc d’urbaniser le modèle, c'est-à-dire représenter non pas toutes les tables en même temps, mais seulement des sous-ensembles de tables ayant des liens sémantiques et représentant un thème : le thème des personnes, celui des quotas, celui des utilisateurs, etc. Le modèle complet reste la matrice, bien entendu il est toujours là, mais sans qu’il soit nécessaire que vous le présentiez à vos interlocuteurs (moi par exemple ! )


    Concrètement : le modèle actuel est un modèle « global » à partir duquel vous pouvez créer les domaines (sous-ensembles) « Personnes », « Quotas », « Interventions », « Utilisateurs », etc. (diagrammes au sens Workbench).

    A titre d’exemple, allons-y pour créer le domaine « Personnes ». Même si ça n’est pas strictement nécessaire, on peut d’abord renommer le diagramme actuel « EER Diagram » en « Global », histoire de se mettre en jambes.

    1) Pour renommer le diagramme actuel « EER Diagram » : cliquer sur l’onglet principal (« MySQL Model ») pour avoir accès à la section « Model Overview » :



    => Apparition de la section « Model Overview » :



    2) Pour arriver à renommer le diagramme, cliquer doucement, sans brusquerie ! sur le texte « EER Diagram » (ou, si la bête est rétive, cliquer sur l’icône associée et utiliser la touche F2) :



    3) Renommer « EER Diagram » en « Global » :



    Pour créer un le diagramme « Personnes », cliquer sur « Add diagram » (en cliquant d’abord au besoin à nouveau sur l’onglet principal « MySQL Model » s’il n’est plus affiché), et l’on se retrouve avec un nouvel onglet « EER Diagram » qu’il ne reste plus qu’à renommer en « Personnes » :


    On dispose désormais des deux diagrammes « Global » et « Personnes ». Le diagramme « Personnes » est évidemment vierge de tout objet. Pour y faire figurer la table PERSONNE, on procède par drag/drop du nom « PERSONNE » figurant dans le « Catalog tree » (le diagramme « Global » n’est évidemment pas altéré lors de l’opération, il y a simplement copie de l’objet) :



    Au résultat :



    De la même façon, on copie par drag/drop les tables jugées pertinentes pour le diagramme : MEDECIN, CHIRURGIEN, PATIENT, PRESCRIPTION, voire INTERVENTION (pour mettre en valeur les tables PRESCRIPTION et CHIRURGIEN). A noter que Workbench recopie automatiquement les liens entre tables :



    Si vous rencontrez des difficultés pour créer les diagrammes, faites m’en part. En tout cas, bon entraînement...


    Dans mon prochain message, je poserai quelques questions au sujet des utilisateurs.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/10/2013, 11h27
  2. Aide sur modélisation
    Par Crack1986 dans le forum Conception
    Réponses: 11
    Dernier message: 13/03/2012, 12h59
  3. [MLD] Aide sur une modélisation entre tables
    Par dd_angel dans le forum Schéma
    Réponses: 7
    Dernier message: 20/08/2010, 17h07
  4. Réponses: 5
    Dernier message: 08/04/2009, 18h39
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 09h51

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